From 25025776b757bb7f2eedd7354fdf2337ca3b62fd Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 22 Apr 2014 21:18:44 +0000 Subject: [PATCH] [HLINK] * Sync with Wine 1.7.17. CORE-8080 svn path=/trunk/; revision=62893 --- reactos/dll/win32/hlink/hlink_classes.idl | 2 ++ reactos/dll/win32/hlink/hlink_main.c | 26 +++++++++++++++++------ reactos/media/doc/README.WINE | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/hlink/hlink_classes.idl b/reactos/dll/win32/hlink/hlink_classes.idl index 98b5d328095..120567d37c6 100644 --- a/reactos/dll/win32/hlink/hlink_classes.idl +++ b/reactos/dll/win32/hlink/hlink_classes.idl @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#pragma makedep register + [ threading(apartment), uuid(79eac9d0-baf9-11ce-8c82-00aa004ba90b) diff --git a/reactos/dll/win32/hlink/hlink_main.c b/reactos/dll/win32/hlink/hlink_main.c index 26849d83f20..3c64c042c78 100644 --- a/reactos/dll/win32/hlink/hlink_main.c +++ b/reactos/dll/win32/hlink/hlink_main.c @@ -375,6 +375,8 @@ HRESULT WINAPI HlinkUpdateStackItem(IHlinkFrame *frame, IHlinkBrowseContext *bc, HRESULT WINAPI HlinkParseDisplayName(LPBC pibc, LPCWSTR pwzDisplayName, BOOL fNoForceAbs, ULONG *pcchEaten, IMoniker **ppimk) { + static const WCHAR file_colonW[] = {'f','i','l','e',':'}; + ULONG eaten = 0; HRESULT hres; TRACE("(%p %s %x %p %p)\n", pibc, debugstr_w(pwzDisplayName), fNoForceAbs, pcchEaten, ppimk); @@ -382,17 +384,27 @@ HRESULT WINAPI HlinkParseDisplayName(LPBC pibc, LPCWSTR pwzDisplayName, BOOL fNo if(fNoForceAbs) FIXME("Unsupported fNoForceAbs\n"); - hres = MkParseDisplayNameEx(pibc, pwzDisplayName, pcchEaten, ppimk); - if(SUCCEEDED(hres)) - return hres; + if(!strncmpiW(pwzDisplayName, file_colonW, sizeof(file_colonW)/sizeof(WCHAR))) { + pwzDisplayName += sizeof(file_colonW)/sizeof(WCHAR); + eaten += sizeof(file_colonW)/sizeof(WCHAR); - hres = MkParseDisplayName(pibc, pwzDisplayName, pcchEaten, ppimk); - if(SUCCEEDED(hres)) - return hres; + while(*pwzDisplayName == '/') { + pwzDisplayName++; + eaten++; + } + }else { + hres = MkParseDisplayNameEx(pibc, pwzDisplayName, pcchEaten, ppimk); + if(SUCCEEDED(hres)) + return hres; + + hres = MkParseDisplayName(pibc, pwzDisplayName, pcchEaten, ppimk); + if(SUCCEEDED(hres)) + return hres; + } hres = CreateFileMoniker(pwzDisplayName, ppimk); if(SUCCEEDED(hres)) - *pcchEaten = strlenW(pwzDisplayName); + *pcchEaten = eaten + strlenW(pwzDisplayName); return hres; } diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index b162b26dc8d..1459bad7936 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -76,7 +76,7 @@ reactos/dll/win32/faultrep # Synced to Wine-1.7.1 reactos/dll/win32/fusion # Synced to Wine-1.7.1 reactos/dll/win32/gdiplus # Synced to Wine-1.7.17 reactos/dll/win32/hhctrl.ocx # Synced to Wine-1.7.17 -reactos/dll/win32/hlink # Synced to Wine-1.7.1 +reactos/dll/win32/hlink # Synced to Wine-1.7.17 reactos/dll/win32/hnetcfg # Synced to Wine-1.7.1 reactos/dll/win32/httpapi # Synced to Wine-1.7.1 reactos/dll/win32/iccvid # Synced to Wine-1.7.1