index 95276264ae104174c2fde573560cc0bf700253cb..992801d2be80d559b5fcf5f41e6046ac1ad6e1e0 100644 (file)
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
#include "tools/sysdbd/configfile.h"
#include "sysdb.h"
*/
static sdb_time_t default_interval = 0;
+static char *plugin_dir = NULL;
/*
* private helper functions
return -1;
}
- tmp[listen_addresses_num] = strdup(address);
- if (! tmp[listen_addresses_num]) {
+ listen_addresses = tmp;
+ listen_addresses[listen_addresses_num] = strdup(address);
+ if (! listen_addresses[listen_addresses_num]) {
char buf[1024];
sdb_log(SDB_LOG_ERR, "config: Failed to allocate memory: %s",
sdb_strerror(errno, buf, sizeof(buf)));
return -1;
}
- listen_addresses = tmp;
++listen_addresses_num;
return 0;
} /* daemon_add_listener */
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
}
}
- return sdb_plugin_load(plugin_name, &ctx);
+ return sdb_plugin_load(plugin_dir, plugin_name, &ctx);
} /* daemon_load_backend */
static int
if (oconfig_get_string(ci, &name)) {
sdb_log(SDB_LOG_ERR, "config: %s requires a single "
"string argument\n"
- "\tUsage: LoadBackend BACKEND",
- ci->key);
+ "\tUsage: <%s NAME>...</%s>",
+ ci->key, ci->key, ci->key);
return ERR_INVALID_ARG;
}
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 },
* public API
*/
+void
+daemon_free_listen_addresses(void)
+{
+ size_t i;
+
+ if (! listen_addresses)
+ return;
+
+ for (i = 0; i < listen_addresses_num; ++i)
+ free(listen_addresses[i]);
+ free(listen_addresses);
+
+ listen_addresses = NULL;
+ listen_addresses_num = 0;
+} /* daemon_free_listen_addresses */
+
int
daemon_parse_config(const char *filename)
{
retval = status;
}
}
+
+ oconfig_free(ci);
+ free(ci);
+
+ if (plugin_dir) {
+ free(plugin_dir);
+ plugin_dir = NULL;
+ }
return retval;
} /* daemon_parse_config */