From: Lennart Poettering Date: Fri, 13 Jan 2012 01:58:45 +0000 (+0100) Subject: journal: add output mode that just prints simple messages without any decorations X-Git-Tag: v39~65 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=d3f2bdbfee94a4cd124b66e610f4b926b749e192 journal: add output mode that just prints simple messages without any decorations --- diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index b2ebc7a49..4d9864729 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -57,7 +57,8 @@ static int help(void) { " -f --follow Follow journal\n" " -n --lines=INTEGER Journal entries to show\n" " --no-tail Show all lines, even in follow mode\n" - " -o --output=STRING Change journal output mode (short, short-monotonic, verbose, export, json)\n" + " -o --output=STRING Change journal output mode (short, short-monotonic,\n" + " verbose, export, json, cat)\n" " --new-id128 Generate a new 128 Bit id\n", program_invocation_short_name); diff --git a/src/logs-show.c b/src/logs-show.c index 8d728a66d..8d1c77e5c 100644 --- a/src/logs-show.c +++ b/src/logs-show.c @@ -488,12 +488,34 @@ static int output_json(sd_journal *j, unsigned line, bool show_all) { return 0; } +static int output_cat(sd_journal *j, unsigned line, bool show_all) { + const void *data; + size_t l; + int r; + + assert(j); + + r = sd_journal_get_data(j, "MESSAGE", &data, &l); + if (r < 0) { + log_error("Failed to get data: %s", strerror(-r)); + return r; + } + + assert(l >= 8); + + fwrite((const char*) data + 8, 1, l - 8, stdout); + putchar('\n'); + + return 0; +} + static int (*output_funcs[_OUTPUT_MODE_MAX])(sd_journal*j, unsigned line, bool show_all) = { [OUTPUT_SHORT] = output_short_realtime, [OUTPUT_SHORT_MONOTONIC] = output_short_monotonic, [OUTPUT_VERBOSE] = output_verbose, [OUTPUT_EXPORT] = output_export, - [OUTPUT_JSON] = output_json + [OUTPUT_JSON] = output_json, + [OUTPUT_CAT] = output_cat }; int output_journal(sd_journal *j, OutputMode mode, unsigned line, bool show_all) { @@ -636,7 +658,8 @@ static const char *const output_mode_table[_OUTPUT_MODE_MAX] = { [OUTPUT_SHORT_MONOTONIC] = "short-monotonic", [OUTPUT_VERBOSE] = "verbose", [OUTPUT_EXPORT] = "export", - [OUTPUT_JSON] = "json" + [OUTPUT_JSON] = "json", + [OUTPUT_CAT] = "cat" }; DEFINE_STRING_TABLE_LOOKUP(output_mode, OutputMode); diff --git a/src/logs-show.h b/src/logs-show.h index 2158a44ce..abb82c8aa 100644 --- a/src/logs-show.h +++ b/src/logs-show.h @@ -34,6 +34,7 @@ typedef enum OutputMode { OUTPUT_VERBOSE, OUTPUT_EXPORT, OUTPUT_JSON, + OUTPUT_CAT, _OUTPUT_MODE_MAX, _OUTPUT_MODE_INVALID = -1 } OutputMode; diff --git a/src/systemctl.c b/src/systemctl.c index dfdbd1d63..b72fcbf80 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -3979,7 +3979,8 @@ static int systemctl_help(void) { " --runtime Enable unit files only temporarily until next reboot\n" " -n --lines=INTEGER Journal entries to show\n" " --follow Follow journal\n" - " -o --output=STRING Change journal output mode (short, short-monotonic, verbose, export, json)\n\n" + " -o --output=STRING Change journal output mode (short, short-monotonic,\n" + " verbose, export, json, cat)\n\n" "Unit Commands:\n" " list-units List loaded units\n" " start [NAME...] Start (activate) one or more units\n"