diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/logs-show.c | 26 | ||||
-rw-r--r-- | src/shared/logs-show.h | 3 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 36cce73550..cb93761bd1 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -34,6 +34,26 @@ #define PRINT_THRESHOLD 128 #define JSON_THRESHOLD 4096 +static int print_catalog(FILE *f, sd_journal *j) { + int r; + _cleanup_free_ char *t = NULL, *z = NULL; + + + r = sd_journal_get_catalog(j, &t); + if (r < 0) + return r; + + z = strreplace(strstrip(t), "\n", "\n-- "); + if (!z) + return log_oom(); + + fputs("-- ", f); + fputs(z, f); + fputc('\n', f); + + return 0; +} + static int parse_field(const void *data, size_t length, const char *field, char **target, size_t *target_size) { size_t fl, nl; void *buf; @@ -265,6 +285,9 @@ static int output_short( } else fputs("\n", f); + if (flags & OUTPUT_CATALOG) + print_catalog(f, j); + return 0; } @@ -322,6 +345,9 @@ static int output_verbose( fprintf(f, "\t%.*s\n", (int) length, (const char*) data); } + if (flags & OUTPUT_CATALOG) + print_catalog(f, j); + return 0; } diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index 06082800c8..11cb41aab3 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -45,7 +45,8 @@ typedef enum OutputFlags { OUTPUT_FOLLOW = 1 << 1, OUTPUT_WARN_CUTOFF = 1 << 2, OUTPUT_FULL_WIDTH = 1 << 3, - OUTPUT_COLOR = 1 << 4 + OUTPUT_COLOR = 1 << 4, + OUTPUT_CATALOG = 1 << 5 } OutputFlags; int output_journal( |