diff options
author | Max Kellermann <max@duempel.org> | 2012-08-08 08:46:16 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-08-08 09:28:13 +0200 |
commit | dc2fa246a946aa7ce9bdf7ad82cc18ebae05a76d (patch) | |
tree | 4e0a1e48b3e35196e09e1524a4f60ce406a535ce /src/DatabaseGlue.cxx | |
parent | b46bb611b331869734c687394b8d0a516052798e (diff) | |
download | mpd-dc2fa246a946aa7ce9bdf7ad82cc18ebae05a76d.tar.gz mpd-dc2fa246a946aa7ce9bdf7ad82cc18ebae05a76d.tar.xz mpd-dc2fa246a946aa7ce9bdf7ad82cc18ebae05a76d.zip |
DatabaseGlue: look up the database plugin
No more hard-coded "simple" plugin.
Diffstat (limited to '')
-rw-r--r-- | src/DatabaseGlue.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/DatabaseGlue.cxx b/src/DatabaseGlue.cxx index 370a264a6..7f6d28b70 100644 --- a/src/DatabaseGlue.cxx +++ b/src/DatabaseGlue.cxx @@ -19,6 +19,7 @@ #include "config.h" #include "DatabaseGlue.hxx" +#include "DatabaseRegistry.hxx" extern "C" { #include "database.h" @@ -56,7 +57,16 @@ db_init(const struct config_param *param, GError **error_r) assert(db == NULL); assert(!db_is_open); - db = simple_db_plugin.create(param, error_r); + const char *plugin_name = + config_get_block_string(param, "plugin", "simple"); + const DatabasePlugin *plugin = GetDatabasePluginByName(plugin_name); + if (plugin == NULL) { + g_set_error(error_r, db_quark(), 0, + "No such database plugin: %s", plugin_name); + return false; + } + + db = plugin->create(param, error_r); return db != NULL; } |