# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <vlc_common.h>
#include <vlc_demux.h>
#include "playlist.h"
/**
* \brief iTML submodule initialization function
*/
-int E_(Import_iTML)( vlc_object_t *p_this )
+int Import_iTML( vlc_object_t *p_this )
{
DEMUX_BY_EXTENSION_OR_FORCED_MSG( ".xml", "itml",
"using iTunes Media Library reader" );
return VLC_SUCCESS;
}
-void E_(Close_iTML)( vlc_object_t *p_this )
+void Close_iTML( vlc_object_t *p_this )
{
demux_t *p_demux = (demux_t *)p_this;
free( p_demux->p_sys );
{
xml_elem_hnd_t pl_elements[] =
{ {"dict", COMPLEX_CONTENT, {.cmplx = parse_plist_dict} } };
- i_ret = parse_plist_node( p_demux, p_playlist, p_current_input,
+ i_ret = parse_plist_node( p_demux, p_current_input,
NULL, p_xml_reader, "plist",
pl_elements );
HANDLE_PLAY_AND_RELEASE;
/**
* \brief parse the root node of the playlist
*/
-static vlc_bool_t parse_plist_node COMPLEX_INTERFACE
+static bool parse_plist_node COMPLEX_INTERFACE
{
VLC_UNUSED(p_track); VLC_UNUSED(psz_element);
char *psz_name = NULL;
char *psz_value = NULL;
- vlc_bool_t b_version_found = VLC_FALSE;
+ bool b_version_found = false;
/* read all playlist attributes */
while( xml_ReaderNextAttr( p_xml_reader ) == VLC_SUCCESS )
{
msg_Err( p_demux, "invalid xml stream @ <plist>" );
FREE_ATT();
- return VLC_FALSE;
+ return false;
}
/* attribute: version */
if( !strcmp( psz_name, "version" ) )
{
- b_version_found = VLC_TRUE;
+ b_version_found = true;
if( strcmp( psz_value, "1.0" ) )
msg_Warn( p_demux, "unsupported iTunes Media Library version" );
}
if( !b_version_found )
msg_Warn( p_demux, "<plist> requires \"version\" attribute" );
- return parse_dict( p_demux, p_playlist, p_input_item, NULL, p_xml_reader,
+ return parse_dict( p_demux, p_input_item, NULL, p_xml_reader,
"plist", p_handlers );
}
* \brief parse a <dict>
* \param COMPLEX_INTERFACE
*/
-static vlc_bool_t parse_dict COMPLEX_INTERFACE
+static bool parse_dict COMPLEX_INTERFACE
{
int i_node;
char *psz_name = NULL;
{
msg_Err( p_demux, "invalid xml stream" );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
/* choose handler */
for( p_handler = p_handlers;
{
msg_Err( p_demux, "unexpected element <%s>", psz_name );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
FREE_NAME();
/* complex content is parsed in a separate function */
if( p_handler->type == COMPLEX_CONTENT )
{
if( p_handler->pf_handler.cmplx( p_demux,
- p_playlist,
p_input_item,
NULL,
p_xml_reader,
else
{
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
}
break;
{
msg_Err( p_demux, "invalid xml stream" );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
break;
{
msg_Err( p_demux, "invalid xml stream" );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
/* leave if the current parent node <track> is terminated */
if( !strcmp( psz_name, psz_element ) )
{
FREE_ATT_KEY();
- return VLC_TRUE;
+ return true;
}
/* there MUST have been a start tag for that element name */
if( !p_handler || !p_handler->name
msg_Err( p_demux, "there's no open element left for <%s>",
psz_name );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
/* special case: key */
if( !strcmp( p_handler->name, "key" ) )
/* unknown/unexpected xml node */
msg_Err( p_demux, "unexpected xml node %i", i_node );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
FREE_NAME();
}
msg_Err( p_demux, "unexpected end of xml data" );
FREE_ATT_KEY();
- return VLC_FALSE;
+ return false;
}
-static vlc_bool_t parse_plist_dict COMPLEX_INTERFACE
+static bool parse_plist_dict COMPLEX_INTERFACE
{
VLC_UNUSED(p_track); VLC_UNUSED(psz_element); VLC_UNUSED(p_handlers);
xml_elem_hnd_t pl_elements[] =
{NULL, UNKNOWN_CONTENT, {NULL} }
};
- return parse_dict( p_demux, p_playlist, p_input_item, NULL, p_xml_reader,
+ return parse_dict( p_demux, p_input_item, NULL, p_xml_reader,
"dict", pl_elements );
}
-static vlc_bool_t parse_tracks_dict COMPLEX_INTERFACE
+static bool parse_tracks_dict COMPLEX_INTERFACE
{
VLC_UNUSED(p_track); VLC_UNUSED(psz_element); VLC_UNUSED(p_handlers);
xml_elem_hnd_t tracks_elements[] =
{NULL, UNKNOWN_CONTENT, {NULL} }
};
- parse_dict( p_demux, p_playlist, p_input_item, NULL, p_xml_reader,
+ parse_dict( p_demux, p_input_item, NULL, p_xml_reader,
"dict", tracks_elements );
msg_Info( p_demux, "added %i tracks successfully",
p_demux->p_sys->i_ntracks );
- return VLC_TRUE;
+ return true;
}
-static vlc_bool_t parse_track_dict COMPLEX_INTERFACE
+static bool parse_track_dict COMPLEX_INTERFACE
{
VLC_UNUSED(psz_element); VLC_UNUSED(p_handlers);
input_item_t *p_new_input = NULL;
{NULL, UNKNOWN_CONTENT, {NULL} }
};
- i_ret = parse_dict( p_demux, p_playlist, p_input_item, p_track,
+ i_ret = parse_dict( p_demux, p_input_item, p_track,
p_xml_reader, "dict", track_elements );
msg_Dbg( p_demux, "name: %s, artist: %s, album: %s, genre: %s, trackNum: %s, location: %s",
{
msg_Err( p_demux, "Track needs Location" );
free_track( p_track );
- return VLC_FALSE;
+ return false;
}
psz_uri = decode_URI_duplicate( p_track->location );
memmove( psz_uri + 7, psz_uri + 17, strlen( psz_uri ) - 9 );
msg_Info( p_demux, "Adding '%s'", psz_uri );
- p_new_input = input_ItemNewExt( p_playlist, psz_uri,
+ p_new_input = input_ItemNewExt( p_demux, psz_uri,
NULL, 0, NULL, -1 );
input_ItemAddSubItem( p_input_item, p_new_input );
free( p_track );
}
-static vlc_bool_t save_data SIMPLE_INTERFACE
+static bool save_data SIMPLE_INTERFACE
{
/* exit if setting is impossible */
if( !psz_name || !psz_value || !p_track )
- return VLC_FALSE;
+ return false;
/* re-convert xml special characters inside psz_value */
resolve_xml_special_chars( psz_value );
long i_num = atol( psz_value );
p_track->duration = (mtime_t) i_num*1000;
}
- return VLC_TRUE;
+ return true;
}
/**
* \brief handles the supported <track> sub-elements
*/
-static vlc_bool_t add_meta( input_item_t *p_input_item,
+static bool add_meta( input_item_t *p_input_item,
track_elem_t *p_track )
{
/* exit if setting is impossible */
if( !p_input_item || !p_track )
- return VLC_FALSE;
+ return false;
#define SET_INFO( func, prop ) \
if( p_track->prop ) { func( p_input_item, p_track->prop ); }
SET_INFO( input_item_SetGenre, genre )
SET_INFO( input_item_SetTrackNum, trackNum )
SET_INFO( input_item_SetDuration, duration )
- return VLC_TRUE;
+ return true;
}
/**
* \brief skips complex element content that we can't manage
*/
-static vlc_bool_t skip_element COMPLEX_INTERFACE
+static bool skip_element COMPLEX_INTERFACE
{
- VLC_UNUSED(p_demux); VLC_UNUSED(p_playlist); VLC_UNUSED(p_input_item);
+ VLC_UNUSED(p_demux); VLC_UNUSED(p_input_item);
VLC_UNUSED(p_track); VLC_UNUSED(p_handlers);
char *psz_endname;
{
psz_endname = xml_ReaderName( p_xml_reader );
if( !psz_endname )
- return VLC_FALSE;
+ return false;
if( !strcmp( psz_element, psz_endname ) )
{
free( psz_endname );
- return VLC_TRUE;
+ return true;
}
else
free( psz_endname );
}
}
- return VLC_FALSE;
+ return false;
}