From 583ff26215896cb3f810b0799c42e7a236252452 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 8 Nov 2014 11:41:13 +0000 Subject: [PATCH] [CSCRIPT] * Import from Wine 1.7.27. CORE-8770 #resolve #comment Imported in r65317. CORE-8540 svn path=/trunk/; revision=65319 --- .../base/applications/cmdutils/CMakeLists.txt | 1 + .../cmdutils/cscript/CMakeLists.txt | 21 ++ .../applications/cmdutils/cscript/ihost.idl | 188 ++++++++++++++++++ .../applications/cmdutils/cscript/rsrc.rc | 20 ++ reactos/media/doc/README.WINE | 1 + 5 files changed, 231 insertions(+) create mode 100644 reactos/base/applications/cmdutils/cscript/CMakeLists.txt create mode 100644 reactos/base/applications/cmdutils/cscript/ihost.idl create mode 100644 reactos/base/applications/cmdutils/cscript/rsrc.rc diff --git a/reactos/base/applications/cmdutils/CMakeLists.txt b/reactos/base/applications/cmdutils/CMakeLists.txt index 57654adc145..15f4f240997 100644 --- a/reactos/base/applications/cmdutils/CMakeLists.txt +++ b/reactos/base/applications/cmdutils/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(comp) +add_subdirectory(cscript) add_subdirectory(dbgprint) add_subdirectory(doskey) add_subdirectory(find) diff --git a/reactos/base/applications/cmdutils/cscript/CMakeLists.txt b/reactos/base/applications/cmdutils/cscript/CMakeLists.txt new file mode 100644 index 00000000000..3fc90cb7b75 --- /dev/null +++ b/reactos/base/applications/cmdutils/cscript/CMakeLists.txt @@ -0,0 +1,21 @@ + +add_definitions(-DCSCRIPT_BUILD) +set(wscript_folder ${REACTOS_SOURCE_DIR}/base/applications/cmdutils/wscript) +include_directories(${wscript_folder}) + +list(APPEND SOURCE + ${wscript_folder}/arguments.c + ${wscript_folder}/host.c + ${wscript_folder}/main.c + ${wscript_folder}/wscript.h) + +add_executable(cscript ${SOURCE} rsrc.rc) +add_idl_headers(cscript_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(cscript uuid wine) +set_module_type(cscript win32cui UNICODE) +add_importlibs(cscript shell32 oleaut32 ole32 advapi32 msvcrt kernel32 ntdll) +add_dependencies(cscript stdole2 cscript_idlheader) +add_pch(cscript ${wscript_folder}/wscript.h SOURCE) +add_cd_file(TARGET cscript DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/cmdutils/cscript/ihost.idl b/reactos/base/applications/cmdutils/cscript/ihost.idl new file mode 100644 index 00000000000..9e4202ea039 --- /dev/null +++ b/reactos/base/applications/cmdutils/cscript/ihost.idl @@ -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); + } +} diff --git a/reactos/base/applications/cmdutils/cscript/rsrc.rc b/reactos/base/applications/cmdutils/cscript/rsrc.rc new file mode 100644 index 00000000000..51ce0982659 --- /dev/null +++ b/reactos/base/applications/cmdutils/cscript/rsrc.rc @@ -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 diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index a2d3ea0b896..a0cf79011f5 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -234,6 +234,7 @@ reactos/dll/cpl/inetcpl # Synced to Wine-1.7.27 ReactOS shares the following programs with Winehq. +reactos/base/applications/cmdutils/cscript # Synced to Wine-1.7.27 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