From 6af47542f618e6de6803d8d54726915309c14bf5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 3 Oct 2025 14:40:22 +0000 Subject: [PATCH] graphs: Create macros to write less code Signed-off-by: Michael Tremer --- src/daemon/graphs/conntrack.c | 91 ++++++------------------- src/daemon/graphs/graph.h | 38 +++++++---- src/daemon/graphs/loadavg.c | 125 +++++++--------------------------- 3 files changed, 71 insertions(+), 183 deletions(-) diff --git a/src/daemon/graphs/conntrack.c b/src/daemon/graphs/conntrack.c index 3eaf1ba..429fd02 100644 --- a/src/daemon/graphs/conntrack.c +++ b/src/daemon/graphs/conntrack.c @@ -47,77 +47,26 @@ static int conntrack_render(collecty_ctx* ctx, if (r < 0) return r; - // Draw the maximum line - r = collecty_args_push(args, - DRAW_WITH_LABEL("LINE1", "max", LIMIT, DASHES SKIPSCALE), _("Limit")); - if (r < 0) - return r; - - // Show the current limit - r = collecty_args_push(args, PRINT_LARGE_INTEGER("max_cur")); - if (r < 0) - return r; - - // Add an empty column - r = collecty_args_push(args, PRINT_NOTHING); - if (r < 0) - return r; - - // Add an empty column - r = collecty_args_push(args, PRINT_NOTHING); - if (r < 0) - return r; - - // Add an empty column - r = collecty_args_push(args, PRINT_NOTHING EOL); - if (r < 0) - return r; - - // Draw the main area - r = collecty_args_push(args, DRAW_WITH_LABEL("AREA", "count", GREEN), _("Entries")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_cur")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_avg")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_min")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_LARGE_INTEGER("count_max") EOL); - if (r < 0) - return r; - - // Add an empty line - r = collecty_args_push(args, EMPTY_COLUMN); - if (r < 0) - return r; - - // Add the headline for the "Current" column - r = collecty_args_push(args, HEADER, _("Current")); - if (r < 0) - return r; - - // Add the headline for the "Average" column - r = collecty_args_push(args, HEADER, _("Average")); - if (r < 0) - return r; - - // Add the headline for the "Minimum" column - r = collecty_args_push(args, HEADER, _("Minimum")); - if (r < 0) - return r; - - // Add the headline for the "Maximum" column - r = collecty_args_push(args, HEADER EOL, _("Maximum")); - if (r < 0) - return r; + // Limit + DRAW_WITH_LABEL(args, "LINE1", "max", LIMIT, _("Limit"), DASHES SKIPSCALE); + PRINT_LARGE_INTEGER(args, "max_cur"); + PRINT_NOTHING(args); + PRINT_NOTHING(args); + PRINT_NOTHING(args, EOL); + + // Entries + DRAW_WITH_LABEL(args, "AREA", "count", GREEN, _("Entries")); + PRINT_LARGE_INTEGER(args, "count_cur"); + PRINT_LARGE_INTEGER(args, "count_avg"); + PRINT_LARGE_INTEGER(args, "count_min"); + PRINT_LARGE_INTEGER(args, "count_max", EOL); + + // Header + PRINT_EMPTY_LABEL(args); + PRINT_HEADER(args, _("Current")); + PRINT_HEADER(args, _("Average")); + PRINT_HEADER(args, _("Minimum")); + PRINT_HEADER(args, _("Maximum"), EOL); return 0; } diff --git a/src/daemon/graphs/graph.h b/src/daemon/graphs/graph.h index dabbfa5..04b033a 100644 --- a/src/daemon/graphs/graph.h +++ b/src/daemon/graphs/graph.h @@ -35,8 +35,20 @@ // Include utils #include "../util.h" -#define HEADER "COMMENT:" COLUMN -#define EMPTY_COLUMN "COMMENT: " +#define SCRIPT(args, def) \ + do { \ + int __r = collecty_args_push(args, def); \ + if (__r < 0) \ + return __r; \ + } while(0) + +#define SCRIPT_WITH_LABEL(args, def, label) \ + do { \ + int __r = collecty_args_push(args, def, label); \ + if (__r < 0) \ + return __r; \ + } while (0) + #define EMPTY_LINE "COMMENT: \\n" // Labels are 30 characters wide @@ -53,22 +65,24 @@ #define EOL "\\j" // Draw a LINE, AREA, etc. -#define DRAW(what, field, color, ...) \ - what ":" field color __VA_ARGS__ +#define DRAW(args, what, field, color, ...) \ + SCRIPT(args, what ":" field color __VA_ARGS__) -#define DRAW_WITH_LABEL(what, field, color, ...) \ - DRAW(what, field, color) ":" LABEL __VA_ARGS__ +#define DRAW_WITH_LABEL(args, what, field, color, label, ...) \ + SCRIPT_WITH_LABEL(args, what ":" field color ":" LABEL __VA_ARGS__, label) // Modifiers for lines #define DASHES ":dashes" #define SKIPSCALE ":skipscale" // Add something to the legend of the graph -#define PRINT(field, ...) "GPRINT:" field ":" __VA_ARGS__ -#define PRINT_NOTHING "COMMENT: " -#define PRINT_INTEGER(field) PRINT(field, INTEGER) -#define PRINT_LARGE_INTEGER(field) PRINT(field, LARGE_INTEGER) -#define PRINT_FLOAT(field) PRINT(field, FLOAT) -#define PRINT_LARGE_FLOAT(field) PRINT(field, LARGE_FLOAT) +#define PRINT(args, field, ...) SCRIPT(args, "GPRINT:" field ":" __VA_ARGS__) +#define PRINT_HEADER(args, label, ...) SCRIPT_WITH_LABEL(args, "COMMENT:" COLUMN __VA_ARGS__, label) +#define PRINT_EMPTY_LABEL(args, ...) SCRIPT(args, "COMMENT: " __VA_ARGS__) +#define PRINT_NOTHING(args, ...) SCRIPT(args, "COMMENT: " __VA_ARGS__) +#define PRINT_INTEGER(args, field, ...) PRINT(args, field, INTEGER __VA_ARGS__) +#define PRINT_LARGE_INTEGER(args, field, ...) PRINT(args, field, LARGE_INTEGER __VA_ARGS__) +#define PRINT_FLOAT(args, field, ...) PRINT(args, field, FLOAT __VA_ARGS__) +#define PRINT_LARGE_FLOAT(args, field, ...) PRINT(args, field, LARGE_FLOAT __VA_ARGS__) #endif /* COLLECTY_GRAPHS_GRAPH_H */ diff --git a/src/daemon/graphs/loadavg.c b/src/daemon/graphs/loadavg.c index 3520f9c..25080a3 100644 --- a/src/daemon/graphs/loadavg.c +++ b/src/daemon/graphs/loadavg.c @@ -43,110 +43,35 @@ static int loadavg_render(collecty_ctx* ctx, return r; // Add 15-minute load average - r = collecty_args_push(args, - DRAW("AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P))); - if (r < 0) - return r; - - r = collecty_args_push(args, - DRAW_WITH_LABEL("LINE1", "load15", COLOR_LOAD15), _("15 Minutes")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load15_cur")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load15_avg")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load15_min")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load15_max") EOL); - if (r < 0) - return r; + DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD15, OPACITY_25P)); + DRAW_WITH_LABEL(args, "LINE1", "load15", COLOR_LOAD15, _("15 Minutes")); + PRINT_FLOAT(args, "load15_cur"); + PRINT_FLOAT(args, "load15_avg"); + PRINT_FLOAT(args, "load15_min"); + PRINT_FLOAT(args, "load15_max", EOL); // Add 5-minute load average - r = collecty_args_push(args, - DRAW("AREA", "load5", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P))); - if (r < 0) - return r; - - r = collecty_args_push(args, - DRAW_WITH_LABEL("LINE1", "load5", COLOR_LOAD5), _("5 Minutes")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load5_cur")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load5_avg")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load5_min")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load5_max") EOL); - if (r < 0) - return r; + DRAW(args, "AREA", "load15", COLOR_WITH_ALPHA(COLOR_LOAD5, OPACITY_25P)); + DRAW_WITH_LABEL(args, "LINE1", "load5", COLOR_LOAD5, _("5 Minutes")); + PRINT_FLOAT(args, "load5_cur"); + PRINT_FLOAT(args, "load5_avg"); + PRINT_FLOAT(args, "load5_min"); + PRINT_FLOAT(args, "load5_max", EOL); // Add 1-minute load average - r = collecty_args_push(args, - DRAW("AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P))); - if (r < 0) - return r; - - r = collecty_args_push(args, - DRAW_WITH_LABEL("LINE1", "load1", COLOR_LOAD1), _("1 Minute")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load1_cur")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load1_avg")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load1_min")); - if (r < 0) - return r; - - r = collecty_args_push(args, PRINT_FLOAT("load1_max") EOL); - if (r < 0) - return r; - - // Add an empty line - r = collecty_args_push(args, EMPTY_COLUMN); - if (r < 0) - return r; - - // Add the headline for the "Current" column - r = collecty_args_push(args, HEADER, _("Current")); - if (r < 0) - return r; - - // Add the headline for the "Average" column - r = collecty_args_push(args, HEADER, _("Average")); - if (r < 0) - return r; - - // Add the headline for the "Minimum" column - r = collecty_args_push(args, HEADER, _("Minimum")); - if (r < 0) - return r; - - // Add the headline for the "Maximum" column - r = collecty_args_push(args, HEADER EOL, _("Maximum")); - if (r < 0) - return r; + DRAW(args, "AREA", "load1", COLOR_WITH_ALPHA(COLOR_LOAD1, OPACITY_25P)); + DRAW_WITH_LABEL(args, "LINE1", "load1", COLOR_LOAD1, _("1 Minute")); + PRINT_FLOAT(args, "load1_cur"); + PRINT_FLOAT(args, "load1_avg"); + PRINT_FLOAT(args, "load1_min"); + PRINT_FLOAT(args, "load1_max", EOL); + + // Header + PRINT_EMPTY_LABEL(args); + PRINT_HEADER(args, _("Current")); + PRINT_HEADER(args, _("Average")); + PRINT_HEADER(args, _("Minimum")); + PRINT_HEADER(args, _("Maximum"), EOL); return 0; } -- 2.47.3