X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fconfigfile.c;h=4b6803ed68a398cbdff4881ad9e599b2ad9d3639;hb=1fdb04e6cb573ad06b914b9371f21ffb255b1d13;hp=a8f902fd20823f80283375b739e3563915b9a3c5;hpb=6360474f4aa35dd1a587b6148ff88a23e6155132;p=collectd.git diff --git a/src/configfile.c b/src/configfile.c index a8f902fd..4b6803ed 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -27,8 +27,6 @@ #include "common.h" #include "plugin.h" #include "configfile.h" -#include "network.h" -#include "utils_debug.h" #define ESCAPE_NULL(str) ((str) == NULL ? "(null)" : (str)) @@ -77,9 +75,12 @@ static int cf_value_map_num = STATIC_ARRAY_LEN (cf_value_map); static cf_global_option_t cf_global_options[] = { - {"BaseDir", NULL, PKGLOCALSTATEDIR}, - {"LogFile", NULL, LOGFILE}, - {"PIDFile", NULL, PIDFILE} + {"BaseDir", NULL, PKGLOCALSTATEDIR}, + {"PIDFile", NULL, PIDFILE}, + {"Hostname", NULL, NULL}, + {"Interval", NULL, "10"}, + {"ReadThreads", NULL, "5"}, + {"TypesDB", NULL, PLUGINDIR"/types.db"} /* FIXME: Configure path */ }; static int cf_global_options_num = STATIC_ARRAY_LEN (cf_global_options); @@ -110,14 +111,14 @@ static int cf_dispatch (const char *type, const char *orig_key, int ret; int i; - DBG ("type = %s, key = %s, value = %s", + DEBUG ("type = %s, key = %s, value = %s", ESCAPE_NULL(type), ESCAPE_NULL(orig_key), ESCAPE_NULL(orig_value)); if ((cf_cb = cf_search (type)) == NULL) { - syslog (LOG_WARNING, "Plugin `%s' did not register a callback.", type); + WARNING ("Plugin `%s' did not register a callback.", type); return (-1); } @@ -141,12 +142,12 @@ static int cf_dispatch (const char *type, const char *orig_key, } if (i >= cf_cb->keys_num) - syslog (LOG_WARNING, "Plugin `%s' did not register for value `%s'.", type, key); + WARNING ("Plugin `%s' did not register for value `%s'.", type, key); free (key); free (value); - DBG ("return (%i)", ret); + DEBUG ("return (%i)", ret); return (ret); } /* int cf_dispatch */ @@ -155,11 +156,18 @@ static int dispatch_global_option (const oconfig_item_t *ci) { if (ci->values_num != 1) return (-1); - if (ci->values[0].type != OCONFIG_TYPE_STRING) - return (-1); + if (ci->values[0].type == OCONFIG_TYPE_STRING) + return (global_option_set (ci->key, ci->values[0].value.string)); + else if (ci->values[0].type == OCONFIG_TYPE_NUMBER) + { + char tmp[128]; + snprintf (tmp, sizeof (tmp), "%lf", ci->values[0].value.number); + tmp[127] = '\0'; + return (global_option_set (ci->key, tmp)); + } - return (global_option_set (ci->key, ci->values[0].value.string)); -} + return (-1); +} /* int dispatch_global_option */ static int dispatch_value_plugindir (const oconfig_item_t *ci) { @@ -263,7 +271,7 @@ static int dispatch_block_plugin (oconfig_item_t *ci) if (ci->children[i].children == NULL) dispatch_value_plugin (name, ci->children + i); else - {DBG ("No nested config blocks allow for plugins. Yet.");} + {DEBUG ("No nested config blocks allow for plugins. Yet.");} } return (0); @@ -285,6 +293,8 @@ int global_option_set (const char *option, const char *value) { int i; + DEBUG ("option = %s; value = %s;", option, value); + for (i = 0; i < cf_global_options_num; i++) if (strcasecmp (cf_global_options[i].key, option) == 0) break; @@ -292,8 +302,7 @@ int global_option_set (const char *option, const char *value) if (i >= cf_global_options_num) return (-1); - if (cf_global_options[i].value != NULL) - free (cf_global_options[i].value); + sfree (cf_global_options[i].value); if (value != NULL) cf_global_options[i].value = strdup (value); @@ -336,7 +345,7 @@ void cf_unregister (const char *type) free (this); break; } -} +} /* void cf_unregister */ void cf_register (const char *type, int (*callback) (const char *, const char *), @@ -368,7 +377,7 @@ int cf_read (char *filename) conf = oconfig_parse_file (filename); if (conf == NULL) { - syslog (LOG_ERR, "Unable to read config file %s.", filename); + ERROR ("Unable to read config file %s.", filename); return (-1); }