summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f64802f)
raw | patch | inline | side by side (parent: f64802f)
author | Sebastian Harl <sh@tokkee.org> | |
Sun, 20 Jan 2008 21:14:23 +0000 (22:14 +0100) | ||
committer | Florian Forster <octo@huhu.verplant.org> | |
Mon, 21 Jan 2008 13:43:45 +0000 (14:43 +0100) |
The "TypesDB" config option now accepts more than one filename. Each file will
be read in the specified order. If no filename has been given, the default
file will _not_ be read (I doubt this is a useful feature but it's imho the
most reasonable behavior).
This may, for example, be used to specify an additional file containing custom
data-set definitions. See the thread "Thought about exec and types.db" on the
mailing-list ([1]).
[1] http://mailman.verplant.org/pipermail/collectd/2008-January/001450.html
Signed-off-by: Sebastian Harl <sh@tokkee.org>
Signed-off-by: Florian Forster <octo@huhu.verplant.org>
be read in the specified order. If no filename has been given, the default
file will _not_ be read (I doubt this is a useful feature but it's imho the
most reasonable behavior).
This may, for example, be used to specify an additional file containing custom
data-set definitions. See the thread "Thought about exec and types.db" on the
mailing-list ([1]).
[1] http://mailman.verplant.org/pipermail/collectd/2008-January/001450.html
Signed-off-by: Sebastian Harl <sh@tokkee.org>
Signed-off-by: Florian Forster <octo@huhu.verplant.org>
diff --git a/src/collectd.c b/src/collectd.c
index 70223b7dde98d58ac872a4b5a69efdfea83d447a..c9ae66dd550cf8373ded07b341e2964991143b50 100644 (file)
--- a/src/collectd.c
+++ b/src/collectd.c
#include "plugin.h"
#include "configfile.h"
-#include "types_list.h"
/*
* Global variables
}
#endif
- read_types_list ();
plugin_init_all ();
return (0);
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index 021d193664238f225e4f3070c7e2adba757017cd..7e416b4fe071fc6da85d896350c31fb85bc531b8 100644 (file)
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
Path to the plugins (shared objects) of collectd.
-=item B<TypesDB> I<File>
+=item B<TypesDB> I<File> [I<File> ...]
-Set the file that contains the data-set descriptions.
+Set one or more files that contain the data-set descriptions.
=item B<Interval> I<Seconds>
diff --git a/src/configfile.c b/src/configfile.c
index 867338d23aa8697ec03c01be90c502e9614e1591..706e2d137968ad44e8796d078ef12b86cc26b5aa 100644 (file)
--- a/src/configfile.c
+++ b/src/configfile.c
#include "common.h"
#include "plugin.h"
#include "configfile.h"
+#include "types_list.h"
#include "utils_threshold.h"
#define ESCAPE_NULL(str) ((str) == NULL ? "(null)" : (str))
/*
* Prototypes of callback functions
*/
+static int dispatch_value_typesdb (const oconfig_item_t *ci);
static int dispatch_value_plugindir (const oconfig_item_t *ci);
static int dispatch_value_loadplugin (const oconfig_item_t *ci);
static cf_value_map_t cf_value_map[] =
{
+ {"TypesDB", dispatch_value_typesdb},
{"PluginDir", dispatch_value_plugindir},
{"LoadPlugin", dispatch_value_loadplugin}
};
{"Hostname", NULL, NULL},
{"FQDNLookup", NULL, "false"},
{"Interval", NULL, "10"},
- {"ReadThreads", NULL, "5"},
- {"TypesDB", NULL, PLUGINDIR"/types.db"} /* FIXME: Configure path */
+ {"ReadThreads", NULL, "5"}
};
static int cf_global_options_num = STATIC_ARRAY_LEN (cf_global_options);
+static int cf_default_typesdb = 1;
+
/*
* Functions to handle register/unregister, search, and other plugin related
* stuff
return (-1);
} /* int dispatch_global_option */
+static int dispatch_value_typesdb (const oconfig_item_t *ci)
+{
+ int i = 0;
+
+ assert (strcasecmp (ci->key, "TypesDB") == 0);
+
+ cf_default_typesdb = 0;
+
+ if (ci->values_num < 1)
+ return (-1);
+
+ for (i = 0; i < ci->values_num; ++i)
+ {
+ if (OCONFIG_TYPE_STRING != ci->values[i].type)
+ continue;
+
+ read_types_list (ci->values[i].value.string);
+ }
+ return (0);
+} /* int dispatch_value_typesdb */
+
static int dispatch_value_plugindir (const oconfig_item_t *ci)
{
assert (strcasecmp (ci->key, "PluginDir") == 0);
dispatch_block (conf->children + i);
}
+ if (cf_default_typesdb)
+ read_types_list (PLUGINDIR"/types.db"); /* FIXME: Configure path */
return (0);
} /* int cf_read */
diff --git a/src/types_list.c b/src/types_list.c
index 002761ce3e7a76568df04612058d1492825595d2..43e87902efda3a0c54dc056dfc0e5e8b9ed8d157 100644 (file)
--- a/src/types_list.c
+++ b/src/types_list.c
} /* while (fgets) */
} /* void parse_file */
-int read_types_list (void)
+int read_types_list (const char *file)
{
- const char *file;
FILE *fh;
- file = global_option_get ("TypesDB");
if (file == NULL)
- {
- ERROR ("global_option_get (\"TypesDB\") returned NULL.");
return (-1);
- }
fh = fopen (file, "r");
if (fh == NULL)
diff --git a/src/types_list.h b/src/types_list.h
index c7e6aa0edfba05834991713770b9bdb19e7bc4d6..8fe6ce8282c2fe1c4954c5370c5e1626fd88a8af 100644 (file)
--- a/src/types_list.h
+++ b/src/types_list.h
* Florian octo Forster <octo at verplant.org>
**/
-int read_types_list (void);
+int read_types_list (const char *file);
#endif /* TYPES_LIST_H */