Package: grep
Version: 2.5.1.ds1-4
Severity: normal
Tags: patch

The bulk of zgrep's work is done by this loop:

for i do
  gzip -cdfq "$i" |
    if test $files_with_matches -eq 1; then
      $grep $opt "$pat" > /dev/null && echo $i
    elif test $files_without_matches -eq 1; then
      $grep $opt "$pat" > /dev/null || echo $i
    elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 
1; }; then
      $grep $opt "$pat"
    else
      i=`echo $i | sed -e 's/|/\\\\|/g'`
      if test $with_filename -eq 1; then
        sed_script="s|^[^:]*:|${i}:|"
      else
        sed_script="s|^|${i}:|"
      fi
      $grep $opt "$pat" | sed "$sed_script"
    fi
  r=$?
  test $res -lt $r && res=$r
done

If the else clause of the if is taken, then grep's return code
is lost. The patch below fixes this, assuming that /bin/sh is bash,
which I guess is safe for Debian, but perhaps not upstream. I spent
quite a while but didn't manage to find a more general fix.

--- /bin/zgrep  2004-07-24 09:30:47.000000000 +0200
+++ zgrep       2005-01-30 23:02:13.000000000 +0100
@@ -107,6 +107,7 @@
        sed_script="s|^|${i}:|"
       fi
       $grep $opt "$pat" | sed "$sed_script"
+      exit ${PIPESTATUS[0]}
     fi
   r=$?
   test $res -lt $r && res=$r

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.8
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)

Versions of packages grep depends on:
ii  libc6                       2.3.2.ds1-20 GNU C Library: Shared libraries an

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to