From ceca37901783988204caaf40dff4623d535cc789 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 11 Jun 2014 20:43:28 +0300 Subject: [PATCH] xzgrep: exit 0 when at least one file matches. Mimic the original grep behavior and return exit_success when at least one xz compressed file matches given pattern. Original bugreport: https://bugzilla.redhat.com/show_bug.cgi?id=1108085 Thanks to Pavel Raiskup for the patch. --- src/scripts/xzgrep.in | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in index 951266b0..018915f7 100644 --- a/src/scripts/xzgrep.in +++ b/src/scripts/xzgrep.in @@ -147,7 +147,9 @@ if test $# -eq 0; then fi exec 3>&1 -res=0 + +# res=1 means that no file matched yet +res=1 for i; do case $i in @@ -195,8 +197,17 @@ for i; do fi >&3 5>&- ) r=$? + + # fail occured previously, nothing worse can happen + test $res -gt 1 && continue + test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \ || test "$(kill -l "$xz_status" 2> /dev/null)" = "PIPE" || r=2 - test $res -lt $r && res=$r + + # still no match + test $r -eq 1 && continue + + # 0 == match, >=2 == fail + res=$r done exit $res