Module: wine Branch: master Commit: da1ceb1154eb88ceff1868ec44a4e05e7f3f3d11 URL: http://source.winehq.org/git/wine.git/?a=commit;h=da1ceb1154eb88ceff1868ec44...
Author: Thomas Mullaly thomas.mullaly@gmail.com Date: Mon Sep 27 18:00:21 2010 -0400
urlmon: Improve IUri support for mk: URIs.
---
dlls/urlmon/tests/uri.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/uri.c | 5 ++++ 2 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c index 3e6f5a8..0453441 100644 --- a/dlls/urlmon/tests/uri.c +++ b/dlls/urlmon/tests/uri.c @@ -4209,6 +4209,62 @@ static const uri_properties uri_tests[] = { {URL_SCHEME_ABOUT,S_OK,FALSE}, {URLZONE_INVALID,E_NOTIMPL,FALSE} } + }, + { "mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",0,S_OK,FALSE, + Uri_HAS_ABSOLUTE_URI|Uri_HAS_DISPLAY_URI|Uri_HAS_EXTENSION|Uri_HAS_PATH|Uri_HAS_PATH_AND_QUERY| + Uri_HAS_RAW_URI|Uri_HAS_SCHEME_NAME|Uri_HAS_HOST_TYPE|Uri_HAS_SCHEME, + FALSE, + { + {"mk:@MSITStore:C:\Program%20Files/AutoCAD%202008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"mk:@MSITStore:C:\Program%20Files/AutoCAD%202008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {".htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE}, + {"@MSITStore:C:\Program%20Files/AutoCAD%202008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",S_OK,FALSE}, + {"@MSITStore:C:\Program%20Files/AutoCAD%202008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm",S_OK,FALSE}, + {"mk",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE} + }, + { + {Uri_HOST_UNKNOWN,S_OK,FALSE}, + {0,S_FALSE,FALSE}, + {URL_SCHEME_MK,S_OK,FALSE}, + {URLZONE_INVALID,E_NOTIMPL,FALSE} + } + }, + { "mk:@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",0,S_OK,FALSE, + Uri_HAS_ABSOLUTE_URI|Uri_HAS_DISPLAY_URI|Uri_HAS_EXTENSION|Uri_HAS_PATH|Uri_HAS_PATH_AND_QUERY| + Uri_HAS_RAW_URI|Uri_HAS_SCHEME_NAME|Uri_HAS_HOST_TYPE|Uri_HAS_SCHEME, + FALSE, + { + {"mk:@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"mk:@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {".htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE}, + {"@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",S_OK,FALSE}, + {"@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"mk:@MSITStore:Z:\home\test\chm\silqhelp.chm::/thesilqquickstartguide.htm",S_OK,FALSE}, + {"mk",S_OK,FALSE}, + {"",S_FALSE,FALSE}, + {"",S_FALSE,FALSE} + }, + { + {Uri_HOST_UNKNOWN,S_OK,FALSE}, + {0,S_FALSE,FALSE}, + {URL_SCHEME_MK,S_OK,FALSE}, + {URLZONE_INVALID,E_NOTIMPL,FALSE} + } } };
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index ef66186..2aee38a 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -3081,6 +3081,11 @@ static BOOL canonicalize_path_opaque(const parse_data *data, Uri *uri, DWORD fla if(!computeOnly) uri->canon_uri[uri->canon_len] = *ptr; ++uri->canon_len; + } else if(data->scheme_type == URL_SCHEME_MK && *ptr == '\') { + /* MK URIs don't get '\' percent encoded. */ + if(!computeOnly) + uri->canon_uri[uri->canon_len] = *ptr; + ++uri->canon_len; } else { if(!computeOnly) pct_encode_val(*ptr, uri->canon_uri+uri->canon_len);