1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-27 10:25:06 +03:00

journalctl: Allow to disable line cap with --lines=all

This commit is contained in:
Jan Janssen 2014-08-31 11:12:22 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 8e07fc41f8
commit 4838248766
2 changed files with 30 additions and 25 deletions

View File

@ -189,9 +189,9 @@
that the pager will not buffer logs of
unbounded size. This may be overridden
with an explicit <option>-n</option>
with some other numeric value on the
command line. Note that this option is
only supported for the
with some other numeric value while
<option>-nall</option> will disable this cap.
Note that this option is only supported for the
<citerefentry project='man-pages'><refentrytitle>less</refentrytitle><manvolnum>1</manvolnum></citerefentry>
pager.</para></listitem>
</varlistentry>
@ -204,9 +204,10 @@
journal events and limit the number of
events shown. If
<option>--follow</option> is used,
this option is implied. The argument,
a positive integer, is optional, and
defaults to 10. </para></listitem>
this option is implied. The argument is
a positive integer or <literal>all</literal>
to disable line limiting. The default value is
10 if no argument is given.</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -68,7 +68,7 @@ static bool arg_follow = false;
static bool arg_full = true;
static bool arg_all = false;
static bool arg_no_pager = false;
static int arg_lines = -1;
static int arg_lines = -2;
static bool arg_no_tail = false;
static bool arg_quiet = false;
static bool arg_merge = false;
@ -327,7 +327,7 @@ static int parse_argv(int argc, char *argv[]) {
case 'e':
arg_pager_end = true;
if (arg_lines < 0)
if (arg_lines < -1)
arg_lines = 1000;
break;
@ -366,29 +366,33 @@ static int parse_argv(int argc, char *argv[]) {
case 'n':
if (optarg) {
r = safe_atoi(optarg, &arg_lines);
if (r < 0 || arg_lines < 0) {
log_error("Failed to parse lines '%s'", optarg);
return -EINVAL;
if (streq(optarg, "all"))
arg_lines = -1;
else {
r = safe_atoi(optarg, &arg_lines);
if (r < 0 || arg_lines < 0) {
log_error("Failed to parse lines '%s'", optarg);
return -EINVAL;
}
}
} else {
int n;
arg_lines = 10;
/* Hmm, no argument? Maybe the next
* word on the command line is
* supposed to be the argument? Let's
* see if there is one, and is
* parsable as a positive
* integer... */
if (optind < argc &&
safe_atoi(argv[optind], &n) >= 0 &&
n >= 0) {
arg_lines = n;
optind++;
} else
arg_lines = 10;
* parsable. */
if (optind < argc) {
int n;
if (streq(argv[optind], "all")) {
arg_lines = -1;
optind++;
} else if (safe_atoi(argv[optind], &n) >= 0 && n >= 0) {
arg_lines = n;
optind++;
}
}
}
break;
@ -642,7 +646,7 @@ static int parse_argv(int argc, char *argv[]) {
assert_not_reached("Unhandled option");
}
if (arg_follow && !arg_no_tail && arg_lines < 0)
if (arg_follow && !arg_no_tail && arg_lines < -1)
arg_lines = 10;
if (!!arg_directory + !!arg_file + !!arg_machine > 1) {