[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