]> git.cworth.org Git - gzip/blobdiff - zgrep.in
Imported Debian patch 1.3.5-14
[gzip] / zgrep.in
index 9ddb55738e1150e0138015e988b57c6f02d63ec3..cac4863f4270881138aa3c2a599dd884246172ac 100755 (executable)
--- a/zgrep.in
+++ b/zgrep.in
@@ -107,7 +107,24 @@ for i do
       else
        sed_script="s|^|${i}:|"
       fi
-      $grep $opt "$pat" | sed "$sed_script"
+      # Hack adapted from GPLed code at
+      # http://home.comcast.net/~j.p.h/cus-faq-2
+      # Has the same effect as the following two lines of bash:
+      #
+      # $grep $opt "$pat" | sed "$sed_script"
+      # exit ${PIPESTATUS[0]}
+      #
+      # Inside the `...`, fd4 goes to the pipe whose other end is read
+      # and passed to eval; fd1 is the normal standard output
+      # preserved the line before with exec 3>&1
+      exec 3>&1
+      eval `
+      exec 4>&1 >&3 3>&-
+      {
+       $grep $opt "$pat" 4>&-; echo "r=$?;" >&4
+      } | sed "$sed_script"
+      `
+      exit $r
     fi
   r=$?
   test $res -lt $r && res=$r