#include <vlc_common.h>
#include <vlc_demux.h>
#include <vlc_interface.h>
+#include <vlc_xml.h>
#include "playlist.h"
-#include "vlc_xml.h"
struct demux_sys_t
{
psz_elname = stream_ReadLine( p_demux->s );
free( psz_elname );
- psz_elname = 0;
+ psz_elname = NULL;
p_xml_reader = xml_ReaderCreate( p_xml, p_demux->s );
if( !p_xml_reader ) return -1;
if( xml_ReaderRead( p_xml_reader ) != 1 )
{
msg_Err( p_demux, "invalid file (no root node)" );
- vlc_object_release( p_playlist );
return -1;
}
msg_Err( p_demux, "invalid root node %i, %s",
xml_ReaderNodeType( p_xml_reader ), psz_elname );
free( psz_elname );
- vlc_object_release( p_playlist );
return -1;
}
free( psz_elname );
free( psz_elname );
return -1;
}
- free( psz_elname ); psz_elname = 0;
+ free( psz_elname ); psz_elname = NULL;
// Read the attributes
while( xml_ReaderNextAttr( p_xml_reader ) == VLC_SUCCESS )
{
char *psz_name = xml_ReaderName( p_xml_reader );
char *psz_value = xml_ReaderValue( p_xml_reader );
- if( !psz_name || !psz_value ) return -1;
+ if( !psz_name || !psz_value )
+ {
+ free( psz_name );
+ free( psz_value );
+ return -1;
+ }
if( !strcmp( psz_name, "num_entries" ) )
{
msg_Dbg( p_demux, "playlist has %d entries", atoi(psz_value) );
if( !psz_elname ) return -1;
if( !strcmp( psz_elname, "entry" ) )
{
- p_input = input_ItemNewExt( p_playlist, psz_mrl, psz_name,
- 0, NULL, -1 );
+ p_input = input_item_New( p_demux, psz_mrl, psz_name );
if( psz_now )
input_item_SetNowPlaying( p_input, psz_now );
if( psz_genre )
input_item_SetGenre( p_input, psz_genre );
if( psz_listeners )
- msg_Err( p_playlist, "Unsupported meta listeners" );
+ msg_Err( p_demux, "Unsupported meta listeners" );
if( psz_bitrate )
- msg_Err( p_playlist, "Unsupported meta bitrate" );
+ msg_Err( p_demux, "Unsupported meta bitrate" );
- input_ItemAddSubItem( p_current_input, p_input );
+ input_item_AddSubItem( p_current_input, p_input );
vlc_gc_decref( p_input );
FREENULL( psz_name );
FREENULL( psz_mrl );
msg_Warn( p_demux, "error while parsing data" );
}
+ free( psz_elname );
+
HANDLE_PLAY_AND_RELEASE;
return 0; /* Needed for correct operation of go back */
}