summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-03-13 03:58:03 +0100
committerLennart Poettering <lennart@poettering.net>2014-03-13 04:17:37 +0100
commitea6c2dd1f819c3d481fc590849809aeb552c1d48 (patch)
tree0af9968a0317503e9ea703ddf02e96a8defb8607
parent15ef11449b31e2fc91f2172c8afedb20ecad5ae9 (diff)
systemctl: suppress duplicate newline if there's not log output in "systemctl status"
-rw-r--r--src/shared/logs-show.c20
-rw-r--r--src/shared/output-mode.h3
-rw-r--r--src/systemctl/systemctl.c3
3 files changed, 22 insertions, 4 deletions
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
index 12d4a1caec..f7d84fc723 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 9da789db76..ac1bb0123b 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 3cb10964fd..21bf51bb3e 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);
}