]> git.itanic.dy.fi Git - rrdd/blobdiff - config.c
onewire_parser.c: Fix compiler warnings about string lengths
[rrdd] / config.c
index 2e28c3337ab34ac793a9dda2d8e8f3f3a66fb227..83242033d6958c329d51c219c92c29c683839a2d 100644 (file)
--- a/config.c
+++ b/config.c
@@ -129,11 +129,11 @@ static int parse_images(config_setting_t *list, struct rrd_database *db)
                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;
@@ -145,38 +145,6 @@ static int parse_images(config_setting_t *list, struct rrd_database *db)
        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;
@@ -264,6 +232,8 @@ static int parse_database(config_setting_t *rrd, struct rrd_database *db)
        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");
@@ -273,10 +243,9 @@ static int parse_database(config_setting_t *rrd, struct rrd_database *db)
        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)) {
@@ -286,7 +255,7 @@ static int parse_database(config_setting_t *rrd, struct rrd_database *db)
 
        /* 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);
@@ -305,6 +274,22 @@ static int parse_database(config_setting_t *rrd, struct rrd_database *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;
 }