diff src/m3u/m3u.c @ 2215:9ddfa78b43a0

- now container plugins feed only valid uri to the core. - fix a bug in pls plugin which prevented writing pls playlist.
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Fri, 07 Dec 2007 01:13:34 +0900
parents 70b1f1fc4804
children 42a5c9d5830b
line wrap: on
line diff
--- a/src/m3u/m3u.c	Thu Dec 06 23:25:24 2007 +0900
+++ b/src/m3u/m3u.c	Fri Dec 07 01:13:34 2007 +0900
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
+/* #define AUD_DEBUG 1 */
+
 #include <glib.h>
 #include <string.h>
 #include <glib.h>
@@ -84,14 +86,14 @@
     gint ext_len = -1;
     gboolean is_extm3u = FALSE;
     Playlist *playlist = aud_playlist_get_active();
-    gchar *uri;
+    gchar *uri = NULL;
     
     uri = g_filename_to_uri(filename, NULL, NULL);
 
     if ((file = aud_vfs_fopen(uri ? uri : filename, "rb")) == NULL)
         return;
 
-    g_free(uri);
+    g_free(uri); uri = NULL;
 
     line = g_malloc(line_len);
     while (aud_vfs_fgets(line, line_len, file)) {
@@ -130,15 +132,21 @@
             ext_info = NULL;
         }
 
-        uri = g_filename_to_uri(line, NULL, NULL);
-        aud_playlist_load_ins_file(playlist, uri ? uri : line, filename, pos, ext_title, ext_len);
+        uri = aud_construct_uri(line, filename);
+        AUDDBG("uri=%s\n", uri);
+
+        /* add file only if valid uri has been constructed */
+        if (uri) {
+            aud_playlist_load_ins_file(playlist, uri, filename, pos, ext_title, ext_len);
+
+            if (pos >= 0)
+                pos++;
+        }
+
         g_free(uri);
 
         aud_str_replace_in(&ext_title, NULL);
         ext_len = -1;
-
-        if (pos >= 0)
-            pos++;
     }
 
     aud_vfs_fclose(file);