[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