changeset 1464:4a72485a5cff trunk

[svn] - when we play from a cuefile, start playing from the file defined in the cuefile if that file can't be found, then take no action (this is how MPlayer behaves, anyway.)
author nenolod
date Wed, 02 Aug 2006 18:12:58 -0700
parents 47c7695095d4
children 25ab2e475f46
files ChangeLog Plugins/Input/cue/cuesheet.c
diffstat 2 files changed, 57 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Aug 02 17:52:07 2006 -0700
+++ b/ChangeLog	Wed Aug 02 18:12:58 2006 -0700
@@ -1,3 +1,12 @@
+2006-08-03 00:52:07 +0000  William Pitcock <nenolod@nenolod.net>
+  revision [1840]
+  - ok, lets use real URIs here
+  
+
+  Changes:        Modified:
+  +1 -1           trunk/Plugins/Input/cue/cuesheet.c  
+
+
 2006-08-03 00:44:15 +0000  William Pitcock <nenolod@nenolod.net>
   revision [1838]
   - cuesheet plugin.
--- a/Plugins/Input/cue/cuesheet.c	Wed Aug 02 17:52:07 2006 -0700
+++ b/Plugins/Input/cue/cuesheet.c	Wed Aug 02 18:12:58 2006 -0700
@@ -19,6 +19,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <audacious/plugin.h>
+#include <audacious/output.h>
 #include <audacious/playlist.h>
 #include <libaudacious/beepctrl.h>
 
@@ -32,6 +33,9 @@
 static void free_cue_info(void);
 static void fix_cue_argument(char *line);
 static gboolean is_our_file(gchar *filespec);
+static void play(gchar *uri);
+static void play_cue_uri(gchar *uri);
+static gint get_time(void);
 
 static gchar *cue_performer = NULL;
 static gchar *cue_title = NULL;
@@ -60,11 +64,10 @@
 	NULL,	  	   	/* configure */
 	is_our_file,
 	NULL,		/* audio cd */
-#if 0
 	play,
-	stop,
-	pause,
-	seek,
+	NULL,
+	NULL,
+	NULL,
 	NULL,		/* set eq */
 	get_time,
 	NULL,
@@ -77,9 +80,10 @@
 	NULL,		/* XXX get_song_info iface */
 	NULL,
 	NULL,
+#if 0
 	get_tuple,
+#endif
 	NULL
-#endif
 };
 
 static gboolean is_our_file(gchar *filename)
@@ -97,7 +101,7 @@
 	{
 		gint i;
 		FILE *f = fopen(filename, "rb");
-		ret = TRUE;
+		ret = FALSE;
 
 		/* add the files, build cue urls, etc. */
 		cache_cue_file(f);
@@ -117,6 +121,42 @@
 	return ret;
 }
 
+static gint get_time(void)
+{
+	return get_output_time();
+}
+
+static void play(gchar *uri)
+{
+	play_cue_uri(uri);
+}
+
+static void play_cue_uri(gchar *uri)
+{
+        gchar *path2 = g_strdup(uri + 6);
+        gchar *_path = strchr(path2, '?');
+	gint track;
+	FILE *f;
+
+        if (_path != NULL && *_path == '?')
+        {
+                *_path = '\0';
+                _path++;
+                track = atoi(_path);
+        }	
+
+	f = fopen(path2, "rb");
+	cache_cue_file(f);
+	fclose(f);
+
+	real_ip = input_check_file(cue_file, FALSE);
+
+	if (real_ip != NULL)
+		real_ip->play_file(cue_file);
+
+	free_cue_info();
+}
+
 InputPlugin *get_iplugin_info(void)
 {
 	cue_ip.description = g_strdup_printf("Cuesheet Container Plugin");
@@ -131,6 +171,8 @@
 	cue_performer = NULL;
 	g_free(cue_title);
 	cue_title = NULL;
+	g_free(cue_file);
+	cue_file = NULL;
 	for (; last_cue_track > 0; last_cue_track--) {
 		g_free(cue_tracks[last_cue_track-1].performer);
 		g_free(cue_tracks[last_cue_track-1].title);