File zgrep.diff of Package gzip

--- zgrep.in
+++ zgrep.in
@@ -102,13 +102,36 @@
 fi
 
 if test $# -eq 0; then
-  gzip -cdfq | $grep $opt "$pat"
-  exit $?
+  if type -p dd        > /dev/null 2>&1 &&
+    type -p mimencode > /dev/null 2>&1 &&
+    type -p file      > /dev/null 2>&1
+  then
+    uncompress=gzip
+    x=`dd bs=20 count=1 2> /dev/null | mimencode -b`
+    case `echo -n $x | mimencode -u -b | file -b -` in
+      bzip2*)
+	uncompress=bzip2
+	;;
+    esac
+    (echo -n $x | mimencode -u -b; cat -) | $uncompress -cdfq | $grep $opt "$pat"
+    exit $?
+  else
+    gzip -cdfq | $grep $opt "$pat"
+    exit $?
+  fi
 fi
 
 res=0
 for i do
-  gzip -cdfq -- "$i" |
+  case $i in
+    *.bz2)
+      uncompress=bzip2
+      ;;
+    *)
+      uncompress=gzip
+      ;;
+  esac
+  $uncompress -cdfq "$i" |
     if test $files_with_matches -eq 1; then
       $grep $opt "$pat" > /dev/null && printf '%s\n' "$i"
     elif test $files_without_matches -eq 1; then
openSUSE Build Service is sponsored by