From 6cfacc778c11565adc5af75cfa4579c1b6925c93 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 15 Feb 2009 18:35:19 +0100 Subject: decoder_list: added configuration block "decoder" The "decoder" configuration block may contain the configuration of one decoder plugin. --- src/decoder_list.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/decoder_list.c') diff --git a/src/decoder_list.c b/src/decoder_list.c index f0cf8625b..a644a6370 100644 --- a/src/decoder_list.c +++ b/src/decoder_list.c @@ -20,6 +20,7 @@ #include "decoder_plugin.h" #include "utils.h" #include "config.h" +#include "conf.h" #include @@ -185,12 +186,39 @@ void decoder_plugin_print_all_decoders(FILE * fp) fflush(fp); } +/** + * Find the "decoder" configuration block for the specified plugin. + * + * @param plugin_name the name of the decoder plugin + * @return the configuration block, or NULL if none was configured + */ +static const struct config_param * +decoder_plugin_config(const char *plugin_name) +{ + const struct config_param *param = NULL; + + while ((param = config_get_next_param(CONF_DECODER, param)) != NULL) { + const char *name = + config_get_block_string(param, "plugin", NULL); + if (name == NULL) + g_error("decoder configuration without 'plugin' name in line %d", + param->line); + + if (strcmp(name, plugin_name) == 0) + return param; + } + + return NULL; +} + void decoder_plugin_init_all(void) { for (unsigned i = 0; i < num_decoder_plugins; ++i) { const struct decoder_plugin *plugin = decoder_plugins[i]; + const struct config_param *param = + decoder_plugin_config(plugin->name); - if (decoder_plugin_init(plugin, NULL)) + if (decoder_plugin_init(plugin, param)) decoder_plugins_enabled[i] = true; } } -- cgit v1.2.3