index 25c9404108bef0b61cd0274829bccf539b2762aa..31bfd9bae4375c8ad86507615a010acee09e0943 100644 (file)
*/
static sdb_time_t default_interval = 0;
+static char *plugin_dir = NULL;
/*
* private helper functions
return config_get_interval(ci, &default_interval);
} /* daemon_set_interval */
+static int
+daemon_set_plugindir(oconfig_item_t *ci)
+{
+ if (oconfig_get_string(ci, &plugin_dir)) {
+ sdb_log(SDB_LOG_ERR, "config: PluginDir requires a single "
+ "string argument\n"
+ "\tUsage: PluginDir DIR");
+ return ERR_INVALID_ARG;
+ }
+ plugin_dir = strdup(plugin_dir);
+ return 0;
+} /* daemon_set_plugindir */
+
static int
daemon_load_plugin(oconfig_item_t *ci)
{
}
/* returns a negative value on error */
- return sdb_plugin_load(name, NULL);
+ return sdb_plugin_load(plugin_dir, name, NULL);
} /* daemon_load_plugin */
static int
{
sdb_plugin_ctx_t ctx = SDB_PLUGIN_CTX_INIT;
- char plugin_name[1024];
+ char plugin_name[1024];
char *name;
int i;
}
}
- return sdb_plugin_load(plugin_name, &ctx);
+ return sdb_plugin_load(plugin_dir, plugin_name, &ctx);
} /* daemon_load_backend */
static int
daemon_configure_plugin(oconfig_item_t *ci)
{
+ char plugin_name[1024];
char *name;
assert(ci);
return ERR_INVALID_ARG;
}
- return sdb_plugin_configure(name, ci);
+ if (!strcasecmp(ci->key, "Backend"))
+ snprintf(plugin_name, sizeof(plugin_name), "Backend::%s", name);
+ else
+ strncpy(plugin_name, name, sizeof(plugin_name));
+ return sdb_plugin_configure(plugin_name, ci);
} /* daemon_configure_backend */
static token_parser_t token_parser_list[] = {
{ "Listen", daemon_add_listener },
{ "Interval", daemon_set_interval },
+ { "PluginDir", daemon_set_plugindir },
{ "LoadPlugin", daemon_load_plugin },
{ "LoadBackend", daemon_load_backend },
{ "Backend", daemon_configure_plugin },
oconfig_free(ci);
free(ci);
+
+ if (plugin_dir) {
+ free(plugin_dir);
+ plugin_dir = NULL;
+ }
return retval;
} /* daemon_parse_config */