aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--src/input_init.c75
-rw-r--r--src/input_init.h35
-rw-r--r--src/input_stream.c51
-rw-r--r--src/input_stream.h10
-rw-r--r--src/main.c2
-rw-r--r--test/dump_playlist.c1
-rw-r--r--test/read_tags.c1
-rw-r--r--test/run_decoder.c1
-rw-r--r--test/run_input.c1
10 files changed, 117 insertions, 62 deletions
diff --git a/Makefile.am b/Makefile.am
index d4cf31178..735a58109 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -91,6 +91,7 @@ mpd_headers = \
src/decoder/flac_pcm.h \
src/decoder/_flac_common.h \
src/decoder/_ogg_common.h \
+ src/input_init.h \
src/input_plugin.h \
src/input_registry.h \
src/input_stream.h \
@@ -570,6 +571,7 @@ INPUT_LIBS = \
$(MMS_LIBS)
INPUT_SRC = \
+ src/input_init.c \
src/input_registry.c \
src/input_stream.c \
src/input/file_input_plugin.c
diff --git a/src/input_init.c b/src/input_init.c
new file mode 100644
index 000000000..5f45de5c7
--- /dev/null
+++ b/src/input_init.c
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2003-2009 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#include "input_init.h"
+#include "input_plugin.h"
+#include "input_registry.h"
+#include "conf.h"
+
+#include <string.h>
+
+/**
+ * Find the "input" configuration block for the specified plugin.
+ *
+ * @param plugin_name the name of the input plugin
+ * @return the configuration block, or NULL if none was configured
+ */
+static const struct config_param *
+input_plugin_config(const char *plugin_name)
+{
+ const struct config_param *param = NULL;
+
+ while ((param = config_get_next_param(CONF_INPUT, param)) != NULL) {
+ const char *name =
+ config_get_block_string(param, "plugin", NULL);
+ if (name == NULL)
+ g_error("input configuration without 'plugin' name in line %d",
+ param->line);
+
+ if (strcmp(name, plugin_name) == 0)
+ return param;
+ }
+
+ return NULL;
+}
+
+void input_stream_global_init(void)
+{
+ for (unsigned i = 0; input_plugins[i] != NULL; ++i) {
+ const struct input_plugin *plugin = input_plugins[i];
+ const struct config_param *param =
+ input_plugin_config(plugin->name);
+
+ if (!config_get_block_bool(param, "enabled", true))
+ /* the plugin is disabled in mpd.conf */
+ continue;
+
+ if (plugin->init == NULL || plugin->init(param))
+ input_plugins_enabled[i] = true;
+ }
+}
+
+void input_stream_global_finish(void)
+{
+ for (unsigned i = 0; input_plugins[i] != NULL; ++i)
+ if (input_plugins_enabled[i] &&
+ input_plugins[i]->finish != NULL)
+ input_plugins[i]->finish();
+}
diff --git a/src/input_init.h b/src/input_init.h
new file mode 100644
index 000000000..6266a84fb
--- /dev/null
+++ b/src/input_init.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2003-2009 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef MPD_INPUT_INIT_H
+#define MPD_INPUT_INIT_H
+
+#include "check.h"
+
+/**
+ * Initializes this library and all input_stream implementations.
+ */
+void input_stream_global_init(void);
+
+/**
+ * Deinitializes this library and all input_stream implementations.
+ */
+void input_stream_global_finish(void);
+
+#endif
diff --git a/src/input_stream.c b/src/input_stream.c
index 7df8efd7f..54ea1c995 100644
--- a/src/input_stream.c
+++ b/src/input_stream.c
@@ -21,60 +21,9 @@
#include "input_stream.h"
#include "input_registry.h"
#include "input_plugin.h"
-#include "conf.h"
#include <glib.h>
#include <assert.h>
-#include <string.h>
-
-/**
- * Find the "input" configuration block for the specified plugin.
- *
- * @param plugin_name the name of the input plugin
- * @return the configuration block, or NULL if none was configured
- */
-static const struct config_param *
-input_plugin_config(const char *plugin_name)
-{
- const struct config_param *param = NULL;
-
- while ((param = config_get_next_param(CONF_INPUT, param)) != NULL) {
- const char *name =
- config_get_block_string(param, "plugin", NULL);
- if (name == NULL)
- g_error("input configuration without 'plugin' name in line %d",
- param->line);
-
- if (strcmp(name, plugin_name) == 0)
- return param;
- }
-
- return NULL;
-}
-
-void input_stream_global_init(void)
-{
- for (unsigned i = 0; input_plugins[i] != NULL; ++i) {
- const struct input_plugin *plugin = input_plugins[i];
- const struct config_param *param =
- input_plugin_config(plugin->name);
-
- if (!config_get_block_bool(param, "enabled", true))
- /* the plugin is disabled in mpd.conf */
- continue;
-
- if (plugin->init == NULL || plugin->init(param))
- input_plugins_enabled[i] = true;
- }
-}
-
-void input_stream_global_finish(void)
-{
- for (unsigned i = 0; input_plugins[i] != NULL; ++i)
- if (input_plugins_enabled[i] &&
- input_plugins[i]->finish != NULL)
- input_plugins[i]->finish();
-}
bool
input_stream_open(struct input_stream *is, const char *url)
diff --git a/src/input_stream.h b/src/input_stream.h
index a617632a0..63327c137 100644
--- a/src/input_stream.h
+++ b/src/input_stream.h
@@ -76,16 +76,6 @@ struct input_stream {
};
/**
- * Initializes this library and all input_stream implementations.
- */
-void input_stream_global_init(void);
-
-/**
- * Deinitializes this library and all input_stream implementations.
- */
-void input_stream_global_finish(void);
-
-/**
* Opens a new input stream. You may not access it until the "ready"
* flag is set.
*
diff --git a/src/main.c b/src/main.c
index c74ffdb14..1408f0a59 100644
--- a/src/main.c
+++ b/src/main.c
@@ -44,7 +44,7 @@
#include "permission.h"
#include "replay_gain.h"
#include "decoder_list.h"
-#include "input_stream.h"
+#include "input_init.h"
#include "playlist_list.h"
#include "state_file.h"
#include "tag.h"
diff --git a/test/dump_playlist.c b/test/dump_playlist.c
index 75baf6c87..af8a3a512 100644
--- a/test/dump_playlist.c
+++ b/test/dump_playlist.c
@@ -18,6 +18,7 @@
*/
#include "config.h"
+#include "input_init.h"
#include "input_stream.h"
#include "tag_pool.h"
#include "tag_save.h"
diff --git a/test/read_tags.c b/test/read_tags.c
index cde90dad7..4a4829824 100644
--- a/test/read_tags.c
+++ b/test/read_tags.c
@@ -20,6 +20,7 @@
#include "config.h"
#include "decoder_list.h"
#include "decoder_api.h"
+#include "input_init.h"
#include "input_stream.h"
#include "audio_format.h"
#include "pcm_volume.h"
diff --git a/test/run_decoder.c b/test/run_decoder.c
index 47cab2aac..ec6ef9f8a 100644
--- a/test/run_decoder.c
+++ b/test/run_decoder.c
@@ -20,6 +20,7 @@
#include "config.h"
#include "decoder_list.h"
#include "decoder_api.h"
+#include "input_init.h"
#include "input_stream.h"
#include "audio_format.h"
#include "pcm_volume.h"
diff --git a/test/run_input.c b/test/run_input.c
index 09cd6f6c6..6aba41e8c 100644
--- a/test/run_input.c
+++ b/test/run_input.c
@@ -18,6 +18,7 @@
*/
#include "config.h"
+#include "input_init.h"
#include "input_stream.h"
#include "tag_pool.h"
#include "tag_save.h"