From: Frantisek Sumsal Date: Thu, 7 Dec 2023 09:52:40 +0000 (+0100) Subject: shared: highlight directives when dumping configs X-Git-Tag: v256-rc1~1545^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=22b0b7bfbf3374fb6fb0414c40798816e3edb11d;p=thirdparty%2Fsystemd.git shared: highlight directives when dumping configs We already highlight sections and "de-highlight" comments, so let's add the last piece of the puzzle and highlight the configuration directives to visually distinguish them from the values. Closes: #13416 --- diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c index 2833063d4c1..cb1ac2bb768 100644 --- a/src/shared/pretty-print.c +++ b/src/shared/pretty-print.c @@ -213,7 +213,7 @@ static int cat_file(const char *filename, bool newline, CatFlags flags) { break; LineType line_type = classify_line_type(line, flags); - if (flags & CAT_TLDR) { + if (FLAGS_SET(flags, CAT_TLDR)) { if (line_type == LINE_SECTION) { /* The start of a section, let's not print it yet. */ free_and_replace(section, line); @@ -236,6 +236,28 @@ static int cat_file(const char *filename, bool newline, CatFlags flags) { } } + /* Highlight the left side (directive) of a Foo=bar assignment */ + if (FLAGS_SET(flags, CAT_FORMAT_HAS_SECTIONS) && line_type == LINE_NORMAL) { + const char *p = strchr(line, '='); + if (p) { + _cleanup_free_ char *highlighted = NULL, *directive = NULL; + + directive = strndup(line, p - line); + if (!directive) + return log_oom(); + + highlighted = strjoin(ansi_highlight_green(), + directive, + "=", + ansi_normal(), + p + 1); + if (!highlighted) + return log_oom(); + + free_and_replace(line, highlighted); + } + } + printf("%s%s%s\n", line_type == LINE_SECTION ? ansi_highlight_cyan() : line_type == LINE_COMMENT ? ansi_highlight_grey() :