From f6e932e0fde3713e1bb21ca343f236975adb9ca8 Mon Sep 17 00:00:00 2001 From: Peter Oberparleiter Date: Fri, 21 Jun 2024 11:23:44 +0200 Subject: [PATCH] libutil: Make formatted meta-data configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Output generated using libutil's util_fmt_*() functions contains meta-data such as hostname and time of invocation. When writing test cases that compare expected and actual tool output, this run-time variable information needs to be filtered out, resulting in increased complexity. To address this, add a global option to suppress meta-data output via environment variable FMT_NOMETA. If set to '1', no meta-data will be generated. Example: $ FMT_NOMETA=1 chpstat --format json Reviewed-by: Steffen Eiden Reviewed-by: Jan Höppner Signed-off-by: Peter Oberparleiter Signed-off-by: Steffen Eiden --- libutil/util_fmt.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libutil/util_fmt.c b/libutil/util_fmt.c index 4e40fae2..c7d78ea9 100644 --- a/libutil/util_fmt.c +++ b/libutil/util_fmt.c @@ -710,6 +710,14 @@ static void csv_map(struct obj_t *UNUSED(obj), unsigned int mflags, free(qval); } +static bool hide_meta_env(void) +{ + char *v; + + v = secure_getenv("FMT_NOMETA"); + return (v && strcmp(v, "1") == 0); +} + void util_fmt_init(FILE *fd, enum util_fmt_t type, unsigned int flags, int api_level) { @@ -719,7 +727,7 @@ void util_fmt_init(FILE *fd, enum util_fmt_t type, unsigned int flags, f.fileno = fileno(fd); f.hide_prefix = (flags & FMT_NOPREFIX); f.hide_inval = !(flags & FMT_KEEPINVAL); - f.hide_meta = (flags & FMT_NOMETA); + f.hide_meta = (flags & FMT_NOMETA) || hide_meta_env(); f.quote_all = (flags & FMT_QUOTEALL); f.do_filter = (flags & FMT_FILTER); f.do_warn = (flags & FMT_WARN);