#include <vlc_common.h>
#include <vlc_demux.h>
-#include <vlc_charset.h>
#include "playlist.h"
int Import_ZPL( vlc_object_t *p_this )
{
demux_t *p_demux = (demux_t *)p_this;
- const uint8_t *p_peek;
- CHECK_PEEK( p_peek, 8 );
if(! ( demux_IsPathExtension( p_demux, ".zpl" ) || demux_IsForced( p_demux, "zpl" )))
return VLC_EGENERIC;
free( p_demux->p_sys );
}
-static inline void MaybeFromLocaleRep (char **str)
-{
- char *const orig_str = *str;
-
- if ((orig_str != NULL) && !IsUTF8 (orig_str))
- {
- *str = FromLocaleDup (orig_str);
- free (orig_str);
- }
-}
-
-
static int Demux( demux_t *p_demux )
{
char *psz_line;
*psz_description = NULL, *psz_url = NULL, *psz_copyright = NULL,
*psz_mrl = NULL;
- INIT_PLAYLIST_STUFF;
+ input_item_t *p_current_input = GetCurrentItem(p_demux);
psz_line = stream_ReadLine( p_demux->s );
char *psz_parse = psz_line;
psz_line = stream_ReadLine( p_demux->s );
}
+ input_item_node_t *p_subitems = input_item_node_Create( p_current_input );
+
/* Loop on all lines */
while( psz_line )
{
if( !EMPTY_STR(psz_tabvalue) )
{
psz_mrl = ProcessMRL( psz_tabvalue, p_demux->p_sys->psz_prefix );
- if( psz_mrl )
- MaybeFromLocaleRep( &psz_mrl );
}
free( psz_tabvalue );
}
/* create the input item */
input_item_t *p_input = input_item_NewExt( p_demux, psz_mrl,
psz_title, 0, NULL, 0, i_duration );
- input_item_AddSubItem( p_current_input, p_input );
+ input_item_node_AppendItem( p_subitems, p_input );
FREENULL( psz_mrl );
FREENULL( psz_title );
i_duration = -1;
SET( psz_copyright, Copyright );
#undef SET
+ vlc_gc_decref( p_input );
}
else
msg_Warn( p_demux, "invalid line '%s'", psz_parse );
psz_line = stream_ReadLine( p_demux->s );
}
- HANDLE_PLAY_AND_RELEASE;
+ input_item_node_PostAndDelete( p_subitems );
+
+ vlc_gc_decref(p_current_input);
var_Destroy( p_demux, "zpl-extvlcopt" );
return 0; /* Needed for correct operation of go back */
}