From 8f8bdcb52a70aa80e3e587c2e6718791bf5424cb Mon Sep 17 00:00:00 2001 From: Antoine Cellerier <dionoea@videolan.org> Date: Sun, 27 Aug 2006 17:07:20 +0000 Subject: [PATCH] Fix regression from 0.8.5 when parsing microsoft [Reference] type playlists. We need to check that nothing else was forgoten in the old playlist code. --- modules/demux/playlist/pls.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/modules/demux/playlist/pls.c b/modules/demux/playlist/pls.c index 708bc06ae85b..6230c667df86 100644 --- a/modules/demux/playlist/pls.c +++ b/modules/demux/playlist/pls.c @@ -83,6 +83,7 @@ static int Demux( demux_t *p_demux ) char *psz_name = NULL; char *psz_line; char *psz_mrl = NULL; + char *psz_mrl_orig = NULL; char *psz_key; char *psz_value; int i_item = -1; @@ -93,7 +94,7 @@ static int Demux( demux_t *p_demux ) while( ( psz_line = stream_ReadLine( p_demux->s ) ) ) { - if( !strncasecmp( psz_line, "[playlist]", sizeof("[playlist]")-1 ) || + if( !strncasecmp( psz_line, "[playlist]", sizeof("[playlist]")-1 ) || !strncasecmp( psz_line, "[Reference]", sizeof("[Reference]")-1 ) ) { free( psz_line ); @@ -174,7 +175,19 @@ static int Demux( demux_t *p_demux ) if( !strncasecmp( psz_key, "file", sizeof("file") -1 ) || !strncasecmp( psz_key, "Ref", sizeof("Ref") -1 ) ) { + psz_mrl_orig = psz_mrl = E_(ProcessMRL)( psz_value, p_demux->p_sys->psz_prefix ); + + if( !strncasecmp( psz_key, "Ref", sizeof("Ref") -1 ) ) + { + if( !strncasecmp( psz_mrl, "http://", sizeof("http://") -1 ) ) + { + psz_mrl++; + psz_mrl[0] = 'm'; + psz_mrl[1] = 'm'; + psz_mrl[2] = 's'; + } + } } else if( !strncasecmp( psz_key, "title", sizeof("title") -1 ) ) { @@ -202,7 +215,7 @@ static int Demux( demux_t *p_demux ) playlist_AddWhereverNeeded( p_playlist, p_input, p_current, p_item_in_category, (i_parent_id > 0 ) ? VLC_TRUE: VLC_FALSE, PLAYLIST_APPEND ); - free( psz_mrl ); + free( psz_mrl_orig ); psz_mrl = NULL; } else -- GitLab