This patch implements the sysinfo_get_UserName function, an existing FIXME for adsldp.
-- v2: adsldp/tests: remove todos from sysinfo Implement sysinfo_get_UserName in adsldp.c
From: Daniel Martin dm@xbostechnology.com
--- dlls/adsldp/adsldp.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c index dd459f3aa18..dc4253cac99 100644 --- a/dlls/adsldp/adsldp.c +++ b/dlls/adsldp/adsldp.c @@ -237,8 +237,27 @@ static HRESULT WINAPI sysinfo_Invoke(IADsADSystemInfo *iface, DISPID dispid, REF
static HRESULT WINAPI sysinfo_get_UserName(IADsADSystemInfo *iface, BSTR *retval) { - FIXME("%p,%p: stub\n", iface, retval); - return E_NOTIMPL; + ULONG size; + WCHAR *name; + + TRACE("%p,%p\n", iface, retval); + + size = 0; + GetUserNameExW(NameFullyQualifiedDN, NULL, &size); + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) + return HRESULT_FROM_WIN32(GetLastError()); + + name = SysAllocStringLen(NULL, size); + if (!name) return E_OUTOFMEMORY; + + if (!GetUserNameExW(NameFullyQualifiedDN, name, &size)) + { + SysFreeString(name); + return HRESULT_FROM_WIN32(GetLastError()); + } + + *retval = name; + return S_OK; }
static HRESULT WINAPI sysinfo_get_ComputerName(IADsADSystemInfo *iface, BSTR *retval)
From: Daniel Martin dm@xbostechnology.com
--- dlls/adsldp/tests/sysinfo.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/dlls/adsldp/tests/sysinfo.c b/dlls/adsldp/tests/sysinfo.c index 419af743e0a..92c48f714b4 100644 --- a/dlls/adsldp/tests/sysinfo.c +++ b/dlls/adsldp/tests/sysinfo.c @@ -123,7 +123,6 @@ static void test_UserName(void) ok(hr == S_OK, "got %#lx\n", hr);
hr = IADsADSystemInfo_get_UserName(sysinfo, &bstr); - todo_wine ok(hr == S_OK || hr == HRESULT_FROM_WIN32(ERROR_NONE_MAPPED), "got %#lx\n", hr); if (hr == S_OK) { @@ -164,7 +163,6 @@ static void test_sysinfo(void) SysFreeString(bstr);
hr = IADsADSystemInfo_get_UserName(sysinfo, &bstr); - todo_wine ok(hr == S_OK || hr == HRESULT_FROM_WIN32(ERROR_NONE_MAPPED), "got %#lx\n", hr); if (hr != S_OK) goto done; SysFreeString(bstr);