[HLINK]
authorAmine Khaldi <amine.khaldi@reactos.org>
Tue, 22 Apr 2014 21:18:44 +0000 (21:18 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Tue, 22 Apr 2014 21:18:44 +0000 (21:18 +0000)
* Sync with Wine 1.7.17.
CORE-8080

svn path=/trunk/; revision=62893

reactos/dll/win32/hlink/hlink_classes.idl
reactos/dll/win32/hlink/hlink_main.c
reactos/media/doc/README.WINE

index 98b5d32..120567d 100644 (file)
@@ -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)
index 26849d8..3c64c04 100644 (file)
@@ -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;
 }
index b162b26..1459bad 100644 (file)
@@ -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