changeset 3340:a0c93cb34598 trunk

Add functions for custom uri support of input plugins
author Christian Birchinger <joker@netswarm.net>
date Sun, 12 Aug 2007 20:18:04 +0200
parents c23513d0ee17
children 3da640de0e99
files src/audacious/Makefile src/audacious/custom_uri.c src/audacious/custom_uri.h src/audacious/plugin.h
diffstat 4 files changed, 98 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/audacious/Makefile	Sun Aug 12 17:23:21 2007 +0200
+++ b/src/audacious/Makefile	Sun Aug 12 20:18:04 2007 +0200
@@ -36,6 +36,7 @@
 HEADERS = \
 	auddrct.h \
 	configdb.h \
+	custom_uri.h \
 	dbus.h \
 	eventqueue.h \
 	formatter.h \
@@ -67,6 +68,7 @@
 	auddrct.c \
 	build_stamp.c \
 	configdb.c \
+	custom_uri.c \
 	discovery.c \
 	dnd.c \
 	dock.c \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/audacious/custom_uri.c	Sun Aug 12 20:18:04 2007 +0200
@@ -0,0 +1,59 @@
+/*
+ * Audacious
+ * Copyright (c) 2007 William Pitcock
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; under version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses>.
+ *
+ * The Audacious team does not consider modular code linking to
+ * Audacious or using our public API to be a derived work.
+ */
+
+#include "custom_uri.h"
+
+mowgli_dictionary_t *uri_type_dict = NULL;
+
+void uri_set_plugin(const gchar *uri, InputPlugin *ip)
+{
+    g_return_if_fail(uri != NULL);
+    g_return_if_fail(ip != NULL);
+
+    if (uri_type_dict == NULL)
+        uri_type_dict = mowgli_dictionary_create(strcasecmp);
+    else if (mowgli_dictionary_find(uri_type_dict, uri))
+        mowgli_dictionary_delete(uri_type_dict, uri);
+    mowgli_dictionary_add(uri_type_dict, uri, ip);
+}
+
+InputPlugin *uri_get_plugin(const gchar *filename)
+{
+    gchar *uri, *pos;
+    InputPlugin *ip;
+
+    if (filename == NULL)
+        return NULL;
+
+    if (uri_type_dict == NULL)
+        return NULL;
+
+    pos = strstr(filename, "://");
+    if (pos)
+        uri = g_strndup(filename, pos - filename + 3);
+    else
+        return NULL;
+
+    ip = mowgli_dictionary_retrieve(uri_type_dict, uri);
+ 
+    g_free(uri);
+    
+    return ip;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/audacious/custom_uri.h	Sun Aug 12 20:18:04 2007 +0200
@@ -0,0 +1,36 @@
+/*
+ * Audacious
+ * Copyright (c) 2007 William Pitcock
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; under version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses>.
+ *
+ * The Audacious team does not consider modular code linking to
+ * Audacious or using our public API to be a derived work.
+ */
+
+#include <glib.h>
+#include <mowgli.h>
+
+#include <audacious/plugin.h>
+
+#ifndef __AUDACIOUS_CUSTOM_URI_H__
+#define __AUDACIOUS_CUSTOM_URI_H__
+
+G_BEGIN_DECLS
+
+InputPlugin *uri_get_plugin(const gchar *filename);
+void uri_set_plugin(const gchar *uri, InputPlugin *ip);
+
+G_END_DECLS
+
+#endif
--- a/src/audacious/plugin.h	Sun Aug 12 17:23:21 2007 +0200
+++ b/src/audacious/plugin.h	Sun Aug 12 20:18:04 2007 +0200
@@ -329,5 +329,6 @@
 G_END_DECLS
 
 #include "audacious/mime.h"
+#include "audacious/custom_uri.h"
 
 #endif