[vlc-devel] commit: Export input_SplitMRL helper. (Laurent Aimar )
git version control
git at videolan.org
Fri Aug 22 02:30:05 CEST 2008
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Aug 22 02:23:43 2008 +0200| [3f5d4a954a652e94e658c5cc98019a43d975d992] | committer: Laurent Aimar
Export input_SplitMRL helper.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3f5d4a954a652e94e658c5cc98019a43d975d992
---
include/vlc_input.h | 9 +++++++++
src/input/input.c | 13 ++++++-------
src/input/input_internal.h | 2 --
src/input/stream.c | 9 +++++----
src/libvlccore.sym | 1 +
5 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/include/vlc_input.h b/include/vlc_input.h
index a244677..d3d672b 100644
--- a/include/vlc_input.h
+++ b/include/vlc_input.h
@@ -543,4 +543,13 @@ VLC_EXPORT( bool, input_AddSubtitles, ( input_thread_t *, char *, bool ) );
VLC_EXPORT( vlc_event_manager_t *, input_get_event_manager, ( input_thread_t * ) );
+/**
+ * This function allows to split a MRL into access, demux and path part.
+ *
+ * You should not write into access and demux string as they may not point into
+ * the provided buffer.
+ * The buffer provided by psz_dup will be modified.
+ */
+VLC_EXPORT( void, input_SplitMRL, ( const char **ppsz_access, const char **ppsz_demux, char **ppsz_path, char *psz_dup ) );
+
#endif
diff --git a/src/input/input.c b/src/input/input.c
index 7a53769..971284b 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -2085,7 +2085,7 @@ static int InputSourceInit( input_thread_t *p_input,
if( !p_input ) return VLC_EGENERIC;
/* Split uri */
- MRLSplit( psz_dup, &psz_access, &psz_demux, &psz_path );
+ input_SplitMRL( &psz_access, &psz_demux, &psz_path, psz_dup );
msg_Dbg( p_input, "`%s' gives access `%s' demux `%s' path `%s'",
psz_mrl, psz_access, psz_demux, psz_path );
@@ -2292,7 +2292,7 @@ static int InputSourceInit( input_thread_t *p_input,
{
const char *psz_a, *psz_d;
psz_buf = strdup( in->p_access->psz_path );
- MRLSplit( psz_buf, &psz_a, &psz_d, &psz_real_path );
+ input_SplitMRL( &psz_a, &psz_d, &psz_real_path, psz_buf );
}
else
{
@@ -2674,8 +2674,8 @@ static void DemuxMeta( input_thread_t *p_input, vlc_meta_t *p_meta, demux_t *p_d
* MRLSplit: parse the access, demux and url part of the
* Media Resource Locator.
*****************************************************************************/
-void MRLSplit( char *psz_dup, const char **ppsz_access, const char **ppsz_demux,
- char **ppsz_path )
+void input_SplitMRL( const char **ppsz_access, const char **ppsz_demux, char **ppsz_path,
+ char *psz_dup )
{
char *psz_access = NULL;
char *psz_demux = NULL;
@@ -2707,7 +2707,7 @@ void MRLSplit( char *psz_dup, const char **ppsz_access, const char **ppsz_demux,
}
*ppsz_access = psz_access ? psz_access : (char*)"";
*ppsz_demux = psz_demux ? psz_demux : (char*)"";
- *ppsz_path = psz_path ? psz_path : (char*)"";
+ *ppsz_path = psz_path;
}
static inline bool next(char ** src)
@@ -2871,8 +2871,7 @@ bool input_AddSubtitles( input_thread_t *p_input, char *psz_subtitle,
/*****************************************************************************
* input_get_event_manager
*****************************************************************************/
-vlc_event_manager_t *
-input_get_event_manager( input_thread_t *p_input )
+vlc_event_manager_t *input_get_event_manager( input_thread_t *p_input )
{
return &p_input->p->event_manager;
}
diff --git a/src/input/input_internal.h b/src/input/input_internal.h
index 2b329ae..c8e0641 100644
--- a/src/input/input_internal.h
+++ b/src/input/input_internal.h
@@ -382,8 +382,6 @@ void input_ClockSetRate( input_clock_t *cl, int i_rate );
char **subtitles_Detect( input_thread_t *, char* path, const char *fname );
int subtitles_Filter( const char *);
-void MRLSplit( char *, const char **, const char **, char ** );
-
static inline void input_ChangeStateWithVarCallback( input_thread_t *p_input, int state, bool callback )
{
const bool changed = p_input->i_state != state;
diff --git a/src/input/stream.c b/src/input/stream.c
index 228cfc8..7e35d37 100644
--- a/src/input/stream.c
+++ b/src/input/stream.c
@@ -254,11 +254,12 @@ stream_t *__stream_UrlNew( vlc_object_t *p_parent, const char *psz_url )
access_t *p_access;
stream_t *p_res;
- if( !psz_url ) return 0;
+ if( !psz_url )
+ return NULL;
- char psz_dup[strlen (psz_url) + 1];
- strcpy (psz_dup, psz_url);;
- MRLSplit( psz_dup, &psz_access, &psz_demux, &psz_path );
+ char psz_dup[strlen( psz_url ) + 1];
+ strcpy( psz_dup, psz_url );
+ input_SplitMRL( &psz_access, &psz_demux, &psz_path, psz_dup );
/* Now try a real access */
p_access = access_New( p_parent, psz_access, psz_demux, psz_path );
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 90bf132..5790f97 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -177,6 +177,7 @@ input_item_SetURI
input_MetaTypeToLocalizedString
__input_Preparse
__input_Read
+input_SplitMRL
input_StopThread
input_vaControl
__intf_Create
More information about the vlc-devel
mailing list