[vlc-devel] commit: core: debug make_path for windows (Erwan Tulou )
git version control
git at videolan.org
Thu Feb 11 17:51:55 CET 2010
vlc | branch: master | Erwan Tulou <erwan10 at videolan.org> | Thu Feb 11 17:18:33 2010 +0100| [37de4458fcac515a7683c1bd3da08a22d5c0d890] | committer: Erwan Tulou
core: debug make_path for windows
- infinite loop and typo fixed
- remove leading slash forgotten
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=37de4458fcac515a7683c1bd3da08a22d5c0d890
---
src/text/strings.c | 34 ++++++++++++++++++++++++++++------
1 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/src/text/strings.c b/src/text/strings.c
index eb46c9e..eb0350a 100644
--- a/src/text/strings.c
+++ b/src/text/strings.c
@@ -1166,6 +1166,20 @@ 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)
@@ -1182,8 +1196,21 @@ char *make_path (const char *url)
{
#if (DIR_SEP_CHAR != '/')
for (char *p = strchr (path, '/'); p; p = strchr (p, '/'))
- *p == DIR_SEP_CHAR;
+ *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
if (*path == DIR_SEP_CHAR)
return path;
@@ -1193,12 +1220,7 @@ char *make_path (const char *url)
memmove (path, path + 9, strlen (path + 9) + 1);
return path;
}
-
-#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