]> git.itanic.dy.fi Git - rrdd/commitdiff
rrdtool: Add pre_draw_cmd
authorTimo Kokkonen <timo.t.kokkonen@iki.fi>
Sat, 10 Nov 2012 11:35:29 +0000 (13:35 +0200)
committerTimo Kokkonen <timo.t.kokkonen@iki.fi>
Sat, 10 Nov 2012 11:35:29 +0000 (13:35 +0200)
This is a configurable command that can be executed before drawing
images.

Right now only "shell" command is supported. This takes a set of
string arguments that are executed via execv.

Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>
config.c
rrdtool.c
rrdtool.h

index 8e9a3605eec414f5117a463877f65b908eef0df3..0754d0ae9137c1a93f603a461324d5357ee2efd7 100644 (file)
--- a/config.c
+++ b/config.c
@@ -263,6 +263,7 @@ 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;
 
        if (!config_setting_lookup_string(rrd, "name", &name)) {
                pr_err("Database entry does not contain name\n");
@@ -298,6 +299,12 @@ static int parse_database(config_setting_t *rrd, struct rrd_database *db)
                db->parser_data = parser_data;
        }
 
+       str_list = config_setting_get_member(rrd, "pre_draw_cmd");
+       if (str_list) {
+               read_strings_from_list(str_list, &pre_draw_cmd);
+               db->pre_draw_cmd = (char *const *)pre_draw_cmd;
+       }
+
        return 0;
 }
 
index f889d90eb4a4749edfeffeea61cdfa8c09e296c5..d2fd024a4fd3b2e0443644615503c5e185877ccc 100644 (file)
--- a/rrdtool.c
+++ b/rrdtool.c
@@ -231,6 +231,11 @@ int rrdtool_update_data(struct rrd_database *rrd)
                harvest_zombies(pid);
        }
 
+       if (rrd->pre_draw_cmd && !strcmp(rrd->pre_draw_cmd[0], "shell")) {
+               pid = run(rrd->pre_draw_cmd[1], &rrd->pre_draw_cmd[1]);
+               harvest_zombies(pid);
+       }
+
        if (rrd->images)
                rrdtool_draw_images(rrd->images);
 
index 4b8bc65258ceba6e5cbc5124908af445e37b08cf..fa1df3708644ca36f8a27e17edc3ce6fd339b528 100644 (file)
--- a/rrdtool.h
+++ b/rrdtool.h
@@ -40,6 +40,8 @@ struct rrd_database {
        int (*parse)(char *rrd_data, const char **parser_data);
        const char **parser_data;       /* data to be fed to the parser */
 
+       char *const *pre_draw_cmd; /* Command to execute prior drawing images*/
+
        struct  rrd_image **images; /* Images to draw */
 
        struct rrd_data_source *sources; /* These are currently only used */