Module: wine Branch: master Commit: 280dbcf84a314ff111306f85432df60bd65effff URL: http://source.winehq.org/git/wine.git/?a=commit;h=280dbcf84a314ff111306f8543...
Author: Michał Ziętek smierc.w.wenecji@gmail.com Date: Tue Aug 23 15:16:08 2011 +0200
wscript: Implemented Host_get_Interactive.
---
programs/wscript/host.c | 7 +++++-- programs/wscript/main.c | 25 ++++++++++++++++++++++++- programs/wscript/tests/run.js | 1 + programs/wscript/wscript.h | 2 ++ 4 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/programs/wscript/host.c b/programs/wscript/host.c index 02a9291..0ce7e58 100644 --- a/programs/wscript/host.c +++ b/programs/wscript/host.c @@ -34,6 +34,7 @@
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 = VARIANT_TRUE;
WINE_DEFAULT_DEBUG_CHANNEL(wscript);
@@ -145,8 +146,10 @@ static HRESULT WINAPI Host_get_Path(IHost *iface, BSTR *out_Path)
static HRESULT WINAPI Host_get_Interactive(IHost *iface, VARIANT_BOOL *out_Interactive) { - WINE_FIXME("(%p)\n", out_Interactive); - return E_NOTIMPL; + WINE_TRACE("(%p)\n", out_Interactive); + + *out_Interactive = wshInteractive; + return S_OK; }
static HRESULT WINAPI Host_put_Interactive(IHost *iface, VARIANT_BOOL v) diff --git a/programs/wscript/main.c b/programs/wscript/main.c index 3073445..9d79415 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -322,6 +322,28 @@ static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScri WINE_FIXME("SetScriptState failed: %08x\n", hres); }
+static BOOL set_host_properties(const WCHAR *prop) +{ + 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 + return FALSE; + return TRUE; +} + int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow) { const WCHAR *ext, *filename = NULL; @@ -340,7 +362,8 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
for(i=0; i<argc; i++) { if(*argv[i] == '/' || *argv[i] == '-') { - WINE_FIXME("Unsupported argument %s\n", wine_dbgstr_w(argv[i])); + if(!set_host_properties(argv[i])) + return 1; }else { filename = argv[i]; argums = argv+i+1; diff --git a/programs/wscript/tests/run.js b/programs/wscript/tests/run.js index 430dfb6..6773df5 100644 --- a/programs/wscript/tests/run.js +++ b/programs/wscript/tests/run.js @@ -42,5 +42,6 @@ try { }catch(e) {} ok(WScript.Arguments.Count() === 3, "WScript.Arguments.Count() = " + WScript.Arguments.Count()); ok(WScript.Arguments.length === 3, "WScript.Arguments.length = " + WScript.Arguments.length); +ok(WScript.Interactive === true, "WScript.Interactive = " + WScript.Interactive);
winetest.reportSuccess(); diff --git a/programs/wscript/wscript.h b/programs/wscript/wscript.h index 3c9191f..d624a2d 100644 --- a/programs/wscript/wscript.h +++ b/programs/wscript/wscript.h @@ -31,3 +31,5 @@ extern WCHAR scriptFullName[]; extern WCHAR **argums;
extern int numOfArgs; + +extern VARIANT_BOOL wshInteractive;