aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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
5 files changed, 111 insertions, 62 deletions
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"