From 22b0b7bfbf3374fb6fb0414c40798816e3edb11d Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 7 Dec 2023 10:52:40 +0100 Subject: [PATCH] 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 --- src/shared/pretty-print.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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() : -- 2.47.3