changeset 2062:409df027cc31 trunk

[svn] - rewrite input_check_file() - make similar functions use input_check_file() instead of probing by hand
author nenolod
date Tue, 05 Dec 2006 00:31:38 -0800
parents a7fd7f5f8333
children a3ad15fb0f34
files ChangeLog audacious/input.c
diffstat 2 files changed, 51 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Dec 04 19:43:36 2006 -0800
+++ b/ChangeLog	Tue Dec 05 00:31:38 2006 -0800
@@ -1,3 +1,11 @@
+2006-12-05 03:43:36 +0000  William Pitcock <nenolod@nenolod.net>
+  revision [3125]
+  - mainwinEjectY's default value should be 89, not 88.
+  
+  trunk/audacious/widgets/skin.c |    2 +-
+  1 file changed, 1 insertion(+), 1 deletion(-)
+
+
 2006-12-05 03:24:14 +0000  William Pitcock <nenolod@nenolod.net>
   revision [3123]
   - finish documenting the libaudacious API
--- a/audacious/input.c	Mon Dec 04 19:43:36 2006 -0800
+++ b/audacious/input.c	Tue Dec 05 00:31:38 2006 -0800
@@ -399,6 +399,10 @@
  *       -- this can have very ugly effects performance wise on streams
  *
  * --nenolod, Dec 31 2005
+ *
+ * Rewritten to use NewVFS probing, semantics are still basically the same.
+ *
+ * --nenolod, Dec  5 2006
  */
 InputPlugin *
 input_check_file(const gchar * filename, gboolean show_warning)
@@ -412,28 +416,46 @@
     filename_proxy = g_strdup(filename);
     fd = vfs_fopen(filename, "rb");
 
-    for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
+    for (node = get_input_list(); node != NULL; node = g_list_next(node))
+    {
         ip = INPUT_PLUGIN(node->data);
-        if (ip && input_is_enabled(ip->filename) &&
-            (ip->is_our_file_from_vfs != NULL &&
-             (ret = ip->is_our_file_from_vfs(filename_proxy, fd) > 0) || 
-             (ip->is_our_file != NULL &&
-              (ret = ip->is_our_file(filename_proxy)) > 0))) {
-            g_free(filename_proxy);
-            vfs_fclose(fd);
-            return ip;
+
+        if (!ip || !input_is_enabled(ip->filename))
+            continue;
+
+        vfs_fseek(fd, 0, SEEK_SET);
+
+        if (ip->is_our_file_from_vfs != NULL)
+        {
+            ret = ip->is_our_file_from_vfs(filename_proxy, fd);
+
+            if (ret > 0)
+            {
+                g_free(filename_proxy);
+                vfs_fclose(fd);
+                return ip;
+            }
         }
-        else if (ret == 0)
-            vfs_fseek(fd, 0, SEEK_SET);
-	else if (ret <= -1)
+        else if (ip->is_our_file != NULL)
+        {
+            ret = ip->is_our_file(filename_proxy);
+
+            if (ret > 0)
+            {
+                g_free(filename_proxy);
+                vfs_fclose(fd);
+                return ip;
+            }
+        }
+
+	if (ret <= -1)
 	    break;
     }
 
     g_free(filename_proxy);
 
-    if (show_warning && !(ret <= -1)) {
+    if (show_warning && ret != -1)
         input_file_not_playable(filename);
-    }
 
     vfs_fclose(fd);
 
@@ -462,28 +484,14 @@
     GList *node;
     gchar *tmp = NULL, *ext;
     gchar *filename_proxy;
-    VFSFile *fd;
-    gint ret = 1;
 
     g_return_if_fail(filename != NULL);
     g_return_if_fail(title != NULL);
     g_return_if_fail(length != NULL);
 
     filename_proxy = g_strdup(filename);
-    fd = vfs_fopen(filename, "rb");
 
-    for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
-        ip = INPUT_PLUGIN(node->data);
-        if (ip && input_is_enabled(ip->filename) &&
-            (ip->is_our_file_from_vfs != NULL &&
-             (ret = ip->is_our_file_from_vfs(filename_proxy, fd) > 0) || 
-             (ip->is_our_file != NULL &&
-              (ret = ip->is_our_file(filename_proxy)) > 0))) {
-            break;
-        }
-    }
-
-    vfs_fclose(fd);
+    ip = input_check_file(filename_proxy, FALSE);
 
     if (ip && node && ip->get_song_info) {
         ip->get_song_info(filename_proxy, &tmp, length);
@@ -526,28 +534,13 @@
     GList *node;
     gchar *tmp = NULL, *ext;
     gchar *filename_proxy;
-    VFSFile *fd;
-    gint ret = 1;
 
     if (filename == NULL)
 	return NULL;
 
     filename_proxy = g_strdup(filename);
-    fd = vfs_fopen(filename, "rb");
 
-    for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
-        ip = INPUT_PLUGIN(node->data);
-        if (ip && input_is_enabled(ip->filename) &&
-            (ip->is_our_file_from_vfs != NULL &&
-             (ret = ip->is_our_file_from_vfs(filename_proxy, fd) > 0) || 
-             (ip->is_our_file != NULL &&
-              (ret = ip->is_our_file(filename_proxy)) > 0))) {
-            g_free(filename_proxy);
-            break;
-        }
-    }
-
-    vfs_fclose(fd);
+    ip = input_check_file(filename_proxy, FALSE);
 
     if (ip && node && ip->get_song_tuple)
         input = ip->get_song_tuple(filename_proxy);
@@ -649,32 +642,16 @@
     GList *node;
     InputPlugin *ip;
     gchar *filename_proxy;
-    VFSFile *fd;
-    gint ret = 1;
 
     filename_proxy = g_strdup(filename);
 
-    fd = vfs_fopen(filename, "rb");
+    ip = input_check_file(filename_proxy, FALSE);
 
-    for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
-        ip = INPUT_PLUGIN(node->data);
-        if (ip && input_is_enabled(ip->filename) &&
-            (ip->is_our_file_from_vfs != NULL &&
-             (ret = ip->is_our_file_from_vfs(filename_proxy, fd) > 0) || 
-             (ip->is_our_file != NULL &&
-              (ret = ip->is_our_file(filename_proxy)) > 0))) {
-            if (ip->file_info_box)
-                ip->file_info_box(filename_proxy);
-            else
-                input_general_file_info_box(filename, ip);
+    if (ip->file_info_box)
+        ip->file_info_box(filename_proxy);
+    else
+        input_general_file_info_box(filename, ip);
 
-            vfs_fclose(fd);
-            g_free(filename_proxy);
-            return;
-        }
-    }
-
-    vfs_fclose(fd);
     input_general_file_info_box(filename, NULL);
     g_free(filename_proxy);
 }