X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=zgrep.in;h=a2f4201afbfb41f065e9400868015018a5204559;hb=cf688dd1054b6f1a468cdecb831b06c19e87c816;hp=aec4a670acbd82a801ba9f6396a094f9c36a926b;hpb=60b3f4eb672a85de28ecaad47ed426f8c8fe6c32;p=debian%2Fgzip diff --git a/zgrep.in b/zgrep.in index aec4a67..a2f4201 100644 --- a/zgrep.in +++ b/zgrep.in @@ -3,8 +3,8 @@ # zgrep -- a wrapper around a grep program that decompresses files as needed # Adapted from a version sent by Charles Levert -# Copyright (C) 1998, 2001, 2002, 2006, 2007, 2009, 2010 Free Software -# Foundation +# Copyright (C) 1998, 2001-2002, 2006-2007, 2009-2015 Free Software +# Foundation, Inc. # Copyright (C) 1993 Jean-loup Gailly @@ -31,7 +31,7 @@ PATH=$bindir:$PATH grep='${GREP-'\''@GREP@'\''}' version='zgrep (gzip) @VERSION@ -Copyright (C) 2010-2012 Free Software Foundation, Inc. +Copyright (C) 2010-2015 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. @@ -42,7 +42,10 @@ usage="Usage: $0 [OPTION]... [-e] PATTERN [FILE]... Look for instances of PATTERN in the input FILEs, using their uncompressed contents if they are compressed. -OPTIONs are the same as for 'grep'. +OPTIONs are the same as for 'grep', except that the following 'grep' +options are not supported: --dereference-recursive (-R), --directories (-d), +--exclude, --exclude-from, --exclude-dir, --include, --null (-Z), +--null-data (-z), and --recursive (-r). Report bugs to ." @@ -170,7 +173,7 @@ if test $# -eq 0; then fi exec 3>&1 -res=0 +res=1 for i do @@ -214,8 +217,23 @@ do fi >&3 5>&- ) r=$? - test 128 -lt $r && exit $r - test "$gzip_status" -eq 0 || test "$gzip_status" -eq 2 || r=2 - test $res -lt $r && res=$r + + # Ignore gzip status 2, as it is just a warning. + # gzip status 1 is an error, like grep status 2. + test $gzip_status -eq 2 && gzip_status=0 + test $gzip_status -eq 1 && gzip_status=2 + + # Use the more serious of the grep and gzip statuses. + test $r -lt $gzip_status && r=$gzip_status + + # Exit immediately on software configuration error. + test 126 -le $r && exit $r + + # Accumulate the greatest status, except consider 0 to be greater than 1. + if test $r -le 1 && test $res -le 1; then + test $r -lt $res + else + test $res -lt $r + fi && res=$r done exit $res