diff --git a/src/daemon/config.c b/src/daemon/config.c
index aa5cb990b8612ff446c659c2cd9137d4a25df7ff..d15081f469446ee1f3b3214b6dbe8efcdf6e7253 100644 (file)
--- a/src/daemon/config.c
+++ b/src/daemon/config.c
#include "sysdb.h"
#include "core/plugin.h"
-#include "utils/time.h"
+#include "core/error.h"
+#include "core/time.h"
#include "daemon/config.h"
assert(ci && interval);
if (oconfig_get_number(ci, &interval_dbl)) {
- fprintf(stderr, "config: Interval requires "
+ sdb_log(SDB_LOG_ERR, "config: Interval requires "
"a single numeric argument\n"
- "\tUsage: Interval SECONDS\n");
+ "\tUsage: Interval SECONDS");
return -1;
}
if (interval_dbl <= 0.0) {
- fprintf(stderr, "config: Invalid interval: %f\n"
- "\tInterval may not be less than or equal to zero.\n",
+ sdb_log(SDB_LOG_ERR, "config: Invalid interval: %f\n"
+ "\tInterval may not be less than or equal to zero.",
interval_dbl);
return -1;
}
} /* daemon_set_interval */
static int
-daemon_load_backend(oconfig_item_t *ci)
+daemon_load_plugin(oconfig_item_t *ci)
{
- char plugin_name[1024];
char *name;
+ int i;
+
+ if (oconfig_get_string(ci, &name)) {
+ sdb_log(SDB_LOG_ERR, "config: LoadPlugin requires a single "
+ "string argument\n"
+ "\tUsage: LoadPlugin PLUGIN");
+ return -1;
+ }
+
+ for (i = 0; i < ci->children_num; ++i) {
+ oconfig_item_t *child = ci->children + i;
+ /* we don't currently support any options */
+ sdb_log(SDB_LOG_WARNING, "config: Unknown option '%s' "
+ "inside 'LoadPlugin' -- see the documentation for "
+ "details.", child->key);
+ continue;
+ }
+
+ return sdb_plugin_load(name, NULL);
+} /* daemon_load_plugin */
+
+static int
+daemon_load_backend(oconfig_item_t *ci)
+{
sdb_plugin_ctx_t ctx = SDB_PLUGIN_CTX_INIT;
- sdb_plugin_ctx_t old_ctx;
- int status, i;
+ char plugin_name[1024];
+ char *name;
+
+ int i;
ctx.interval = default_interval;
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "config: LoadBackend requires a single "
+ sdb_log(SDB_LOG_ERR, "config: LoadBackend requires a single "
"string argument\n"
- "\tUsage: LoadBackend BACKEND\n");
+ "\tUsage: LoadBackend BACKEND");
return -1;
}
- snprintf(plugin_name, sizeof(plugin_name), "backend/%s", name);
+ snprintf(plugin_name, sizeof(plugin_name), "backend::%s", name);
for (i = 0; i < ci->children_num; ++i) {
oconfig_item_t *child = ci->children + i;
return -1;
}
else {
- fprintf(stderr, "config: Unknown option '%s' inside 'LoadBackend' "
- "-- see the documentation for details.\n", child->key);
- return -1;
+ sdb_log(SDB_LOG_WARNING, "config: Unknown option '%s' "
+ "inside 'LoadBackend' -- see the documentation for "
+ "details.", child->key);
+ continue;
}
}
- old_ctx = sdb_plugin_set_ctx(ctx);
- status = sdb_plugin_load(plugin_name);
- sdb_plugin_set_ctx(old_ctx);
- return status;
+ return sdb_plugin_load(plugin_name, &ctx);
} /* daemon_load_backend */
static int
assert(ci);
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "config: %s requires a single "
+ sdb_log(SDB_LOG_ERR, "config: %s requires a single "
"string argument\n"
- "\tUsage: LoadBackend BACKEND\n",
+ "\tUsage: LoadBackend BACKEND",
ci->key);
return -1;
}
static token_parser_t token_parser_list[] = {
{ "Interval", daemon_set_interval },
+ { "LoadPlugin", daemon_load_plugin },
{ "LoadBackend", daemon_load_backend },
{ "Backend", daemon_configure_plugin },
{ "Plugin", daemon_configure_plugin },
}
if (status) {
- fprintf(stderr, "config: Failed to parse option '%s'\n",
+ sdb_error_set("config: Failed to parse option '%s'\n",
child->key);
if (status > 0)
- fprintf(stderr, "\tUnknown option '%s' -- "
+ sdb_error_append("\tUnknown option '%s' -- "
"see the documentation for details\n",
child->key);
+ sdb_error_chomp();
+ sdb_error_log(SDB_LOG_ERR);
retval = -1;
}
}