]> git.itanic.dy.fi Git - rrdd/commitdiff
parser: Add support for a script parser
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Fri, 11 Mar 2011 21:16:51 +0000 (23:16 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Fri, 11 Mar 2011 21:16:51 +0000 (23:16 +0200)
This parser will simply run some command and assume the command writes
the rrd tool data as is to stdout.

Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
parser.c
parser.h

index 9ebb4cde66129ae53cf041fb05ce76641e4b76d1..fe16aa8dc934fc79eac3d038c2f924aaae784a5c 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -157,3 +157,21 @@ int digitemp_parser_mod(char *data, void *p)
 
        return ret;
 }
+
+/* Run a command and feed the output from stdout directly to rrdtool */
+int script_parser(char *rrd_data, void *parser_data)
+{
+       FILE *readf;
+       char **cmd = parser_data;
+       int pid, ret;
+
+       pid = run_piped_stream(cmd[0], &cmd[1], NULL, &readf, NULL);
+       ret = fread(rrd_data, RRD_DATA_MAX_LEN, 1, readf);
+
+       pr_info("Read :%s\n", rrd_data);
+       fclose(readf);
+
+       harvest_zombies(pid);
+
+       return 0;
+}
index ecabb447327df3746d9042dfe8813a3f53a03948..a7ad7f05087116f69f87387351327ed68ed657af 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -8,5 +8,6 @@ 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);
 
 #endif