]> git.itanic.dy.fi Git - rrdd/commitdiff
Change parser parameter type
authorTimo Kokkonen <timo.t.kokkonen@iki.fi>
Sat, 23 Jun 2012 12:17:25 +0000 (15:17 +0300)
committerTimo Kokkonen <timo.t.kokkonen@iki.fi>
Sat, 23 Jun 2012 18:58:31 +0000 (21:58 +0300)
As the parser parameter is coming from the config file now and it is
defined as a list of strings there, the type of the parameter on the
parser function type should match it.

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

index 7b78e3a607c08398c0d7c0ac1c3c95966c07c37e..b10ac7e87dbd3dbb74908d3a31739b86dbe42188 100644 (file)
--- a/config.c
+++ b/config.c
@@ -135,7 +135,7 @@ 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, void *parser_data)
+static int (*str_to_parser(const char *str))(char *rrd_data, const char **parser_data)
 {
        if (!str)
                return NULL;
@@ -408,7 +408,7 @@ static void put_archive_to_list(config_setting_t *list,
        CONFIG_ADD_INT(group, setting, "rows", archive->rows);
 }
 
-static char *parser_to_str(int (*parser)(char *rrd_data, void *parser_data))
+static char *parser_to_str(int (*parser)(char *rrd_data, const char **parser_data))
 {
        if (parser == cpu_parser)
                return "cpu";
index fcc319225178f06a0cf716f754ef948211bd0acd..81cf540fcc33bd6a60092f432b9f1f137703584f 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -9,7 +9,7 @@
 
 #define STATFILE "/proc/stat"
 
-int cpu_parser(char *data, void *p)
+int cpu_parser(char *data, const char **p)
 {
        char buf[1024];
        char *str = buf;
@@ -44,7 +44,7 @@ int cpu_parser(char *data, void *p)
 
 #define MEMFILE "/proc/meminfo"
 
-int mem_parser(char *data, void *p)
+int mem_parser(char *data, const char **p)
 {
        char buf[1024], word[1024];
        int free = 0, buffered = 0, cache = 0, active = 0, inactive = 0,
@@ -104,7 +104,7 @@ int mem_parser(char *data, void *p)
        return 0;
 }
 
-int cpu_mem_parser(char *data, void *p)
+int cpu_mem_parser(char *data, const char **p)
 {
        char cpu[1024], mem[1024];
 
@@ -115,7 +115,7 @@ int cpu_mem_parser(char *data, void *p)
        return 0;
 }
 
-int digitemp_parser(char *data, void *p)
+int digitemp_parser(char *data, const char **p)
 {
        const char digitemp_cmd[] = "/usr/bin/digitemp";
        char *const digitemp_args[] = { "", "-o2", "-a", "-q", 0 };
@@ -150,7 +150,7 @@ int digitemp_parser(char *data, void *p)
        return 0;
 }
 
-int digitemp_parser_mod(char *data, void *p)
+int digitemp_parser_mod(char *data, const char **p)
 {
        char buf[1024];
        int ret;
@@ -162,11 +162,12 @@ int digitemp_parser_mod(char *data, void *p)
 }
 
 /* Run a command and feed the output from stdout directly to rrdtool */
-int script_parser(char *rrd_data, void *parser_data)
+int script_parser(char *rrd_data, const char **parser_data)
 {
        FILE *readf;
-       char **cmd = parser_data;
        int pid, ret;
+       void *tmp = parser_data;
+       char **cmd = tmp;
 
        pid = run_piped_stream(cmd[0], &cmd[1], NULL, &readf, NULL);
        ret = fread(rrd_data, RRD_DATA_MAX_LEN, 1, readf);
@@ -235,10 +236,11 @@ static int get_iface_stats(const char *iface, struct iface_stats *stat)
        return -ENODEV;
 }
 
-int netstats_parser(char *rrd_data, void *parser_data)
+int netstats_parser(char *rrd_data, const char **parser_data)
 {
        struct iface_stats stat;
-       char **iface_name = parser_data, *original = rrd_data;
+       const char **iface_name = parser_data;
+       char *original = rrd_data;
        int max_str = RRD_DATA_MAX_LEN;
        int ret;
 
index bc28d7f193a755867d85dd86d515b8b7a0d4d18f..531d4f29072912f6569414b20df226481ec5cbd7 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -3,12 +3,12 @@
 
 #define RRD_DATA_MAX_LEN       4096
 
-int cpu_parser(char *data, void *p);
-int mem_parser(char *data, void *p);
-int cpu_mem_parser(char *data, void *p);
-int digitemp_parser(char *data, void *p);
-int digitemp_parser_mod(char *data, void *p);
-int script_parser(char *rrd_data, void *parser_data);
-int netstats_parser(char *rrd_data, void *parser_data);
+int cpu_parser(char *data, const char **p);
+int mem_parser(char *data, const char **p);
+int cpu_mem_parser(char *data, const char **p);
+int digitemp_parser(char *data, const char **p);
+int digitemp_parser_mod(char *data, const char **p);
+int script_parser(char *rrd_data, const char **parser_data);
+int netstats_parser(char *rrd_data, const char **parser_data);
 
 #endif
index 57bc6589182ecc0aebf7476c83d9a03c83751793..9dda9b3621023ba90639c9c6d85c14ff30356408 100644 (file)
--- a/rrdtool.h
+++ b/rrdtool.h
@@ -36,7 +36,7 @@ struct rrd_database {
        int     interval;       /* Update interval */
 
        /* Parser to aquire data for rrd */
-       int (*parse)(char *rrd_data, void *parser_data);
+       int (*parse)(char *rrd_data, const char **parser_data);
        const char **parser_data;       /* data to be fed to the parser */
 
        struct  rrd_image **images; /* Images to draw */