diff options
-rw-r--r-- | man/journalctl.xml | 13 | ||||
-rw-r--r-- | src/journal/journalctl.c | 22 |
2 files changed, 21 insertions, 14 deletions
diff --git a/man/journalctl.xml b/man/journalctl.xml index 83ddf5c3d6..50c915d590 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -161,11 +161,14 @@ <listitem><para>Controls the number of journal lines to show, counting from - the most recent ones. Takes a positive - integer argument. In follow mode - defaults to 10, otherwise is unset - thus not limiting how many lines are - shown.</para></listitem> + the most recent ones. The argument is + optional, and if specified is a + positive integer. If not specified and + in follow mode defaults to 10. If this + option is not passed and follow mode + is not enabled, how many lines are + shown is not + limited.</para></listitem> </varlistentry> <varlistentry> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 8e52dd522b..6b580d4307 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -87,7 +87,7 @@ static int help(void) { " --no-pager Do not pipe output into a pager\n" " -a --all Show all fields, including long and unprintable\n" " -f --follow Follow journal\n" - " -n --lines=INTEGER Journal entries to show\n" + " -n --lines[=INTEGER] Number of 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,\n" " verbose, export, json, json-pretty, cat)\n" @@ -133,7 +133,7 @@ static int parse_argv(int argc, char *argv[]) { { "follow", no_argument, NULL, 'f' }, { "output", required_argument, NULL, 'o' }, { "all", no_argument, NULL, 'a' }, - { "lines", required_argument, NULL, 'n' }, + { "lines", optional_argument, NULL, 'n' }, { "no-tail", no_argument, NULL, ARG_NO_TAIL }, { "new-id128", no_argument, NULL, ARG_NEW_ID128 }, { "quiet", no_argument, NULL, 'q' }, @@ -155,7 +155,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hfo:an:qmbD:p:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hfo:an::qmbD:p:", options, NULL)) >= 0) { switch (c) { @@ -178,7 +178,7 @@ static int parse_argv(int argc, char *argv[]) { break; case 'o': - arg_output = output_mode_from_string(optarg); + arg_output = output_mode_from_string(optarg); if (arg_output < 0) { log_error("Unknown output '%s'.", optarg); return -EINVAL; @@ -191,11 +191,15 @@ static int parse_argv(int argc, char *argv[]) { break; case 'n': - r = safe_atoi(optarg, &arg_lines); - if (r < 0 || arg_lines < 0) { - log_error("Failed to parse lines '%s'", optarg); - return -EINVAL; - } + if (optarg) { + r = safe_atoi(optarg, &arg_lines); + if (r < 0 || arg_lines < 0) { + log_error("Failed to parse lines '%s'", optarg); + return -EINVAL; + } + } else + arg_lines = 10; + break; case ARG_NO_TAIL: |