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.
This commit is contained in:
Lasse Collin 2014-06-11 20:43:28 +03:00
parent 98d3368ef4
commit 64228d0d5c
1 changed files with 13 additions and 2 deletions

View File

@ -147,7 +147,9 @@ if test $# -eq 0; then
fi fi
exec 3>&1 exec 3>&1
res=0
# res=1 means that no file matched yet
res=1
for i; do for i; do
case $i in case $i in
@ -194,8 +196,17 @@ for i; do
fi >&3 5>&- fi >&3 5>&-
) )
r=$? r=$?
# fail occured previously, nothing worse can happen
test $res -gt 1 && continue
test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \ test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \
|| test "$(kill -l "$xz_status" 2> /dev/null)" = "PIPE" || r=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 done
exit $res exit $res