diff --git a/.gitignore b/.gitignore index 0ab469f9e60..87563179b3c 100644 --- a/.gitignore +++ b/.gitignore @@ -259,6 +259,7 @@ programs/winetest/*_test.exe programs/winetest/*_test.rc programs/winetest/build.rc programs/winhlp32/macro.lex.yy.c +programs/wscript/ihost.tlb server/wineserver server/wineserver-installed server/wineserver.de.man diff --git a/programs/wscript/Makefile.in b/programs/wscript/Makefile.in index 97b1054a85b..52f29fd3ef7 100644 --- a/programs/wscript/Makefile.in +++ b/programs/wscript/Makefile.in @@ -7,7 +7,12 @@ APPMODE = -mwindows -municode IMPORTS = uuid oleaut32 ole32 advapi32 EXTRADEFS = -DWINE_NO_UNICODE_MACROS +RC_SRCS = \ + rsrc.rc + C_SRCS = \ main.c +IDL_TLB_SRCS = ihost.idl + @MAKE_PROG_RULES@ diff --git a/programs/wscript/ihost.idl b/programs/wscript/ihost.idl new file mode 100644 index 00000000000..8e05f5a1fcb --- /dev/null +++ b/programs/wscript/ihost.idl @@ -0,0 +1,186 @@ +/* + * 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 "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)] + 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/programs/wscript/ihost_dispid.h b/programs/wscript/ihost_dispid.h new file mode 100644 index 00000000000..f4ca351b165 --- /dev/null +++ b/programs/wscript/ihost_dispid.h @@ -0,0 +1,56 @@ +/* + * 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 + */ + +#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 diff --git a/programs/wscript/rsrc.rc b/programs/wscript/rsrc.rc new file mode 100644 index 00000000000..51ce0982659 --- /dev/null +++ b/programs/wscript/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