Jacek Caban : urlmon: Added PARSE_CANONICALIZE implementation in CoInternetParseUrl.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jul 20 06:20:35 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: e8617b9f1aaf100268e467c80ae4038c7e3b3dfa
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=e8617b9f1aaf100268e467c80ae4038c7e3b3dfa

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jul 19 23:40:07 2006 +0200

urlmon: Added PARSE_CANONICALIZE implementation in CoInternetParseUrl.

---

 dlls/urlmon/internet.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/dlls/urlmon/internet.c b/dlls/urlmon/internet.c
index 8ae22e0..9b2f24d 100644
--- a/dlls/urlmon/internet.c
+++ b/dlls/urlmon/internet.c
@@ -61,6 +61,31 @@ static HRESULT parse_schema(LPCWSTR url,
     return S_OK;
 }
 
+static HRESULT parse_canonicalize_url(LPCWSTR url, DWORD flags, LPWSTR result,
+        DWORD size, DWORD *rsize)
+{
+    IInternetProtocolInfo *protocol_info;
+    DWORD prsize = size;
+    HRESULT hres;
+
+    TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize);
+
+    protocol_info = get_protocol_info(url);
+
+    if(protocol_info) {
+        hres = IInternetProtocolInfo_ParseUrl(protocol_info, url, PARSE_CANONICALIZE,
+                flags, result, size, rsize, 0);
+        if(SUCCEEDED(hres))
+            return hres;
+    }
+
+    hres = UrlCanonicalizeW(url, result, &prsize, flags);
+
+    if(rsize)
+        *rsize = prsize;
+    return hres;
+}
+
 static HRESULT parse_security_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize)
 {
     IInternetProtocolInfo *protocol_info;
@@ -160,6 +185,8 @@ HRESULT WINAPI CoInternetParseUrl(LPCWST
         WARN("dwReserved = %ld\n", dwReserved);
 
     switch(ParseAction) {
+    case PARSE_CANONICALIZE:
+        return parse_canonicalize_url(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
     case PARSE_SECURITY_URL:
         return parse_security_url(pwzUrl, dwFlags, pszResult, cchResult, pcchResult);
     case PARSE_ENCODE:




More information about the wine-cvs mailing list