From 4ecb339f02f7153e5f34a5b9c5918f595c268752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zi=C4=99tek?= Date: Wed, 20 Jul 2011 21:47:47 +0200 Subject: [PATCH] wscript: Implemented Host_get_ScriptFullName. --- programs/wscript/host.c | 7 +++++-- programs/wscript/tests/run.c | 19 +++++++++++++++++++ programs/wscript/tests/run.js | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/programs/wscript/host.c b/programs/wscript/host.c index b556d74ab23..d17e4b491f1 100644 --- a/programs/wscript/host.c +++ b/programs/wscript/host.c @@ -176,8 +176,11 @@ static HRESULT WINAPI Host_get_ScriptName(IHost *iface, BSTR *out_ScriptName) static HRESULT WINAPI Host_get_ScriptFullName(IHost *iface, BSTR *out_ScriptFullName) { - WINE_FIXME("(%p)\n", out_ScriptFullName); - return E_NOTIMPL; + 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) diff --git a/programs/wscript/tests/run.c b/programs/wscript/tests/run.c index 9595942c825..50aa398f695 100644 --- a/programs/wscript/tests/run.c +++ b/programs/wscript/tests/run.c @@ -62,6 +62,7 @@ DEFINE_EXPECT(reportSuccess); #define DISPID_TESTOBJ_WSCRIPTFULLNAME 10003 #define DISPID_TESTOBJ_WSCRIPTPATH 10004 #define DISPID_TESTOBJ_WSCRIPTSCRIPTNAME 10005 +#define DISPID_TESTOBJ_WSCRIPTSCRIPTFULLNAME 10006 #define TESTOBJ_CLSID "{178fc166-f585-4e24-9c13-4bb7faf80646}" @@ -152,6 +153,8 @@ static HRESULT WINAPI Dispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, rgDispId[i] = DISPID_TESTOBJ_WSCRIPTPATH; }else if(!strcmp_wa(rgszNames[i], "wscriptScriptName")) { rgDispId[i] = DISPID_TESTOBJ_WSCRIPTSCRIPTNAME; + }else if(!strcmp_wa(rgszNames[i], "wscriptScriptFullName")) { + rgDispId[i] = DISPID_TESTOBJ_WSCRIPTSCRIPTFULLNAME; }else { ok(0, "unexpected name %s\n", wine_dbgstr_w(rgszNames[i])); return DISP_E_UNKNOWNNAME; @@ -246,6 +249,22 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF return E_OUTOFMEMORY; break; } + case DISPID_TESTOBJ_WSCRIPTSCRIPTFULLNAME: + { + char fullPath[MAX_PATH]; + long res; + + ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); + ok(pdp->cArgs == 0, "cArgs = %d\n", pdp->cArgs); + ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); + V_VT(pVarResult) = VT_BSTR; + res = GetFullPathNameA(script_name, sizeof(fullPath)/sizeof(WCHAR), fullPath, NULL); + if(!res || res > sizeof(fullPath)/sizeof(WCHAR)) + return E_FAIL; + if(!(V_BSTR(pVarResult) = SysAllocString(a2bstr(fullPath)))) + return E_OUTOFMEMORY; + break; + } default: ok(0, "unexpected dispIdMember %d\n", dispIdMember); return E_NOTIMPL; diff --git a/programs/wscript/tests/run.js b/programs/wscript/tests/run.js index e9d7776c918..5e61d69bc44 100644 --- a/programs/wscript/tests/run.js +++ b/programs/wscript/tests/run.js @@ -31,5 +31,6 @@ ok(typeof(WScript.BuildVersion) === "number", "typeof(WScript.BuldVersion) = " + ok(WScript.FullName === winetest.wscriptFullName, "WScript.FullName = ", WScript.FullName); 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); winetest.reportSuccess();