Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
84ea87f3
Commit
84ea87f3
authored
Mar 03, 2015
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vlc_path2uri: allow file names starting with a pair of backslashes
parent
95c0e843
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
4 additions
and
33 deletions
+4
-33
src/test/url.c
src/test/url.c
+0
-3
src/text/url.c
src/text/url.c
+4
-30
No files found.
src/test/url.c
View file @
84ea87f3
...
...
@@ -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);*/
...
...
src/text/url.c
View file @
84ea87f3
...
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment