Commit 03e3800d authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

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

parent 29967463
...@@ -252,7 +252,7 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat ...@@ -252,7 +252,7 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat
if (path->dn) len += wcslen(path->dn); if (path->dn) len += wcslen(path->dn);
*adspath = SysAllocStringLen(NULL, len); *adspath = SysAllocStringLen(NULL, len);
if (!*adspath) return E_OUTOFMEMORY; if (!*adspath) break;
wcscpy(*adspath, path->provider); wcscpy(*adspath, path->provider);
wcscat(*adspath, L"://"); wcscat(*adspath, L"://");
...@@ -263,10 +263,22 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat ...@@ -263,10 +263,22 @@ static HRESULT WINAPI path_Retrieve(IADsPathname *iface, LONG type, BSTR *adspat
} }
if (path->dn) wcscat(*adspath, path->dn); if (path->dn) wcscat(*adspath, path->dn);
break; 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)); TRACE("=> %s\n", debugstr_w(*adspath));
return S_OK; return *adspath ? S_OK : E_OUTOFMEMORY;
} }
static HRESULT WINAPI path_GetNumElements(IADsPathname *iface, LONG *count) static HRESULT WINAPI path_GetNumElements(IADsPathname *iface, LONG *count)
......
...@@ -151,13 +151,11 @@ todo_wine ...@@ -151,13 +151,11 @@ todo_wine
hr = IADsPathname_Retrieve(path, ADS_FORMAT_PROVIDER, &bstr); hr = IADsPathname_Retrieve(path, ADS_FORMAT_PROVIDER, &bstr);
ok(hr == S_OK, "got %#x\n", hr); ok(hr == S_OK, "got %#x\n", hr);
todo_wine
ok(!wcscmp(bstr, L"LDAP"), "got %s\n", wine_dbgstr_w(bstr)); ok(!wcscmp(bstr, L"LDAP"), "got %s\n", wine_dbgstr_w(bstr));
SysFreeString(bstr); SysFreeString(bstr);
hr = IADsPathname_Retrieve(path, ADS_FORMAT_SERVER, &bstr); hr = IADsPathname_Retrieve(path, ADS_FORMAT_SERVER, &bstr);
ok(hr == S_OK, "got %#x\n", hr); ok(hr == S_OK, "got %#x\n", hr);
todo_wine
ok(!wcscmp(bstr, L"sample:123"), "got %s\n", wine_dbgstr_w(bstr)); ok(!wcscmp(bstr, L"sample:123"), "got %s\n", wine_dbgstr_w(bstr));
SysFreeString(bstr); SysFreeString(bstr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment