From 3f5d4a954a652e94e658c5cc98019a43d975d992 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Fri, 22 Aug 2008 02:23:43 +0200 Subject: [PATCH] Export input_SplitMRL helper. --- 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 a244677e89..d3d672b153 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 7a53769284..971284bcf0 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 2b329ae4e6..c8e064147d 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 228cfc895e..7e35d37bcf 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 90bf132ec5..5790f974d7 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 -- 2.39.2