From: RĂ©mi Denis-Courmont Date: Tue, 3 Mar 2015 20:18:48 +0000 (+0200) Subject: vlc_path2uri: allow file names starting with a pair of backslashes X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=84ea87f354ce88a9e86c259424027578f0c3252d;p=vlc vlc_path2uri: allow file names starting with a pair of backslashes --- diff --git a/src/test/url.c b/src/test/url.c index 5fc01e67ed..c19927144b 100644 --- a/src/test/url.c +++ b/src/test/url.c @@ -124,9 +124,6 @@ int main (void) test_path ("/home/john//too///many//slashes", "file:///home/john//too///many//slashes"); test_path ("/home/john/music.ogg", "file:///home/john/music.ogg"); - test_path ("\\\\server/pub/music.ogg", "smb://server/pub/music.ogg"); - test_path ("\\\\server\\pub\\music.ogg", "smb://server/pub/music.ogg"); - test_path ("\\\\server", "smb://server"); /*int fd = open (".", O_RDONLY); assert (fd != -1);*/ diff --git a/src/text/url.c b/src/text/url.c index cd7e48819e..9283520e0a 100644 --- a/src/text/url.c +++ b/src/text/url.c @@ -174,7 +174,7 @@ char *vlc_path2uri (const char *path, const char *scheme) path = p; #endif -#if defined( _WIN32 ) || defined( __OS2__ ) +#if defined (_WIN32) || defined (__OS2__) /* Drive letter */ if (isalpha ((unsigned char)path[0]) && (path[1] == ':')) { @@ -190,47 +190,21 @@ char *vlc_path2uri (const char *path, const char *scheme) } } else -#endif if (!strncmp (path, "\\\\", 2)) { /* Windows UNC paths */ -#if !defined( _WIN32 ) && !defined( __OS2__ ) - if (scheme != NULL) - { - errno = ENOTSUP; - return NULL; /* remote files not supported */ - } - - /* \\host\share\path -> smb://host/share/path */ - if (strchr (path + 2, '\\') != NULL) - { /* Convert backslashes to slashes */ - char *dup = strdup (path); - if (dup == NULL) - return NULL; - for (size_t i = 2; dup[i]; i++) - if (dup[i] == '\\') - dup[i] = DIR_SEP_CHAR; - - char *ret = vlc_path2uri (dup, scheme); - free (dup); - return ret; - } -# define SMB_SCHEME "smb" -#else /* \\host\share\path -> file://host/share/path */ -# define SMB_SCHEME "file" -#endif size_t hostlen = strcspn (path + 2, DIR_SEP); - buf = malloc (sizeof (SMB_SCHEME) + 3 + hostlen); + buf = malloc (7 + hostlen); if (buf != NULL) - snprintf (buf, sizeof (SMB_SCHEME) + 3 + hostlen, - SMB_SCHEME"://%s", path + 2); + snprintf (buf, 7 + hostlen, "file://%s", path + 2); path += 2 + hostlen; if (path[0] == '\0') return buf; /* Hostname without path */ } else +#endif if (path[0] != DIR_SEP_CHAR) { /* Relative path: prepend the current working directory */ char *cwd, *ret;