Module: wine Branch: master Commit: 1c293750313d9f6a173de8c21a02e6045d61ef57 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1c293750313d9f6a173de8c21a...
Author: Michał Ziętek smierc.w.wenecji@gmail.com Date: Tue Aug 23 15:15:54 2011 +0200
wscript: Implemented Arguments2_Item.
---
programs/wscript/arguments.c | 13 +++++++++++-- programs/wscript/main.c | 2 ++ programs/wscript/tests/run.c | 2 +- programs/wscript/tests/run.js | 7 +++++++ programs/wscript/wscript.h | 4 ++++ 5 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/programs/wscript/arguments.c b/programs/wscript/arguments.c index 4b10d2f..62d6ad0 100644 --- a/programs/wscript/arguments.c +++ b/programs/wscript/arguments.c @@ -31,6 +31,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(wscript);
+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); @@ -95,8 +98,14 @@ static HRESULT WINAPI Arguments2_Invoke(IArguments2 *iface, DISPID dispIdMember,
static HRESULT WINAPI Arguments2_Item(IArguments2 *iface, LONG index, BSTR *out_Value) { - WINE_FIXME("(%d %p)\n", index, out_Value); - return E_NOTIMPL; + 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) diff --git a/programs/wscript/main.c b/programs/wscript/main.c index 2f9b15c..3073445 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -343,6 +343,8 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm WINE_FIXME("Unsupported argument %s\n", wine_dbgstr_w(argv[i])); }else { filename = argv[i]; + argums = argv+i+1; + numOfArgs = argc-i-1; break; } } diff --git a/programs/wscript/tests/run.c b/programs/wscript/tests/run.c index 7d43d66..b7d3c3c 100644 --- a/programs/wscript/tests/run.c +++ b/programs/wscript/tests/run.c @@ -336,7 +336,7 @@ static void run_test(const char *file_name) BOOL bres;
script_name = file_name; - sprintf(command, "wscript.exe %s", file_name); + sprintf(command, "wscript.exe %s arg1 2 ar3", file_name);
SET_EXPECT(reportSuccess);
diff --git a/programs/wscript/tests/run.js b/programs/wscript/tests/run.js index e1c9da8..4b6014e 100644 --- a/programs/wscript/tests/run.js +++ b/programs/wscript/tests/run.js @@ -33,5 +33,12 @@ ok(WScript.Path === winetest.wscriptPath, "WScript.Path = ", WScript.Path); ok(WScript.ScriptName === winetest.wscriptScriptName, "WScript.ScriptName = " + WScript.ScriptName); ok(WScript.ScriptFullName === winetest.wscriptScriptFullName, "WScript.ScriptFullName = " + WScript.ScriptFullName); ok(typeof(WScript.Arguments) === "object", "typeof(WScript.Arguments) = " + typeof(WScript.Arguments)); +ok(WScript.Arguments.Item(0) === "arg1", "WScript.Arguments.Item(0) = " + WScript.Arguments.Item(0)); +ok(WScript.Arguments.Item(1) === "2", "WScript.Arguments.Item(1) = " + WScript.Arguments.Item(1)); +ok(WScript.Arguments.Item(2) === "ar3", "WScript.Arguments.Item(2) = " + WScript.Arguments.Item(2)); +try { + WScript.Arguments.Item(3); + ok(false, "expected exception"); +}catch(e) {}
winetest.reportSuccess(); diff --git a/programs/wscript/wscript.h b/programs/wscript/wscript.h index c4b2eb2..3c9191f 100644 --- a/programs/wscript/wscript.h +++ b/programs/wscript/wscript.h @@ -27,3 +27,7 @@ extern ITypeInfo *host_ti; extern ITypeInfo *arguments_ti;
extern WCHAR scriptFullName[]; + +extern WCHAR **argums; + +extern int numOfArgs;