Module: wine Branch: master Commit: d1256404995385e1c788c0ae3d67bad8b152c0eb URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1256404995385e1c788c0ae3d...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Aug 3 12:33:32 2011 +0200
mshtml: Added IURi-based nsIURL::GetDirectory implementation.
---
dlls/mshtml/nsio.c | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 8829bf7..ef36afb 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -2320,14 +2320,35 @@ static nsresult NSAPI nsURL_SetRef(nsIURL *iface, const nsACString *aRef) static nsresult NSAPI nsURL_GetDirectory(nsIURL *iface, nsACString *aDirectory) { nsWineURI *This = impl_from_nsIURL(iface); + char *dir = NULL; + WCHAR *ptr; + BSTR path; + HRESULT hres;
TRACE("(%p)->(%p)\n", This, aDirectory);
- if(This->nsurl) - return nsIURL_GetDirectory(This->nsurl, aDirectory); + if(!ensure_uri(This)) + return NS_ERROR_UNEXPECTED;
- FIXME("default action not implemented\n"); - return NS_ERROR_NOT_IMPLEMENTED; + hres = IUri_GetPath(This->uri, &path); + 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)