]> git.itanic.dy.fi Git - rrdd/commitdiff
rrdtool: Improve argument list modification macro
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Mon, 7 Mar 2011 08:24:08 +0000 (10:24 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Mon, 7 Mar 2011 08:32:57 +0000 (10:32 +0200)
The name of the macro was not very descriptive, "add_arg" describes
the functionality much better.

Instead of modifying some magic function variables, give the variables
as parameters to the macro. This makes it much more clear how the
thing actually works.

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

index af50b22838ec0886cb69d49cf387135fdb604955..82a8c6962c4f1b9511f2f5b1427952e43478ff7a 100644 (file)
--- a/rrdtool.c
+++ b/rrdtool.c
@@ -8,7 +8,15 @@
 
 #define RRDTOOL_CMD "/usr/bin/rrdtool"
 
-#define print(fmt, arg...) \
+/*
+ * Add new argument to a argument list
+ *
+ * args                pointer list to arguments
+ * argcnt      argument counter
+ * argstr      array where the actual arguments are stored
+ * idx         index in the argstr where the new argument will be appended
+ */
+#define add_arg(args, argcnt, argstr, idx, fmt, arg...)        \
        args[argcnt] = argstr + idx;                    \
        idx += sprintf(argstr + idx, fmt, ##arg);       \
        argcnt++;                                       \
@@ -36,30 +44,30 @@ int rrdtool_draw_image(struct rrd_image *image)
        timestamp[j] = 0;
 
 
-       print(" ");
-       print("graph");
-       print("%s", image->image_filename);
+       add_arg(args, argcnt, argstr, idx, " ");
+       add_arg(args, argcnt, argstr, idx, "graph");
+       add_arg(args, argcnt, argstr, idx, "%s", image->image_filename);
 
-       print("--start");
-       print("%s", image->timestart);
-       print("--end");
-       print("%s", image->timeend);
-       print("--width");
-       print("%d", image->width);
-       print("--height");
-       print("%d", image->height);
-       print("--imgformat");
-       print("%s", image->imageformat);
+       add_arg(args, argcnt, argstr, idx, "--start");
+       add_arg(args, argcnt, argstr, idx, "%s", image->timestart);
+       add_arg(args, argcnt, argstr, idx, "--end");
+       add_arg(args, argcnt, argstr, idx, "%s", image->timeend);
+       add_arg(args, argcnt, argstr, idx, "--width");
+       add_arg(args, argcnt, argstr, idx, "%d", image->width);
+       add_arg(args, argcnt, argstr, idx, "--height");
+       add_arg(args, argcnt, argstr, idx, "%d", image->height);
+       add_arg(args, argcnt, argstr, idx, "--imgformat");
+       add_arg(args, argcnt, argstr, idx, "%s", image->imageformat);
 
        for (i = 0; image->options[i]; i++) {
-               print("%s", image->options[i]);
+               add_arg(args, argcnt, argstr, idx, "%s", image->options[i]);
        }
 
        for (i = 0; image->text[i]; i++) {
                args[argcnt++] = image->text[i];
        }
 
-       print("COMMENT:Last update %s\\c", timestamp);
+       add_arg(args, argcnt, argstr, idx, "COMMENT:Last update %s\\c", timestamp);
 
        args[argcnt] = 0;