Enlightenment CVS committal

Author  : moom16
Project : e17
Module  : apps/eclair

Dir     : e17/apps/eclair/src


Modified Files:
        eclair.c eclair_playlist.c eclair_playlist.h 


Log Message:

* We can now load m3u playlists


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- eclair.c    8 May 2005 12:29:06 -0000       1.14
+++ eclair.c    8 May 2005 13:23:33 -0000       1.15
@@ -690,7 +690,7 @@
        fprintf(stderr, "\n");
        fprintf(stderr, "Thanks :)\n");
    
-       exit(20);
+       exit(128 + num);
 }
 
 int main(int argc, char *argv[])
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- eclair_playlist.c   8 May 2005 12:29:06 -0000       1.7
+++ eclair_playlist.c   8 May 2005 13:23:33 -0000       1.8
@@ -1,6 +1,7 @@
 #include "eclair_playlist.h"
 #include "../config.h"
 #include <string.h>
+#include <stdio.h>
 #include <Esmart/Esmart_Container.h>
 #include <Evas.h>
 #include <Ecore_File.h>
@@ -12,6 +13,8 @@
 #include "eclair_callbacks.h"
 #include "eclair_utils.h"
 
+#define MAX_PATH_LEN 1024
+
 //Initialize the playlist
 void eclair_playlist_init(Eclair_Playlist *playlist, Eclair *eclair)
 {
@@ -94,6 +97,41 @@
    return 1;
 }
 
+//Add files stored in the m3u file
+Evas_Bool eclair_playlist_add_m3u(Eclair_Playlist *playlist, char *m3u_path)
+{
+   FILE *m3u_file;
+   char line[MAX_PATH_LEN], *path, *c, *m3u_dir;
+
+   if (!playlist || !m3u_path || !(m3u_file = fopen(m3u_path, "rt")))
+      return 0;
+
+   m3u_dir = ecore_file_get_dir(m3u_path);
+
+   while (fgets(line, MAX_PATH_LEN, m3u_file))
+   {
+      if (line[0] == '#')
+         continue;
+
+      for (c = strpbrk(line, "\r\n"); c; c = strpbrk(c, "\r\n"))
+         *c = 0;
+   
+      if (line[0] == '/')
+         eclair_playlist_add_uri(playlist, line);
+      else if (m3u_dir)
+      {
+         path = (char *)malloc(strlen(m3u_dir) + strlen(line) + 2);
+         sprintf(path, "%s/%s", m3u_dir, line);
+         eclair_playlist_add_uri(playlist, path);
+         free(path);
+      }
+   }
+
+   free(m3u_dir);
+   fclose(m3u_file);
+   return 1;
+}
+
 //Add the media file located at the uri
 Evas_Bool eclair_playlist_add_uri(Eclair_Playlist *playlist, char *uri)
 {
@@ -121,10 +159,19 @@
    else
       new_path = strdup(uri);
 
-   if (eclair_playlist_add_dir(playlist, new_path))
+   if (!strstr(new_path, "://"))
    {
-      free(new_path);
-      return 1;
+      if (eclair_playlist_add_dir(playlist, new_path))
+      {
+         free(new_path);
+         return 1;
+      }
+      if (strcmp(eclair_utils_file_get_extension(new_path), "m3u") == 0)
+      {
+         eclair_playlist_add_m3u(playlist, new_path);
+         free(new_path);
+         return 1;  
+      }
    }
    
    new_media_file = eclair_media_file_new();
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- eclair_playlist.h   8 May 2005 12:29:06 -0000       1.5
+++ eclair_playlist.h   8 May 2005 13:23:33 -0000       1.6
@@ -11,6 +11,7 @@
 Eclair_Media_File *eclair_playlist_next_media_file(Eclair_Playlist *playlist);
 
 Evas_Bool eclair_playlist_add_dir(Eclair_Playlist *playlist, char *dir);
+Evas_Bool eclair_playlist_add_m3u(Eclair_Playlist *playlist, char *m3u_path);
 Evas_Bool eclair_playlist_add_uri(Eclair_Playlist *playlist, char *uri);
 void eclair_playlist_remove_media_file(Eclair_Playlist *playlist, 
Eclair_Media_File *media_file);
 Evas_List *eclair_playlist_remove_media_file_list(Eclair_Playlist *playlist, 
Evas_List *list);




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to