From ea6c2dd1f819c3d481fc590849809aeb552c1d48 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 13 Mar 2014 03:58:03 +0100 Subject: [PATCH 1/1] systemctl: suppress duplicate newline if there's not log output in "systemctl status" --- src/shared/logs-show.c | 20 +++++++++++++++++++- src/shared/output-mode.h | 3 ++- src/systemctl/systemctl.c | 3 +-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 12d4a1cae..f7d84fc72 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -927,6 +927,21 @@ int output_journal( return ret; } +static int maybe_print_begin_newline(FILE *f, OutputFlags *flags) { + assert(f); + assert(flags); + + if (!(*flags & OUTPUT_BEGIN_NEWLINE)) + return 0; + + /* Print a beginning new line if that's request, but only once + * on the first line we print. */ + + fputc('\n', f); + *flags &= ~OUTPUT_BEGIN_NEWLINE; + return 0; +} + static int show_journal(FILE *f, sd_journal *j, OutputMode mode, @@ -984,6 +999,7 @@ static int show_journal(FILE *f, } line ++; + maybe_print_begin_newline(f, &flags); r = output_journal(f, j, mode, n_columns, flags, ellipsized); if (r < 0) @@ -1004,8 +1020,10 @@ static int show_journal(FILE *f, if (r < 0) goto finish; - if (r > 0 && not_before < cutoff) + if (r > 0 && not_before < cutoff) { + maybe_print_begin_newline(f, &flags); fprintf(f, "Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.\n"); + } warn_cutoff = false; } diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h index 9da789db7..ac1bb0123 100644 --- a/src/shared/output-mode.h +++ b/src/shared/output-mode.h @@ -42,5 +42,6 @@ typedef enum OutputFlags { OUTPUT_WARN_CUTOFF = 1 << 2, OUTPUT_FULL_WIDTH = 1 << 3, OUTPUT_COLOR = 1 << 4, - OUTPUT_CATALOG = 1 << 5 + OUTPUT_CATALOG = 1 << 5, + OUTPUT_BEGIN_NEWLINE = 1 << 6, } OutputFlags; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 3cb10964f..21bf51bb3 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3226,7 +3226,6 @@ static void print_status_info( } if (i->id && arg_transport == BUS_TRANSPORT_LOCAL) { - printf("\n"); show_journal_by_unit(stdout, i->id, arg_output, @@ -3234,7 +3233,7 @@ static void print_status_info( i->inactive_exit_timestamp_monotonic, arg_lines, getuid(), - flags, + flags | OUTPUT_BEGIN_NEWLINE, arg_scope == UNIT_FILE_SYSTEM, ellipsized); } -- 2.30.2