Author: akhaldi
Date: Sat Nov 8 11:23:02 2014
New Revision: 65317
URL:
http://svn.reactos.org/svn/reactos?rev=65317&view=rev
Log:
[WSCRIPT]
* Import from Wine 1.7.27.
CORE-8769 #resolve #comment Imported in r65317.
CORE-8540
Added:
trunk/reactos/base/applications/cmdutils/wscript/ (with props)
trunk/reactos/base/applications/cmdutils/wscript/CMakeLists.txt (with props)
trunk/reactos/base/applications/cmdutils/wscript/arguments.c (with props)
trunk/reactos/base/applications/cmdutils/wscript/host.c (with props)
trunk/reactos/base/applications/cmdutils/wscript/ihost.idl (with props)
trunk/reactos/base/applications/cmdutils/wscript/ihost_dispid.h (with props)
trunk/reactos/base/applications/cmdutils/wscript/main.c (with props)
trunk/reactos/base/applications/cmdutils/wscript/rsrc.rc (with props)
trunk/reactos/base/applications/cmdutils/wscript/wscript.h (with props)
Modified:
trunk/reactos/base/applications/cmdutils/CMakeLists.txt
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/base/applications/cmdutils/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/base/applications/cmdutils/CMakeLists.txt [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -11,4 +11,5 @@
add_subdirectory(sort)
add_subdirectory(taskkill)
add_subdirectory(wmic)
+add_subdirectory(wscript)
add_subdirectory(xcopy)
Propchange: trunk/reactos/base/applications/cmdutils/wscript/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Sat Nov 8 11:23:02 2014
@@ -0,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)
Propchange: trunk/reactos/base/applications/cmdutils/wscript/
------------------------------------------------------------------------------
bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/reactos/base/applications/cmdutils/wscript/
------------------------------------------------------------------------------
bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/base/applications/cmdutils/wscript/
------------------------------------------------------------------------------
tsvn:logminsize = 10
Added: trunk/reactos/base/applications/cmdutils/wscript/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/CMakeLists.txt (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/CMakeLists.txt [iso-8859-1] Sat Nov
8 11:23:02 2014
@@ -0,0 +1,17 @@
+
+list(APPEND SOURCE
+ arguments.c
+ host.c
+ main.c
+ wscript.h)
+
+add_executable(wscript ${SOURCE} rsrc.rc)
+add_idl_headers(wscript_idlheader ihost.idl)
+add_typelib(ihost.idl)
+set_source_files_properties(rsrc.rc PROPERTIES OBJECT_DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/ihost.tlb)
+target_link_libraries(wscript uuid wine)
+set_module_type(wscript win32cui UNICODE)
+add_importlibs(wscript shell32 oleaut32 ole32 advapi32 msvcrt kernel32 ntdll)
+add_dependencies(wscript stdole2 wscript_idlheader)
+add_pch(wscript wscript.h SOURCE)
+add_cd_file(TARGET wscript DESTINATION reactos/system32 FOR all)
Propchange: trunk/reactos/base/applications/cmdutils/wscript/CMakeLists.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/arguments.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/arguments.c (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/arguments.c [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2011 Michal Zietek
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wscript.h"
+
+WCHAR **argums;
+int numOfArgs;
+
+static HRESULT WINAPI Arguments2_QueryInterface(IArguments2 *iface, REFIID riid, void
**ppv)
+{
+ WINE_TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
+
+ if(IsEqualGUID(&IID_IUnknown, riid)
+ || IsEqualGUID(&IID_IDispatch, riid)
+ || IsEqualGUID(&IID_IArguments2, riid)) {
+ *ppv = iface;
+ return S_OK;
+ }
+
+ *ppv = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI Arguments2_AddRef(IArguments2 *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI Arguments2_Release(IArguments2 *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI Arguments2_GetTypeInfoCount(IArguments2 *iface, UINT *pctinfo)
+{
+ WINE_TRACE("(%p)\n", pctinfo);
+
+ *pctinfo = 1;
+ return S_OK;
+}
+
+static HRESULT WINAPI Arguments2_GetTypeInfo(IArguments2 *iface, UINT iTInfo, LCID lcid,
+ ITypeInfo **ppTInfo)
+{
+ WINE_TRACE("(%x %x %p\n", iTInfo, lcid, ppTInfo);
+
+ ITypeInfo_AddRef(arguments_ti);
+ *ppTInfo = arguments_ti;
+ return S_OK;
+}
+
+static HRESULT WINAPI Arguments2_GetIDsOfNames(IArguments2 *iface, REFIID riid, LPOLESTR
*rgszNames,
+ UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ WINE_TRACE("(%s %p %d %x %p)\n", wine_dbgstr_guid(riid), rgszNames,
+ cNames, lcid, rgDispId);
+
+ return ITypeInfo_GetIDsOfNames(arguments_ti, rgszNames, cNames, rgDispId);
+}
+
+static HRESULT WINAPI Arguments2_Invoke(IArguments2 *iface, DISPID dispIdMember, REFIID
riid,
+ LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
+ EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ WINE_TRACE("(%d %p %p)\n", dispIdMember, pDispParams, pVarResult);
+
+ return ITypeInfo_Invoke(arguments_ti, iface, dispIdMember, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI Arguments2_Item(IArguments2 *iface, LONG index, BSTR *out_Value)
+{
+ WINE_TRACE("(%d %p)\n", index, out_Value);
+
+ if(index<0 || index >= numOfArgs)
+ return E_INVALIDARG;
+ if(!(*out_Value = SysAllocString(argums[index])))
+ return E_OUTOFMEMORY;
+
+ return S_OK;
+}
+
+static HRESULT WINAPI Arguments2_Count(IArguments2 *iface, LONG *out_Count)
+{
+ WINE_TRACE("(%p)\n", out_Count);
+
+ *out_Count = numOfArgs;
+ return S_OK;
+}
+
+static HRESULT WINAPI Arguments2_get_length(IArguments2 *iface, LONG *out_Count)
+{
+ WINE_TRACE("(%p)\n", out_Count);
+
+ *out_Count = numOfArgs;
+ return S_OK;
+}
+
+static const IArguments2Vtbl Arguments2Vtbl = {
+ Arguments2_QueryInterface,
+ Arguments2_AddRef,
+ Arguments2_Release,
+ Arguments2_GetTypeInfoCount,
+ Arguments2_GetTypeInfo,
+ Arguments2_GetIDsOfNames,
+ Arguments2_Invoke,
+ Arguments2_Item,
+ Arguments2_Count,
+ Arguments2_get_length
+};
+
+IArguments2 arguments_obj = { &Arguments2Vtbl };
Propchange: trunk/reactos/base/applications/cmdutils/wscript/arguments.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/host.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/host.c (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/host.c [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,333 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wscript.h"
+
+#define BUILDVERSION 16535
+
+static const WCHAR wshNameW[] =
{'W','i','n','d','o','w','s','
','S','c','r','i','p','t','
','H','o','s','t',0};
+static const WCHAR wshVersionW[] = {'5','.','8'};
+
+VARIANT_BOOL wshInteractive =
+#ifndef CSCRIPT_BUILD
+ VARIANT_TRUE;
+#else
+ VARIANT_FALSE;
+#endif
+
+static HRESULT WINAPI Host_QueryInterface(IHost *iface, REFIID riid, void **ppv)
+{
+ WINE_TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
+
+ if(IsEqualGUID(&IID_IUnknown, riid)
+ || IsEqualGUID(&IID_IDispatch, riid)
+ || IsEqualGUID(&IID_IHost, riid)) {
+ *ppv = iface;
+ return S_OK;
+ }
+
+ *ppv = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI Host_AddRef(IHost *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI Host_Release(IHost *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI Host_GetTypeInfoCount(IHost *iface, UINT *pctinfo)
+{
+ WINE_TRACE("(%p)\n", pctinfo);
+ *pctinfo = 1;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_GetTypeInfo(IHost *iface, UINT iTInfo, LCID lcid,
+ ITypeInfo **ppTInfo)
+{
+ WINE_TRACE("(%x %x %p\n", iTInfo, lcid, ppTInfo);
+
+ ITypeInfo_AddRef(host_ti);
+ *ppTInfo = host_ti;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_GetIDsOfNames(IHost *iface, REFIID riid, LPOLESTR *rgszNames,
+ UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ WINE_TRACE("(%s %p %d %x %p)\n", wine_dbgstr_guid(riid), rgszNames,
+ cNames, lcid, rgDispId);
+
+ return ITypeInfo_GetIDsOfNames(host_ti, rgszNames, cNames, rgDispId);
+}
+
+static HRESULT WINAPI Host_Invoke(IHost *iface, DISPID dispIdMember, REFIID riid,
+ LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
+ EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ WINE_TRACE("(%d %p %p)\n", dispIdMember, pDispParams, pVarResult);
+
+ return ITypeInfo_Invoke(host_ti, iface, dispIdMember, wFlags, pDispParams,
+ pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI Host_get_Name(IHost *iface, BSTR *out_Name)
+{
+ WINE_TRACE("(%p)\n", out_Name);
+
+ if(!(*out_Name = SysAllocString(wshNameW)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Application(IHost *iface, IDispatch **out_Dispatch)
+{
+ WINE_TRACE("(%p)\n", out_Dispatch);
+
+ *out_Dispatch = (IDispatch*)&host_obj;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_FullName(IHost *iface, BSTR *out_Path)
+{
+ WCHAR fullPath[MAX_PATH];
+
+ WINE_TRACE("(%p)\n", out_Path);
+
+ if(GetModuleFileNameW(NULL, fullPath, sizeof(fullPath)/sizeof(WCHAR)) == 0)
+ return E_FAIL;
+ if(!(*out_Path = SysAllocString(fullPath)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Path(IHost *iface, BSTR *out_Path)
+{
+ WCHAR path[MAX_PATH];
+ int howMany;
+ WCHAR *pos;
+
+ WINE_TRACE("(%p)\n", out_Path);
+
+ if(GetModuleFileNameW(NULL, path, sizeof(path)/sizeof(WCHAR)) == 0)
+ return E_FAIL;
+ pos = strrchrW(path, '\\');
+ howMany = pos - path;
+ if(!(*out_Path = SysAllocStringLen(path, howMany)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Interactive(IHost *iface, VARIANT_BOOL *out_Interactive)
+{
+ WINE_TRACE("(%p)\n", out_Interactive);
+
+ *out_Interactive = wshInteractive;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_put_Interactive(IHost *iface, VARIANT_BOOL v)
+{
+ WINE_TRACE("(%x)\n", v);
+
+ wshInteractive = v;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_Quit(IHost *iface, int ExitCode)
+{
+ WINE_FIXME("(%d)\n", ExitCode);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_get_ScriptName(IHost *iface, BSTR *out_ScriptName)
+{
+ WCHAR *scriptName;
+
+ WINE_TRACE("(%p)\n", out_ScriptName);
+
+ scriptName = strrchrW(scriptFullName, '\\');
+ ++scriptName;
+ if(!(*out_ScriptName = SysAllocString(scriptName)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_ScriptFullName(IHost *iface, BSTR *out_ScriptFullName)
+{
+ WINE_TRACE("(%p)\n", out_ScriptFullName);
+
+ if(!(*out_ScriptFullName = SysAllocString(scriptFullName)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Arguments(IHost *iface, IArguments2 **out_Arguments)
+{
+ WINE_TRACE("(%p)\n", out_Arguments);
+
+ *out_Arguments = &arguments_obj;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Version(IHost *iface, BSTR *out_Version)
+{
+ WINE_TRACE("(%p)\n", out_Version);
+
+ if(!(*out_Version = SysAllocString(wshVersionW)))
+ return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_BuildVersion(IHost *iface, int *out_Build)
+{
+ WINE_TRACE("(%p)\n", out_Build);
+
+ *out_Build = BUILDVERSION;
+ return S_OK;
+}
+
+static HRESULT WINAPI Host_get_Timeout(IHost *iface, LONG *out_Timeout)
+{
+ WINE_FIXME("(%p)\n", out_Timeout);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_put_Timeout(IHost *iface, LONG v)
+{
+ WINE_FIXME("(%d)\n", v);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_CreateObject(IHost *iface, BSTR ProgID, BSTR Prefix,
+ IDispatch **out_Dispatch)
+{
+ IUnknown *unk;
+ GUID guid;
+ HRESULT hres;
+
+ TRACE("(%s %s %p)\n", wine_dbgstr_w(ProgID), wine_dbgstr_w(Prefix),
out_Dispatch);
+
+ if(Prefix && *Prefix) {
+ FIXME("Prefix %s not supported\n", debugstr_w(Prefix));
+ return E_NOTIMPL;
+ }
+
+ hres = CLSIDFromProgID(ProgID, &guid);
+ if(FAILED(hres))
+ return hres;
+
+ hres = CoCreateInstance(&guid, NULL,
CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER,
+ &IID_IUnknown, (void**)&unk);
+ if(FAILED(hres))
+ return hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)out_Dispatch);
+ IUnknown_Release(unk);
+ return hres;
+}
+
+static HRESULT WINAPI Host_Echo(IHost *iface, SAFEARRAY *args)
+{
+ WINE_FIXME("(%p)\n", args);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_GetObject(IHost *iface, BSTR Pathname, BSTR ProgID,
+ BSTR Prefix, IDispatch **out_Dispatch)
+{
+ WINE_FIXME("(%s %s %s %p)\n", wine_dbgstr_w(Pathname),
wine_dbgstr_w(ProgID),
+ wine_dbgstr_w(Prefix), out_Dispatch);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_DisconnectObject(IHost *iface, IDispatch *Object)
+{
+ WINE_FIXME("(%p)\n", Object);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_Sleep(IHost *iface, LONG Time)
+{
+ WINE_FIXME("(%d)\n", Time);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_ConnectObject(IHost *iface, IDispatch *Object, BSTR Prefix)
+{
+ WINE_FIXME("(%p %s)\n", Object, wine_dbgstr_w(Prefix));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_get_StdIn(IHost *iface, ITextStream **ppts)
+{
+ WINE_FIXME("(%p)\n", ppts);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_get_StdOut(IHost *iface, ITextStream **ppts)
+{
+ WINE_FIXME("(%p)\n", ppts);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Host_get_StdErr(IHost *iface, ITextStream **ppts)
+{
+ WINE_FIXME("(%p)\n", ppts);
+ return E_NOTIMPL;
+}
+
+static const IHostVtbl HostVtbl = {
+ Host_QueryInterface,
+ Host_AddRef,
+ Host_Release,
+ Host_GetTypeInfoCount,
+ Host_GetTypeInfo,
+ Host_GetIDsOfNames,
+ Host_Invoke,
+ Host_get_Name,
+ Host_get_Application,
+ Host_get_FullName,
+ Host_get_Path,
+ Host_get_Interactive,
+ Host_put_Interactive,
+ Host_Quit,
+ Host_get_ScriptName,
+ Host_get_ScriptFullName,
+ Host_get_Arguments,
+ Host_get_Version,
+ Host_get_BuildVersion,
+ Host_get_Timeout,
+ Host_put_Timeout,
+ Host_CreateObject,
+ Host_Echo,
+ Host_GetObject,
+ Host_DisconnectObject,
+ Host_Sleep,
+ Host_ConnectObject,
+ Host_get_StdIn,
+ Host_get_StdOut,
+ Host_get_StdErr
+};
+
+IHost host_obj = { &HostVtbl };
Propchange: trunk/reactos/base/applications/cmdutils/wscript/host.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/ihost.idl
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/ihost.idl (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/ihost.idl [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,188 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep typelib
+
+#include "ihost_dispid.h"
+
+import "oaidl.idl";
+
+[
+ uuid(60254ca0-953b-11cf-8c96-00aa00b8708c),
+ version(5.6),
+]
+library IHost
+{
+ importlib("stdole2.tlb");
+
+ [
+ odl,
+ uuid(2cc5a9d1-b1e5-11d3-a286-00104bd35090),
+ dual,
+ oleautomation
+ ]
+ interface IArguments2 : IDispatch {
+ [id(DISPID_VALUE)]
+ HRESULT Item(
+ [in] LONG Index,
+ [out, retval] BSTR *out_Value);
+
+ [id(IARGUMENTS2_COUNT_DISPID)]
+ HRESULT Count([out, retval] LONG *out_Count);
+
+ [id(IARGUMENTS2_LENGTH_DISPID), propget]
+ HRESULT length([out, retval] LONG *out_Count);
+ }
+
+ [
+ odl,
+ uuid(53bad8c1-e718-11cf-893d-00a0c9054228),
+ hidden,
+ dual,
+ nonextensible,
+ oleautomation
+ ]
+ interface ITextStream : IDispatch {
+ [id(ITEXTSTREAM_LINE_DISPID), propget]
+ HRESULT Line([out, retval] LONG *Line);
+
+ [id(ITEXTSTREAM_COLUMN_DISPID), propget]
+ HRESULT Column([out, retval] LONG *Column);
+
+ [id(ITEXTSTREAM_ATENDOFSTREAM_DISPID), propget]
+ HRESULT AtEndOfStream([out, retval] VARIANT_BOOL *EOS);
+
+ [id(ITEXTSTREAM_ATENDOFLINE_DISPID), propget]
+ HRESULT AtEndOfLine([out, retval] VARIANT_BOOL *EOL);
+
+ [id(ITEXTSTREAM_READ_DISPID)]
+ HRESULT Read(
+ [in] LONG Characters,
+ [out, retval] BSTR *Text);
+
+ [id(ITEXTSTREAM_READLINE_DISPID)]
+ HRESULT ReadLine([out, retval] BSTR *Text);
+
+ [id(ITEXTSTREAM_READALL_DISPID)]
+ HRESULT ReadAll([out, retval] BSTR *Text);
+
+ [id(ITEXTSTREAM_WRITE_DISPID)]
+ HRESULT Write([in] BSTR Text);
+
+ [id(ITEXTSTREAM_WRITELINE_DISPID)]
+ HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text);
+
+ [id(ITEXTSTREAM_WRITEBLANKLINES_DISPID)]
+ HRESULT WriteBlankLines([in] LONG Lines);
+
+ [id(ITEXTSTREAM_SKIP_DISPID)]
+ HRESULT Skip([in] LONG Characters);
+
+ [id(ITEXTSTREAM_SKIPLINE_DISPID)]
+ HRESULT SkipLine();
+
+ [id(ITEXTSTREAM_CLOSE_DISPID)]
+ HRESULT Close();
+ }
+
+ [
+ odl,
+ uuid(91afbd1b-5feb-43f5-b028-e2ca960617ec),
+ dual,
+ oleautomation
+ ]
+ interface IHost : IDispatch {
+ [id(IHOST_NAME_DISPID), propget]
+ HRESULT Name([out, retval] BSTR *out_Name);
+
+ [id(IHOST_APPLICATION_DISPID), propget]
+ HRESULT Application([out, retval] IDispatch **out_Dispatch);
+
+ [id(IHOST_FULLNAME_DISPID), propget]
+ HRESULT FullName([out, retval] BSTR *out_Path);
+
+ [id(IHOST_PATH_DISPID), propget]
+ HRESULT Path([out, retval] BSTR* out_Path);
+
+ [id(IHOST_INTERACTIVE_DISPID), propget]
+ HRESULT Interactive([out, retval] VARIANT_BOOL *out_Interactive);
+
+ [id(IHOST_INTERACTIVE_DISPID), propput]
+ HRESULT Interactive([in] VARIANT_BOOL out_Interactive);
+
+ [id(IHOST_QUIT_DISPID)]
+ HRESULT Quit([in, optional, defaultvalue(0)] int ExitCode);
+
+ [id(IHOST_SCRIPTNAME_DISPID), propget]
+ HRESULT ScriptName([out, retval] BSTR *out_ScriptName);
+
+ [id(IHOST_SCRIPTFULLNAME_DISPID), propget]
+ HRESULT ScriptFullName([out, retval] BSTR* out_ScriptFullName);
+
+ [id(IHOST_ARGUMENTS_DISPID), propget]
+ HRESULT Arguments([out, retval] IArguments2 **out_Arguments);
+
+ [id(IHOST_VERSION_DISPID), propget]
+ HRESULT Version([out, retval] BSTR *out_Version);
+
+ [id(IHOST_BUILDVERSION_DISPID), propget]
+ HRESULT BuildVersion([out, retval] int *out_Build);
+
+ [id(IHOST_TIMEOUT_DISPID), propget]
+ HRESULT Timeout([out, retval] LONG *out_Timeout);
+
+ [id(IHOST_TIMEOUT_DISPID), propput]
+ HRESULT Timeout([in] LONG out_Timeout);
+
+ [id(IHOST_CREATEOBJECT_DISPID)]
+ HRESULT CreateObject(
+ [in] BSTR ProgID,
+ [in, optional, defaultvalue("")] BSTR Prefix,
+ [out, retval] IDispatch **out_Dispatch);
+
+ [id(IHOST_ECHO_DISPID), vararg]
+ HRESULT Echo([in] SAFEARRAY(VARIANT) pArgs);
+
+ [id(IHOST_GETOBJECT_DISPID)]
+ HRESULT GetObject(
+ [in] BSTR Pathname,
+ [in, optional, defaultvalue("")] BSTR ProgID,
+ [in, optional, defaultvalue("")] BSTR Prefix,
+ [out, retval] IDispatch **out_Dispatch);
+
+ [id(IHOST_DISCONNECTOBJECT_DISPID)]
+ HRESULT DisconnectObject([in] IDispatch *Object);
+
+ [id(IHOST_SLEEP_DISPID)]
+ HRESULT Sleep([in] LONG Time);
+
+ [id(IHOST_CONNECTOBJECT_DISPID)]
+ HRESULT ConnectObject(
+ [in] IDispatch *Object,
+ [in] BSTR Prefix);
+
+ [id(IHOST_STDIN_DISPID), propget]
+ HRESULT StdIn([out, retval] ITextStream **out_ppts);
+
+ [id(IHOST_STDOUT_DISPID), propget]
+ HRESULT StdOut([out, retval] ITextStream **ppts);
+
+ [id(IHOST_STDERR_DISPID), propget]
+ HRESULT StdErr([out, retval] ITextStream **ppts);
+ }
+}
Propchange: trunk/reactos/base/applications/cmdutils/wscript/ihost.idl
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/ihost_dispid.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/ihost_dispid.h (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/ihost_dispid.h [iso-8859-1] Sat Nov
8 11:23:02 2014
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma once
+
+#define IHOST_NAME_DISPID DISPID_VALUE
+#define IHOST_APPLICATION_DISPID 100
+#define IHOST_FULLNAME_DISPID 101
+#define IHOST_PATH_DISPID 102
+#define IHOST_INTERACTIVE_DISPID 103
+#define IHOST_QUIT_DISPID 200
+#define IHOST_SCRIPTNAME_DISPID 1000
+#define IHOST_SCRIPTFULLNAME_DISPID 1001
+#define IHOST_ARGUMENTS_DISPID 1002
+#define IHOST_VERSION_DISPID 1003
+#define IHOST_BUILDVERSION_DISPID 1004
+#define IHOST_TIMEOUT_DISPID 1005
+#define IHOST_STDIN_DISPID 1006
+#define IHOST_STDOUT_DISPID 1007
+#define IHOST_STDERR_DISPID 1008
+#define IHOST_CREATEOBJECT_DISPID 2000
+#define IHOST_ECHO_DISPID 2001
+#define IHOST_GETOBJECT_DISPID 2002
+#define IHOST_DISCONNECTOBJECT_DISPID 2003
+#define IHOST_SLEEP_DISPID 2004
+#define IHOST_CONNECTOBJECT_DISPID 2005
+
+#define IARGUMENTS2_COUNT_DISPID 1
+#define IARGUMENTS2_LENGTH_DISPID 2
+
+#define ITEXTSTREAM_LINE_DISPID 10000
+#define ITEXTSTREAM_COLUMN_DISPID -529
+#define ITEXTSTREAM_ATENDOFSTREAM_DISPID 10002
+#define ITEXTSTREAM_ATENDOFLINE_DISPID 10003
+#define ITEXTSTREAM_READ_DISPID 10004
+#define ITEXTSTREAM_READLINE_DISPID 10005
+#define ITEXTSTREAM_READALL_DISPID 10006
+#define ITEXTSTREAM_WRITE_DISPID 10007
+#define ITEXTSTREAM_WRITELINE_DISPID 10008
+#define ITEXTSTREAM_WRITEBLANKLINES_DISPID 10009
+#define ITEXTSTREAM_SKIP_DISPID 10010
+#define ITEXTSTREAM_SKIPLINE_DISPID 10011
+#define ITEXTSTREAM_CLOSE_DISPID 10012
Propchange: trunk/reactos/base/applications/cmdutils/wscript/ihost_dispid.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/main.c (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/main.c [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,467 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wscript.h"
+
+#include <shellapi.h>
+#include <activscp.h>
+
+#ifdef _WIN64
+
+#define IActiveScriptParse_Release IActiveScriptParse64_Release
+#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
+#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
+
+#else
+
+#define IActiveScriptParse_Release IActiveScriptParse32_Release
+#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
+#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
+
+#endif
+
+static const WCHAR wscriptW[] =
{'W','S','c','r','i','p','t',0};
+static const WCHAR wshW[] = {'W','S','H',0};
+WCHAR scriptFullName[MAX_PATH];
+
+ITypeInfo *host_ti;
+ITypeInfo *arguments_ti;
+
+static HRESULT query_interface(REFIID,void**);
+
+static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
+ REFIID riid, void **ppv)
+{
+ return query_interface(riid, ppv);
+}
+
+static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
+{
+ WINE_TRACE("()\n");
+
+ *plcid = GetUserDefaultLCID();
+ return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface,
+ LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppti)
+{
+ WINE_TRACE("(%s %x %p %p)\n", wine_dbgstr_w(pstrName), dwReturnMask,
ppunkItem, ppti);
+
+ if(strcmpW(pstrName, wshW) && strcmpW(pstrName, wscriptW))
+ return E_FAIL;
+
+ if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
+ ITypeInfo_AddRef(host_ti);
+ *ppti = host_ti;
+ }
+
+ if(dwReturnMask & SCRIPTINFO_IUNKNOWN) {
+ IHost_AddRef(&host_obj);
+ *ppunkItem = (IUnknown*)&host_obj;
+ }
+
+ return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface,
+ BSTR *pbstrVersion)
+{
+ WINE_FIXME("()\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface,
+ const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
+{
+ WINE_FIXME("()\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface,
+ SCRIPTSTATE ssScriptState)
+{
+ WINE_TRACE("(%x)\n", ssScriptState);
+ return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface,
+ IActiveScriptError *pscripterror)
+{
+ WINE_FIXME("()\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
+{
+ WINE_TRACE("()\n");
+ return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
+{
+ WINE_TRACE("()\n");
+ return S_OK;
+}
+
+static IActiveScriptSiteVtbl ActiveScriptSiteVtbl = {
+ ActiveScriptSite_QueryInterface,
+ ActiveScriptSite_AddRef,
+ ActiveScriptSite_Release,
+ ActiveScriptSite_GetLCID,
+ ActiveScriptSite_GetItemInfo,
+ ActiveScriptSite_GetDocVersionString,
+ ActiveScriptSite_OnScriptTerminate,
+ ActiveScriptSite_OnStateChange,
+ ActiveScriptSite_OnScriptError,
+ ActiveScriptSite_OnEnterScript,
+ ActiveScriptSite_OnLeaveScript
+};
+
+static IActiveScriptSite script_site = { &ActiveScriptSiteVtbl };
+
+static HRESULT WINAPI ActiveScriptSiteWindow_QueryInterface(IActiveScriptSiteWindow
*iface, REFIID riid, void **ppv)
+{
+ return query_interface(riid, ppv);
+}
+
+static ULONG WINAPI ActiveScriptSiteWindow_AddRef(IActiveScriptSiteWindow *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI ActiveScriptSiteWindow_Release(IActiveScriptSiteWindow *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI ActiveScriptSiteWindow_GetWindow(IActiveScriptSiteWindow *iface,
HWND *phwnd)
+{
+ TRACE("(%p)\n", phwnd);
+
+ *phwnd = NULL;
+ return S_OK;
+}
+
+static HRESULT WINAPI ActiveScriptSiteWindow_EnableModeless(IActiveScriptSiteWindow
*iface, BOOL fEnable)
+{
+ TRACE("(%x)\n", fEnable);
+ return S_OK;
+}
+
+static IActiveScriptSiteWindowVtbl ActiveScriptSiteWindowVtbl = {
+ ActiveScriptSiteWindow_QueryInterface,
+ ActiveScriptSiteWindow_AddRef,
+ ActiveScriptSiteWindow_Release,
+ ActiveScriptSiteWindow_GetWindow,
+ ActiveScriptSiteWindow_EnableModeless
+};
+
+static IActiveScriptSiteWindow script_site_window = { &ActiveScriptSiteWindowVtbl };
+
+static HRESULT query_interface(REFIID riid, void **ppv)
+{
+ if(IsEqualGUID(riid, &IID_IUnknown)) {
+ TRACE("(IID_IUnknown %p)\n", ppv);
+ *ppv = &script_site;
+ }else if(IsEqualGUID(riid, &IID_IActiveScriptSite)) {
+ TRACE("(IID_IActiveScriptSite %p)\n", ppv);
+ *ppv = &script_site;
+ }else if(IsEqualGUID(riid, &IID_IActiveScriptSiteWindow)) {
+ TRACE("(IID_IActiveScriptSiteWindow %p)\n", ppv);
+ *ppv = &script_site_window;
+ }else {
+ *ppv = NULL;
+ TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static BOOL load_typelib(void)
+{
+ ITypeLib *typelib;
+ HRESULT hres;
+
+ static const WCHAR wscript_exeW[] =
{'w','s','c','r','i','p','t','.','e','x','e',0};
+
+ hres = LoadTypeLib(wscript_exeW, &typelib);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IHost, &host_ti);
+ if(SUCCEEDED(hres))
+ hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IArguments2,
&arguments_ti);
+
+ ITypeLib_Release(typelib);
+ return SUCCEEDED(hres);
+}
+
+static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
+{
+ WCHAR fileid[64], progid[64];
+ DWORD res;
+ LONG size;
+ HKEY hkey;
+ HRESULT hres;
+
+ static const WCHAR script_engineW[] =
+
{'\\','S','c','r','i','p','t','E','n','g','i','n','e',0};
+
+ res = RegOpenKeyW(HKEY_CLASSES_ROOT, ext, &hkey);
+ if(res != ERROR_SUCCESS)
+ return FALSE;
+
+ size = sizeof(fileid)/sizeof(WCHAR);
+ res = RegQueryValueW(hkey, NULL, fileid, &size);
+ RegCloseKey(hkey);
+ if(res != ERROR_SUCCESS)
+ return FALSE;
+
+ WINE_TRACE("fileid is %s\n", wine_dbgstr_w(fileid));
+
+ strcatW(fileid, script_engineW);
+ res = RegOpenKeyW(HKEY_CLASSES_ROOT, fileid, &hkey);
+ if(res != ERROR_SUCCESS)
+ return FALSE;
+
+ size = sizeof(progid)/sizeof(WCHAR);
+ res = RegQueryValueW(hkey, NULL, progid, &size);
+ RegCloseKey(hkey);
+ if(res != ERROR_SUCCESS)
+ return FALSE;
+
+ WINE_TRACE("ProgID is %s\n", wine_dbgstr_w(progid));
+
+ hres = CLSIDFromProgID(progid, clsid);
+ return SUCCEEDED(hres);
+}
+
+static BOOL create_engine(CLSID *clsid, IActiveScript **script_ret,
+ IActiveScriptParse **parser)
+{
+ IActiveScript *script;
+ IUnknown *unk;
+ HRESULT hres;
+
+ hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_IUnknown, (void**)&unk);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IActiveScript, (void**)&script);
+ IUnknown_Release(unk);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse,
(void**)parser);
+ if(FAILED(hres)) {
+ IActiveScript_Release(script);
+ return FALSE;
+ }
+
+ *script_ret = script;
+ return TRUE;
+}
+
+static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser)
+{
+ HRESULT hres;
+
+ if(!load_typelib())
+ return FALSE;
+
+ hres = IActiveScript_SetScriptSite(script, &script_site);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IActiveScriptParse_InitNew(parser);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IActiveScript_AddNamedItem(script, wscriptW, SCRIPTITEM_ISVISIBLE);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IActiveScript_AddNamedItem(script, wshW, SCRIPTITEM_ISVISIBLE);
+ if(FAILED(hres))
+ return FALSE;
+
+ hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED);
+ return SUCCEEDED(hres);
+}
+
+static BSTR get_script_str(const WCHAR *filename)
+{
+ const char *file_map;
+ HANDLE file, map;
+ DWORD size, len;
+ BSTR ret;
+
+ file = CreateFileW(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_READONLY, NULL);
+ if(file == INVALID_HANDLE_VALUE)
+ return NULL;
+
+ size = GetFileSize(file, NULL);
+ map = CreateFileMappingW(file, NULL, PAGE_READONLY, 0, 0, NULL);
+ CloseHandle(file);
+ if(map == INVALID_HANDLE_VALUE)
+ return NULL;
+
+ file_map = MapViewOfFile(map, FILE_MAP_READ, 0, 0, 0);
+ CloseHandle(map);
+ if(!file_map)
+ return NULL;
+
+ len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0);
+ ret = SysAllocStringLen(NULL, len);
+ MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len);
+
+ UnmapViewOfFile(file_map);
+ return ret;
+}
+
+static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScriptParse
*parser)
+{
+ BSTR text;
+ HRESULT hres;
+
+ text = get_script_str(filename);
+ if(!text) {
+ WINE_FIXME("Could not get script text\n");
+ return;
+ }
+
+ hres = IActiveScriptParse_ParseScriptText(parser, text, NULL, NULL, NULL, 1, 1,
+ SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE, NULL, NULL);
+ SysFreeString(text);
+ if(FAILED(hres)) {
+ WINE_FIXME("ParseScriptText failed: %08x\n", hres);
+ return;
+ }
+
+ hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
+ if(FAILED(hres))
+ WINE_FIXME("SetScriptState failed: %08x\n", hres);
+}
+
+static BOOL set_host_properties(const WCHAR *prop)
+{
+ static const WCHAR nologoW[] =
{'n','o','l','o','g','o',0};
+ static const WCHAR iactive[] = {'i',0};
+ static const WCHAR batch[] = {'b',0};
+
+ if(*prop == '/') {
+ ++prop;
+ if(*prop == '/')
+ ++prop;
+ }
+ else
+ ++prop;
+
+ if(strcmpiW(prop, iactive) == 0)
+ wshInteractive = VARIANT_TRUE;
+ else if(strcmpiW(prop, batch) == 0)
+ wshInteractive = VARIANT_FALSE;
+ else if(strcmpiW(prop, nologoW) == 0)
+ WINE_FIXME("ignored %s switch\n", debugstr_w(nologoW));
+ else
+ {
+ WINE_FIXME("unsupported switch %s\n", debugstr_w(prop));
+ return FALSE;
+ }
+ return TRUE;
+}
+
+int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow)
+{
+ WCHAR *ext, *filepart, *filename = NULL;
+ IActiveScriptParse *parser;
+ IActiveScript *script;
+ WCHAR **argv;
+ CLSID clsid;
+ int argc, i;
+ DWORD res;
+
+ WINE_TRACE("(%p %p %s %x)\n", hInst, hPrevInst, wine_dbgstr_w(cmdline),
cmdshow);
+
+ argv = CommandLineToArgvW(cmdline, &argc);
+ if(!argv)
+ return 1;
+
+ for(i=0; i<argc; i++) {
+ if(*argv[i] == '/' || *argv[i] == '-') {
+ if(!set_host_properties(argv[i]))
+ return 1;
+ }else {
+ filename = argv[i];
+ argums = argv+i+1;
+ numOfArgs = argc-i-1;
+ break;
+ }
+ }
+
+ if(!filename) {
+ WINE_FIXME("No file name specified\n");
+ return 1;
+ }
+ res = GetFullPathNameW(filename, sizeof(scriptFullName)/sizeof(WCHAR),
scriptFullName, &filepart);
+ if(!res || res > sizeof(scriptFullName)/sizeof(WCHAR))
+ return 1;
+
+ ext = strrchrW(filepart, '.');
+ if(!ext || !get_engine_clsid(ext, &clsid)) {
+ WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext));
+ return 1;
+ }
+
+ CoInitialize(NULL);
+
+ if(!create_engine(&clsid, &script, &parser)) {
+ WINE_FIXME("Could not create script engine\n");
+ CoUninitialize();
+ return 1;
+ }
+
+ if(init_engine(script, parser)) {
+ run_script(filename, script, parser);
+ IActiveScript_Close(script);
+ ITypeInfo_Release(host_ti);
+ }else {
+ WINE_FIXME("Script initialization failed\n");
+ }
+
+ IActiveScript_Release(script);
+ IActiveScriptParse_Release(parser);
+
+ CoUninitialize();
+
+ return 0;
+}
Propchange: trunk/reactos/base/applications/cmdutils/wscript/main.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/rsrc.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/rsrc.rc (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/rsrc.rc [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* @makedep: ihost.tlb */
+1 TYPELIB ihost.tlb
Propchange: trunk/reactos/base/applications/cmdutils/wscript/rsrc.rc
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/cmdutils/wscript/wscript.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/cmdutils…
==============================================================================
--- trunk/reactos/base/applications/cmdutils/wscript/wscript.h (added)
+++ trunk/reactos/base/applications/cmdutils/wscript/wscript.h [iso-8859-1] Sat Nov 8
11:23:02 2014
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WSCRIPT_H_
+#define _WSCRIPT_H_
+
+#include <stdarg.h>
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COBJMACROS
+#define CONST_VTABLE
+
+#include <windef.h>
+#include <winbase.h>
+#include <initguid.h>
+#include <ihost.h>
+#include <wine/debug.h>
+#include <wine/unicode.h>
+
+WINE_DEFAULT_DEBUG_CHANNEL(wscript);
+
+extern IHost host_obj;
+
+extern IArguments2 arguments_obj;
+
+extern ITypeInfo *host_ti;
+
+extern ITypeInfo *arguments_ti;
+
+extern WCHAR scriptFullName[];
+
+extern WCHAR **argums;
+
+extern int numOfArgs;
+
+extern VARIANT_BOOL wshInteractive;
+
+#endif /* _WSCRIPT_H_ */
Propchange: trunk/reactos/base/applications/cmdutils/wscript/wscript.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Nov 8 11:23:02 2014
@@ -237,6 +237,7 @@
reactos/base/applications/cmdutils/reg # Synced to Wine-1.7.27
reactos/base/applications/cmdutils/taskkill # Synced to Wine-1.7.27
reactos/base/applications/cmdutils/wmic # Synced to Wine-1.7.27
+reactos/base/applications/cmdutils/wscript # Synced to Wine-1.7.27
reactos/base/applications/cmdutils/xcopy # Synced to Wine-1.7.27
reactos/base/applications/games/winmine # Forked at Wine-1_3_5
reactos/base/applications/extrac32 # Synced to Wine-1.7.27