Module: wine Branch: master Commit: e18ddbc0cd0ff1ab74d7ce2fb975d4bc506f4a56 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e18ddbc0cd0ff1ab74d7ce2fb9...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Mar 2 18:19:48 2007 +0100
hhctrl.ocx: Correctly handle URLs in SetChmPath.
---
dlls/hhctrl.ocx/chm.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c index 493ed5b..d65d766 100644 --- a/dlls/hhctrl.ocx/chm.c +++ b/dlls/hhctrl.ocx/chm.c @@ -249,11 +249,29 @@ done: return SUCCEEDED(hr); }
+static LPCWSTR skip_schema(LPCWSTR url) +{ + static const WCHAR its_schema[] = {'i','t','s',':'}; + static const WCHAR msits_schema[] = {'m','s','-','i','t','s',':'}; + static const WCHAR mk_schema[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':'}; + + if(!strncmpiW(its_schema, url, sizeof(its_schema)/sizeof(WCHAR))) + return url+sizeof(its_schema)/sizeof(WCHAR); + if(!strncmpiW(msits_schema, url, sizeof(msits_schema)/sizeof(WCHAR))) + return url+sizeof(msits_schema)/sizeof(WCHAR); + if(!strncmpiW(mk_schema, url, sizeof(mk_schema)/sizeof(WCHAR))) + return url+sizeof(mk_schema)/sizeof(WCHAR); + + return url; +} + void SetChmPath(ChmPath *file, LPCWSTR base_file, LPCWSTR path) { LPCWSTR ptr; static const WCHAR separatorW[] = {':',':',0};
+ path = skip_schema(path); + ptr = strstrW(path, separatorW); if(ptr) { WCHAR chm_file[MAX_PATH];