aboutsummaryrefslogtreecommitdiff
path: root/src/DatabaseGlue.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2012-08-08 08:46:16 +0200
committerMax Kellermann <max@duempel.org>2012-08-08 09:28:13 +0200
commitdc2fa246a946aa7ce9bdf7ad82cc18ebae05a76d (patch)
tree4e0a1e48b3e35196e09e1524a4f60ce406a535ce /src/DatabaseGlue.cxx
parentb46bb611b331869734c687394b8d0a516052798e (diff)
DatabaseGlue: look up the database plugin
No more hard-coded "simple" plugin.
Diffstat (limited to 'src/DatabaseGlue.cxx')
-rw-r--r--src/DatabaseGlue.cxx12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/DatabaseGlue.cxx b/src/DatabaseGlue.cxx
index 370a264a..7f6d28b7 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;
}