db->images[i]->width = width;
db->images[i]->height = height;
strncpy(db->images[i]->timestart, timestart,
- sizeof(db->images[i]->timestart));
+ sizeof(db->images[i]->timestart) - 1);
strncpy(db->images[i]->timeend, timeend,
- sizeof(db->images[i]->timeend));
+ sizeof(db->images[i]->timeend) - 1);
strncpy(db->images[i]->imageformat, imageformat,
- sizeof(db->images[i]->imageformat));
+ sizeof(db->images[i]->imageformat) - 1);
db->images[i]->options = options;
db->images[i]->text_lead = text_lead;
db->images[i]->text = text;
return 0;
}
-static int (*str_to_parser(const char *str))(char *rrd_data, const char **parser_data)
-{
- if (!str)
- return NULL;
-
- if (!strcmp(str, "cpu"))
- return cpu_parser;
-
- if (!strcmp(str, "mem"))
- return mem_parser;
-
- if (!strcmp(str, "cpu_mem"))
- return cpu_mem_parser;
-
- if (!strcmp(str, "digitemp"))
- return digitemp_parser;
-
- if (!strcmp(str, "digitemp_mod"))
- return digitemp_parser_mod;
-
- if (!strcmp(str, "script"))
- return script_parser;
-
- if (!strcmp(str, "netstats"))
- return netstats_parser;
-
- if (!strcmp(str, "onewire"))
- return onewire_parser;
-
- return NULL;
-}
-
static int parse_data_sources(config_setting_t *rrd, struct rrd_database *db)
{
config_setting_t *list, *group;
config_setting_t *list, *str_list;
const char *name, *parser = NULL, *filename, **parser_data;
const char **pre_draw_cmd;
+ const char **post_draw_cmd;
+ const char *logfile = NULL, *logfile_timestamp_fmt = NULL;
if (!config_setting_lookup_string(rrd, "name", &name)) {
pr_err("Database entry does not contain name\n");
pr_info("parsing database %s\n", name);
db->name = strdup(name);
- if (!config_setting_lookup_string(rrd, "filename", &filename)) {
+ if (!config_setting_lookup_string(rrd, "filename", &filename))
pr_err("Database %s does not contain filename\n", db->name);
- return -1;
- }
+
db->filename = strdup(filename);
if (!config_setting_lookup_int(rrd, "interval", &db->interval)) {
/* Parser is not a mandatory parameter */
config_setting_lookup_string(rrd, "parser", &parser);
- db->parse = str_to_parser(parser);
+ db->parser = str_to_parser(parser);
list = config_setting_get_member(rrd, "image");
parse_images(list, db);
db->pre_draw_cmd = (char *const *)pre_draw_cmd;
}
+ str_list = config_setting_get_member(rrd, "post_draw_cmd");
+ if (str_list) {
+ read_strings_from_list(str_list, &post_draw_cmd);
+ db->post_draw_cmd = (char *const *)post_draw_cmd;
+ }
+
+ config_setting_lookup_string(rrd, "logfile", &logfile);
+ if (logfile)
+ db->logfile = strdup(logfile);
+
+ config_setting_lookup_string(rrd, "logfile_timestamp_fmt",
+ &logfile_timestamp_fmt);
+ if (logfile_timestamp_fmt)
+ db->logfile_timestamp_fmt = strdup(logfile_timestamp_fmt);
+
+
return 0;
}