diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-07-19 21:05:07 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-07-19 21:13:08 -0400 |
commit | 4e6029435111adcad71489aca2dd68bc65aeffd4 (patch) | |
tree | 07ce83808e399ad2ad63bad9a568863bd6f755ef /src/journal/journalctl.c | |
parent | be8f4a9fa732d61e845e1ab1a62ac3a6b368d3a7 (diff) |
journalctl,man: allow + only between terms
https://bugzilla.redhat.com/show_bug.cgi?id=1110712
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r-- | src/journal/journalctl.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 92e8286334..7aedbf0c57 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -699,15 +699,20 @@ static int generate_new_id128(void) { static int add_matches(sd_journal *j, char **args) { char **i; + bool have_term = false; assert(j); STRV_FOREACH(i, args) { int r; - if (streq(*i, "+")) + if (streq(*i, "+")) { + if (!have_term) + break; r = sd_journal_add_disjunction(j); - else if (path_is_absolute(*i)) { + have_term = false; + + } else if (path_is_absolute(*i)) { _cleanup_free_ char *p, *t = NULL, *t2 = NULL; const char *path; _cleanup_free_ char *interpreter = NULL; @@ -756,8 +761,12 @@ static int add_matches(sd_journal *j, char **args) { r = sd_journal_add_match(j, t, 0); if (t2) r = sd_journal_add_match(j, t2, 0); - } else + have_term = true; + + } else { r = sd_journal_add_match(j, *i, 0); + have_term = true; + } if (r < 0) { log_error("Failed to add match '%s': %s", *i, strerror(-r)); @@ -765,6 +774,11 @@ static int add_matches(sd_journal *j, char **args) { } } + if (!strv_isempty(args) && !have_term) { + log_error("\"+\" can only be used between terms"); + return -EINVAL; + } + return 0; } |