From 6cda6774bdd90f8496d38dcd75d9be8a12660577 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Wed, 15 May 2019 19:28:09 +0200 Subject: [PATCH] journalctl: return a non-zero EC when --grep returns no matches When journalctl is compiled with PCRE2 support, let's return a non-zero exit code when --grep is used and no match for given pattern is found. This should allow users to use journalctl --grep in scripts instead of piping journalctl into grep Fixes #8152 --- src/journal/journalctl.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 88ee4ee35f6..91a21e407fc 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -2678,8 +2678,16 @@ finish: free(arg_verify_key); #if HAVE_PCRE2 - if (arg_compiled_pattern) + if (arg_compiled_pattern) { pcre2_code_free(arg_compiled_pattern); + + /* --grep was used, no error was thrown, but the pattern didn't + * match anything. Let's mimic grep's behavior here and return + * a non-zero exit code, so journalctl --grep can be used + * in scripts and such */ + if (r == 0 && n_shown == 0) + r = -ENOENT; + } #endif return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -- 2.47.3