From cb91deaf77018e035b065edce9ebc88ba817347c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 May 2018 11:28:33 -0700 Subject: [PATCH] terminal-util: add a function that shows a pretty separator line Follow-up for #8824 --- src/analyze/analyze.c | 5 +---- src/basic/terminal-util.c | 22 ++++++++++++++++++++++ src/basic/terminal-util.h | 2 ++ src/test/test-terminal-util.c | 2 ++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index c1b5aca7e2a..5e1766b0536 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -1322,10 +1322,7 @@ static int cat_config(int argc, char *argv[], void *userdata) { const char *t = NULL; if (arg != argv + 1) - printf("%s%*s%s\n\n", - ansi_underline(), - columns(), "", - ansi_normal()); + print_separator(); if (path_is_absolute(*arg)) { const char *dir; diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 7f18d3d35cf..fa90a466d21 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1418,3 +1418,25 @@ int cat_files(const char *file, char **dropins, CatFlags flags) { return 0; } + +void print_separator(void) { + + /* Outputs a separator line that resolves to whitespace when copied from the terminal. We do that by outputting + * one line filled with spaces with ANSI underline set, followed by a second (empty) line. */ + + if (underline_enabled()) { + size_t i, c; + + c = columns(); + + flockfile(stdout); + fputs_unlocked(ANSI_UNDERLINE, stdout); + + for (i = 0; i < c; i++) + fputc_unlocked(' ', stdout); + + fputs_unlocked(ANSI_NORMAL "\n\n", stdout); + funlockfile(stdout); + } else + fputs("\n\n", stdout); +} diff --git a/src/basic/terminal-util.h b/src/basic/terminal-util.h index ea7eb2d63b5..798bab6c266 100644 --- a/src/basic/terminal-util.h +++ b/src/basic/terminal-util.h @@ -166,3 +166,5 @@ typedef enum CatFlags { } CatFlags; int cat_files(const char *file, char **dropins, CatFlags flags); + +void print_separator(void); diff --git a/src/test/test-terminal-util.c b/src/test/test-terminal-util.c index 61a3ea5e56f..216c8bef002 100644 --- a/src/test/test-terminal-util.c +++ b/src/test/test-terminal-util.c @@ -94,5 +94,7 @@ int main(int argc, char *argv[]) { test_terminal_urlify(); test_cat_files(); + print_separator(); + return 0; } -- 2.47.3