X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournalctl.c;h=011a11b70baf04a7577ae239a63e6a5295136f2c;hb=59f432ea6d6d441d0af7c76c37e80730c8df473a;hp=7564c48e1f15f8e1a10b689cc5d7b4f0805f7495;hpb=fd6e88753716d8136037277c7db2196e0f979675;p=elogind.git diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 7564c48e1..011a11b70 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -19,6 +19,7 @@ along with systemd; If not, see . ***/ +#include #include #include #include @@ -33,8 +34,6 @@ #include #include #include -#include -#include #include @@ -57,7 +56,7 @@ static OutputMode arg_output = OUTPUT_SHORT; static bool arg_follow = false; -static bool arg_show_all = false; +static bool arg_all = false; static bool arg_no_pager = false; static unsigned arg_lines = 0; static bool arg_no_tail = false; @@ -87,15 +86,15 @@ static enum { static int help(void) { - printf("%s [OPTIONS...] [MATCH]\n\n" + printf("%s [OPTIONS...] [MATCHES...]\n\n" "Query the journal.\n\n" "Flags:\n" - " -c --cursor=CURSOR Start showing entries from specified cursor\n" " --since=DATE Start showing entries newer or of the specified date\n" " --until=DATE Stop showing entries older or of the specified date\n" + " -c --cursor=CURSOR Start showing entries from specified cursor\n" " -b --this-boot Show data only from current boot\n" " -u --unit=UNIT Show data only from the specified unit\n" - " -p --priority=RANGE Show only messages within the specified priority range\n\n" + " -p --priority=RANGE Show only messages within the specified priority range\n" " -f --follow Follow journal\n" " -n --lines[=INTEGER] Number of journal entries to show\n" " --no-tail Show all lines, even in follow mode\n" @@ -158,7 +157,7 @@ static int parse_argv(int argc, char *argv[]) { { "this-boot", no_argument, NULL, 'b' }, { "directory", required_argument, NULL, 'D' }, { "header", no_argument, NULL, ARG_HEADER }, - { "priority", no_argument, NULL, 'p' }, + { "priority", required_argument, NULL, 'p' }, { "setup-keys", no_argument, NULL, ARG_SETUP_KEYS }, { "interval", required_argument, NULL, ARG_INTERVAL }, { "verify", no_argument, NULL, ARG_VERIFY }, @@ -197,7 +196,6 @@ static int parse_argv(int argc, char *argv[]) { case 'f': arg_follow = true; - signal(SIGWINCH, columns_cache_reset); break; case 'o': @@ -217,7 +215,7 @@ static int parse_argv(int argc, char *argv[]) { break; case 'a': - arg_show_all = true; + arg_all = true; break; case 'n': @@ -400,21 +398,6 @@ static int parse_argv(int argc, char *argv[]) { return 1; } -static bool on_tty(void) { - static int t = -1; - - /* Note that this is invoked relatively early, before we start - * the pager. That means the value we return reflects whether - * we originally were started on a tty, not if we currently - * are. But this is intended, since we want colour and so on - * when run in our own pager. */ - - if (_unlikely_(t < 0)) - t = isatty(STDOUT_FILENO) > 0; - - return t; -} - static int generate_new_id128(void) { sd_id128_t id; int r; @@ -563,8 +546,6 @@ static int add_priorities(sd_journal *j) { if (arg_priorities & (1 << i)) { match[sizeof(match)-2] = '0' + i; - log_info("adding match %s", match); - r = sd_journal_add_match(j, match, strlen(match)); if (r < 0) { log_error("Failed to add match: %s", strerror(-r)); @@ -697,7 +678,7 @@ static int setup_keys(void) { goto finish; } - if (isatty(STDOUT_FILENO)) { + if (on_tty()) { fprintf(stderr, "\n" "The new key pair has been generated. The " ANSI_HIGHLIGHT_ON "secret sealing key" ANSI_HIGHLIGHT_OFF " has been written to\n" @@ -719,7 +700,7 @@ static int setup_keys(void) { printf("/%llx-%llx\n", (unsigned long long) n, (unsigned long long) arg_interval); - if (isatty(STDOUT_FILENO)) { + if (on_tty()) { char tsb[FORMAT_TIMESPAN_MAX], *hn; fprintf(stderr, @@ -737,9 +718,7 @@ static int setup_keys(void) { #ifdef HAVE_QRENCODE /* If this is not an UTF-8 system don't print any QR codes */ - setlocale(LC_CTYPE, ""); - - if (streq_ptr(nl_langinfo(CODESET), "UTF-8")) { + if (is_locale_utf8()) { fputs("\nTo transfer the verification key to your phone please scan the QR code below:\n\n", stderr); print_qr_code(stderr, seed, seed_size, n, arg_interval, hn, machine); } @@ -840,9 +819,9 @@ int main(int argc, char *argv[]) { bool need_seek = false; sd_id128_t previous_boot_id; bool previous_boot_id_valid = false; - bool have_pager; unsigned n_shown = 0; + setlocale(LC_ALL, ""); log_parse_environment(); log_open(); @@ -850,6 +829,8 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; + signal(SIGWINCH, columns_lines_cache_reset); + if (arg_action == ACTION_NEW_ID128) { r = generate_new_id128(); goto finish; @@ -983,8 +964,8 @@ int main(int argc, char *argv[]) { goto finish; } - on_tty(); - have_pager = !arg_no_pager && !arg_follow && pager_open(); + if (!arg_no_pager && !arg_follow) + pager_open(); if (!arg_quiet) { usec_t start, end; @@ -1047,8 +1028,8 @@ int main(int argc, char *argv[]) { } flags = - arg_show_all * OUTPUT_SHOW_ALL | - have_pager * OUTPUT_FULL_WIDTH | + arg_all * OUTPUT_SHOW_ALL | + (!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH | on_tty() * OUTPUT_COLOR; r = output_journal(stdout, j, arg_output, 0, flags);