[PATCH 0/1] MR5325: wshom/network: Implement UserDomain property.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56434 Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5325
From: Nikolay Sivov <nsivov(a)codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56434 Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/wshom.ocx/network.c | 7 +++++-- dlls/wshom.ocx/shell.c | 20 +++++++++++++------- dlls/wshom.ocx/tests/wshom.c | 8 ++++++++ dlls/wshom.ocx/wshom_private.h | 1 + 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/dlls/wshom.ocx/network.c b/dlls/wshom.ocx/network.c index f2a88c2117f..1f7996d2952 100644 --- a/dlls/wshom.ocx/network.c +++ b/dlls/wshom.ocx/network.c @@ -114,9 +114,12 @@ static HRESULT WINAPI WshNetwork2_Invoke(IWshNetwork2 *iface, DISPID dispIdMembe static HRESULT WINAPI WshNetwork2_get_UserDomain(IWshNetwork2 *iface, BSTR *user_domain) { - FIXME("%p stub\n", user_domain); + TRACE("%p, %p.\n", iface, user_domain); - return E_NOTIMPL; + if (!user_domain) + return E_POINTER; + + return get_env_var(L"USERDOMAIN", user_domain); } static HRESULT WINAPI WshNetwork2_get_UserName(IWshNetwork2 *iface, BSTR *user_name) diff --git a/dlls/wshom.ocx/shell.c b/dlls/wshom.ocx/shell.c index 69db995cd0d..dd21e03b898 100644 --- a/dlls/wshom.ocx/shell.c +++ b/dlls/wshom.ocx/shell.c @@ -538,16 +538,10 @@ static HRESULT WINAPI WshEnvironment_Invoke(IWshEnvironment *iface, DISPID dispI return hr; } -static HRESULT WINAPI WshEnvironment_get_Item(IWshEnvironment *iface, BSTR name, BSTR *value) +HRESULT get_env_var(const WCHAR *name, BSTR *value) { - WshEnvironment *This = impl_from_IWshEnvironment(iface); DWORD len; - TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), value); - - if (!value) - return E_POINTER; - len = GetEnvironmentVariableW(name, NULL, 0); if (len) { @@ -561,6 +555,18 @@ static HRESULT WINAPI WshEnvironment_get_Item(IWshEnvironment *iface, BSTR name, return *value ? S_OK : E_OUTOFMEMORY; } +static HRESULT WINAPI WshEnvironment_get_Item(IWshEnvironment *iface, BSTR name, BSTR *value) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), value); + + if (!value) + return E_POINTER; + + return get_env_var(name, value); +} + static HRESULT WINAPI WshEnvironment_put_Item(IWshEnvironment *iface, BSTR name, BSTR value) { WshEnvironment *This = impl_from_IWshEnvironment(iface); diff --git a/dlls/wshom.ocx/tests/wshom.c b/dlls/wshom.ocx/tests/wshom.c index ed0f4e186a3..58736ff601f 100644 --- a/dlls/wshom.ocx/tests/wshom.c +++ b/dlls/wshom.ocx/tests/wshom.c @@ -745,6 +745,14 @@ static void test_wshnetwork(void) SysFreeString(name); SysFreeString(str); + str = NULL; + hr = IWshNetwork2_get_UserDomain(nw2, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); + hr = IWshNetwork2_get_UserDomain(nw2, &str); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!!str, "Unexpected pointer.\n"); + SysFreeString(str); + IWshNetwork2_Release(nw2); IDispatch_Release(disp); } diff --git a/dlls/wshom.ocx/wshom_private.h b/dlls/wshom.ocx/wshom_private.h index 8e7792c871c..19e3fff5b2c 100644 --- a/dlls/wshom.ocx/wshom_private.h +++ b/dlls/wshom.ocx/wshom_private.h @@ -46,6 +46,7 @@ struct provideclassinfo { }; extern void init_classinfo(const GUID *guid, IUnknown *outer, struct provideclassinfo *classinfo); +HRESULT get_env_var(const WCHAR *name, BSTR *value); HRESULT WINAPI WshShellFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**); HRESULT WINAPI WshNetworkFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5325
participants (2)
-
Nikolay Sivov -
Nikolay Sivov (@nsivov)