mshtml: Added IURi-based nsIURL::GetDirectory implementation.

This commit is contained in:
Jacek Caban 2011-08-03 12:33:32 +02:00 committed by Alexandre Julliard
parent 3673f6b7c4
commit d125640499
1 changed files with 25 additions and 4 deletions

View File

@ -2320,14 +2320,35 @@ static nsresult NSAPI nsURL_SetRef(nsIURL *iface, const nsACString *aRef)
static nsresult NSAPI nsURL_GetDirectory(nsIURL *iface, nsACString *aDirectory) static nsresult NSAPI nsURL_GetDirectory(nsIURL *iface, nsACString *aDirectory)
{ {
nsWineURI *This = impl_from_nsIURL(iface); nsWineURI *This = impl_from_nsIURL(iface);
char *dir = NULL;
WCHAR *ptr;
BSTR path;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, aDirectory); TRACE("(%p)->(%p)\n", This, aDirectory);
if(This->nsurl) if(!ensure_uri(This))
return nsIURL_GetDirectory(This->nsurl, aDirectory); return NS_ERROR_UNEXPECTED;
FIXME("default action not implemented\n"); hres = IUri_GetPath(This->uri, &path);
return NS_ERROR_NOT_IMPLEMENTED; if(FAILED(hres))
return NS_ERROR_FAILURE;
ptr = strrchrW(path, '/');
if(ptr) {
if(ptr[1])
*ptr = 0;
dir = heap_strdupWtoA(path);
if(!dir) {
SysFreeString(path);
return NS_ERROR_OUT_OF_MEMORY;
}
}
SysFreeString(path);
TRACE("ret %s\n", debugstr_a(dir));
nsACString_SetData(aDirectory, dir ? dir : "");
return NS_OK;
} }
static nsresult NSAPI nsURL_SetDirectory(nsIURL *iface, const nsACString *aDirectory) static nsresult NSAPI nsURL_SetDirectory(nsIURL *iface, const nsACString *aDirectory)