summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/logs-show.c26
-rw-r--r--src/shared/logs-show.h3
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(