[vlc-devel] commit: Win32: convert file:// URI to path correctly ( Rémi Denis-Courmont )

git version control git at videolan.org
Sun Feb 28 14:40:36 CET 2010


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Feb 28 11:52:38 2010 +0200| [9e46824b2991658d6d7ad5228545350e218f5d31] | committer: Rémi Denis-Courmont 

Win32: convert file:// URI to path correctly

This mostly reverts commit 37de4458fcac515a7683c1bd3da08a22d5c0d890.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9e46824b2991658d6d7ad5228545350e218f5d31
---

 src/text/strings.c |   46 +++++++++++++---------------------------------
 1 files changed, 13 insertions(+), 33 deletions(-)

diff --git a/src/text/strings.c b/src/text/strings.c
index 657641a..8b16997 100644
--- a/src/text/strings.c
+++ b/src/text/strings.c
@@ -1165,20 +1165,6 @@ char *make_path (const char *url)
     size_t schemelen = ((end != NULL) ? end : path) - url;
     path += 3; /* skip "://" */
 
-#ifdef WIN32
-
-    /* skip leading slash before disk drive
-     * when format is file:///C:/path/file.ext
-     */
-    if (schemelen == 4 && !strncasecmp (url, "file", 4))
-    {
-        char* search = strstr (path, ":/");
-        if( search && *path == '/' && search == path+2 )
-            path++;
-    }
-
-#endif
-
     /* Remove HTML anchor if present */
     end = strchr (path, '#');
     if (end)
@@ -1194,32 +1180,26 @@ char *make_path (const char *url)
     if (schemelen == 4 && !strncasecmp (url, "file", 4))
     {
 #if (DIR_SEP_CHAR != '/')
-        for (char *p = strchr (path, '/'); p; p = strchr (p, '/'))
-            *p++ = DIR_SEP_CHAR;
+        for (char *p = strchr (path, '/'); p; p = strchr (p + 1, '/'))
+            *p = DIR_SEP_CHAR;
 #endif
-
-#ifdef WIN32
-
-        /* check for disk drive in the form 'C:\...' */
-        char* search = strstr (path, ":"DIR_SEP);
-        if( search && search == path+1 )
-            return path;
-
-        if (*path && asprintf (&ret, "\\\\%s", path) == -1)
-            ret = NULL;
-
-        goto out;
-#else
+        /* Leading slash => local path */
         if (*path == DIR_SEP_CHAR)
+#ifndef WIN32
             return path;
+#else
+            return memmove (path, path + 1, strlen (path + 1) + 1);
+#endif
 
         /* Local path disguised as a remote one (MacOS X) */
         if (!strncasecmp (path, "localhost"DIR_SEP, 10))
-        {
-            memmove (path, path + 9, strlen (path + 9) + 1);
-            return path;
-        }
+            return memmove (path, path + 9, strlen (path + 9) + 1);
+
+#ifdef WIN32
+        if (*path && asprintf (&ret, "\\\\%s", path) == -1)
+            ret = NULL;
 #endif
+        /* non-local path :-( */
     }
     else
     if (schemelen == 2 && !strncasecmp (url, "fd", 2))




More information about the vlc-devel mailing list