7 #define ARGSTR_LEN 32768
9 #define RRDTOOL_CMD "/usr/bin/rrdtool"
12 * Add new argument to a argument list
14 * args pointer list to arguments
15 * argcnt argument counter
16 * argstr array where the actual arguments are stored
17 * idx index in the argstr where the new argument will be appended
19 #define add_arg(args, argcnt, argstr, idx, fmt, arg...) \
20 args[argcnt] = argstr + idx; \
21 idx += sprintf(argstr + idx, fmt, ##arg); \
25 int rrdtool_draw_image(struct rrd_image *image)
27 char cmd[] = RRDTOOL_CMD;
28 // char cmd[] = "echo";
29 char *args[512], argstr[ARGSTR_LEN];
30 int idx = 0, argcnt = 0, i,j;
35 strftime(tmp, 256, "%d.%m.%Y %T (%Z) ", localtime(&t));
36 for (i = 0, j = 0; j < 256;) {
38 timestamp[j++] = '\\';
40 timestamp[j++] = tmp[i++];
47 add_arg(args, argcnt, argstr, idx, " ");
48 add_arg(args, argcnt, argstr, idx, "graph");
49 add_arg(args, argcnt, argstr, idx, "%s", image->image_filename);
51 add_arg(args, argcnt, argstr, idx, "--start");
52 add_arg(args, argcnt, argstr, idx, "%s", image->timestart);
53 add_arg(args, argcnt, argstr, idx, "--end");
54 add_arg(args, argcnt, argstr, idx, "%s", image->timeend);
55 add_arg(args, argcnt, argstr, idx, "--width");
56 add_arg(args, argcnt, argstr, idx, "%d", image->width);
57 add_arg(args, argcnt, argstr, idx, "--height");
58 add_arg(args, argcnt, argstr, idx, "%d", image->height);
59 add_arg(args, argcnt, argstr, idx, "--imgformat");
60 add_arg(args, argcnt, argstr, idx, "%s", image->imageformat);
62 for (i = 0; image->options[i]; i++) {
63 add_arg(args, argcnt, argstr, idx, "%s", image->options[i]);
66 for (i = 0; image->text[i]; i++) {
67 args[argcnt++] = image->text[i];
70 add_arg(args, argcnt, argstr, idx, "COMMENT:Last update %s\\c", timestamp);
79 int rrdtool_draw_images(struct rrd_image **image)
82 for (i = 0; image[i]; i++)
83 rrdtool_draw_image(image[i]);
88 int rrdtool_update_data(struct rrd_database *rrd)
91 char cmd[] = RRDTOOL_CMD;
92 // char cmd[] = "echo";
102 rrd->last_update = time(0);
106 l = sprintf(data, "N:");
109 rrd->parse(data + l);
114 rrdtool_draw_images(rrd->images);
116 while (harvest_zombies(0));