activeds: Implement some simple cases for IADsPathname::Retrieve().

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Dmitry Timoshkov 2020-04-10 15:34:29 +08:00 committed by Alexandre Julliard
parent 29967463ad
commit 03e3800d89
2 changed files with 14 additions and 4 deletions

View File

@ -252,7 +252,7 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat
if (path->dn) len += wcslen(path->dn);
*adspath = SysAllocStringLen(NULL, len);
if (!*adspath) return E_OUTOFMEMORY;
if (!*adspath) break;
wcscpy(*adspath, path->provider);
wcscat(*adspath, L"://");
@ -263,10 +263,22 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat
}
if (path->dn) wcscat(*adspath, path->dn);
break;
case ADS_FORMAT_PROVIDER:
*adspath = SysAllocString(path->provider);
break;
case ADS_FORMAT_SERVER:
*adspath = path->provider ? SysAllocString(path->server) : SysAllocStringLen(NULL, 0);
break;
case ADS_FORMAT_X500_DN:
*adspath = path->dn ? SysAllocString(path->dn) : SysAllocStringLen(NULL, 0);
break;
}
TRACE("=> %s\n", debugstr_w(*adspath));
return S_OK;
return *adspath ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI path_GetNumElements(IADsPathname *iface, LONG *count)

View File

@ -151,13 +151,11 @@ todo_wine
hr = IADsPathname_Retrieve(path, ADS_FORMAT_PROVIDER, &bstr);
ok(hr == S_OK, "got %#x\n", hr);
todo_wine
ok(!wcscmp(bstr, L"LDAP"), "got %s\n", wine_dbgstr_w(bstr));
SysFreeString(bstr);
hr = IADsPathname_Retrieve(path, ADS_FORMAT_SERVER, &bstr);
ok(hr == S_OK, "got %#x\n", hr);
todo_wine
ok(!wcscmp(bstr, L"sample:123"), "got %s\n", wine_dbgstr_w(bstr));
SysFreeString(bstr);