xspf: fix nodes encoding. big up to yoannp for fully nested xspf !
authorRafaël Carré <funman@videolan.org>
Tue, 13 Nov 2007 23:28:22 +0000 (23:28 +0000)
committerRafaël Carré <funman@videolan.org>
Tue, 13 Nov 2007 23:28:22 +0000 (23:28 +0000)
modules/demux/playlist/xspf.c
modules/misc/playlist/xspf.c

index 4565780..e2c1c92 100644 (file)
@@ -635,7 +635,7 @@ static vlc_bool_t set_item_info SIMPLE_INTERFACE
     }
     else if( !strcmp( psz_name, "image" ) )
     {
-        const char *psz_uri = decode_URI_duplicate( psz_value );
+        char *psz_uri = decode_URI_duplicate( psz_value );
         input_item_SetArtURL( p_input, psz_uri );
         free( psz_uri );
     }
@@ -676,7 +676,7 @@ static vlc_bool_t parse_extension_node COMPLEX_INTERFACE
         /* attribute: title */
         if( !strcmp( psz_name, "title" ) )
         {
-            psz_title = unescape_URI_duplicate( psz_value );
+            psz_title = decode_URI_duplicate( psz_value );
         }
         /* extension attribute: application */
         else if( !strcmp( psz_name, "application" ) )
@@ -698,9 +698,8 @@ static vlc_bool_t parse_extension_node COMPLEX_INTERFACE
             msg_Warn( p_demux, "<node> requires \"title\" attribute" );
             return VLC_FALSE;
         }
-
-        p_new_input = input_ItemNewWithType( p_playlist, "", psz_title,
-                                             0, NULL, -1, ITEM_TYPE_DIRECTORY );
+        p_new_input = input_ItemNewWithType( VLC_OBJECT( p_playlist ), "",
+                                psz_title, 0, NULL, -1, ITEM_TYPE_DIRECTORY );
         if( p_new_input )
         {
             input_ItemAddSubItem( p_input_item, p_new_input );
index d2bbc8e..2a3bc22 100644 (file)
@@ -32,6 +32,7 @@
 #include <vlc_input.h>
 #include <vlc_meta.h>
 #include <vlc_strings.h>
+#include <vlc_url.h>
 #include <vlc_charset.h>
 #include "xspf.h"
 
@@ -250,7 +251,7 @@ static void xspf_extension_item( playlist_item_t *p_item, FILE *p_file,
     {
         int i;
         char *psz_temp;
-        psz_temp = convert_xml_special_chars( p_item->p_input->psz_name );
+        psz_temp = encode_URI_component( p_item->p_input->psz_name );
         fprintf( p_file, "\t\t<node title=\"%s\">\n",
                  *psz_temp ? psz_temp : "" );
         free( psz_temp );