[vlc-commits] commit: Input location is always an URL ( Rémi Denis-Courmont )
git at videolan.org
git at videolan.org
Sat Nov 6 17:40:43 CET 2010
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Nov 6 18:20:51 2010 +0200| [7ba4c3862850f59b84fa9210b0e77fbf86c20890] | committer: Rémi Denis-Courmont
Input location is always an URL
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7ba4c3862850f59b84fa9210b0e77fbf86c20890
---
src/input/input.c | 61 ++++++++++++++++++++++++----------------------------
1 files changed, 28 insertions(+), 33 deletions(-)
diff --git a/src/input/input.c b/src/input/input.c
index 35da58b..b827753 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -2380,8 +2380,6 @@ static int InputSourceInit( input_thread_t *p_input,
/* Preparsing is only for file:// */
if( *psz_demux )
goto error;
- if( !*psz_access ) /* path without scheme:// */
- psz_access = "file";
if( strcmp( psz_access, "file" ) )
goto error;
msg_Dbg( p_input, "trying to pre-parse %s", psz_path );
@@ -2996,52 +2994,49 @@ static void input_ChangeState( input_thread_t *p_input, int i_state )
void input_SplitMRL( const char **ppsz_access, const char **ppsz_demux,
char **ppsz_path, char *psz_dup )
{
- const char *psz_access;
- const char *psz_demux = "";
- char *psz_path;
+ char *p;
- /* Either there is an access/demux specification before ://
- * or we have a plain local file path. */
- psz_path = strstr( psz_dup, "://" );
- if( psz_path != NULL )
+ /* Separate <path> from <access>[/<demux>]:// */
+ p = strstr( psz_dup, "://" );
+ if( p != NULL )
{
- *psz_path = '\0';
- psz_path += 3; /* skips "://" */
-
- psz_access = psz_dup;
- /* We really don't want module name substitution here! */
- if( psz_access[0] == '$' )
- psz_access++;
-
- /* Separate access from demux (<access>/<demux>://<path>) */
- char *p = strchr( psz_access, '/' );
- if( p )
- {
- *p = '\0';
- psz_demux = p + 1;
- if( psz_demux[0] == '$' )
- psz_demux++;
- }
+ *p = '\0';
+ p += 3; /* skips "://" */
+ *ppsz_path = p;
/* Remove HTML anchor if present (not supported).
* The hash symbol itself should be URI-encoded. */
- p = strchr( psz_path, '#' );
+ p = strchr( p, '#' );
if( p )
*p = '\0';
}
else
{
#ifndef NDEBUG
- fprintf( stderr, "%s(\"%s\"): not a valid URI!\n", __func__,
+ fprintf( stderr, "%s(\"%s\") probably not a valid URI!\n", __func__,
psz_dup );
#endif
- psz_path = psz_dup;
- psz_access = "";
+ /* Note: this is a valid non const pointer to "": */
+ *ppsz_path = psz_dup + strlen( psz_dup );
+ }
+
+ /* Separate access from demux */
+ p = strchr( psz_dup, '/' );
+ if( p != NULL )
+ {
+ *(p++) = '\0';
+ if( p[0] == '$' )
+ p++;
+ *ppsz_demux = p;
}
+ else
+ *ppsz_demux = "";
- *ppsz_access = psz_access;
- *ppsz_demux = psz_demux;
- *ppsz_path = psz_path;
+ /* We really don't want module name substitution here! */
+ p = psz_dup;
+ if( p[0] == '$' )
+ p++;
+ *ppsz_access = p;
}
static inline bool next(char ** src)
More information about the vlc-commits
mailing list