]> git.cworth.org Git - gzip/blobdiff - zgrep.in
Imported Debian patch 1.3.5-10
[gzip] / zgrep.in
index b91330d3c1a61c529e471ca07e21d2464ab3b519..73fc149107a994d18400d3d4aace4415f6d72a36 100755 (executable)
--- a/zgrep.in
+++ b/zgrep.in
@@ -4,7 +4,7 @@
 # zgrep -- a wrapper around a grep program that decompresses files as needed
 # Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
 
-# Copyright (C) 1998, 2001 Free Software Foundation
+# Copyright (C) 1998, 2001, 2002 Free Software Foundation
 # Copyright (C) 1993 Jean-loup Gailly
 
 # This program is free software; you can redistribute it and/or modify
@@ -24,7 +24,7 @@
 
 PATH="BINDIR:$PATH"; export PATH
 
-prog=`echo $0 | sed 's|.*/||'`
+prog=`echo "$0" | sed 's|.*/||'`
 case "$prog" in
        *egrep) grep=${EGREP-egrep}     ;;
        *fgrep) grep=${FGREP-fgrep}     ;;
@@ -40,7 +40,7 @@ with_filename=0
 
 while test $# -ne 0; do
   case "$after_dash_dash$1" in
-  --d* | --rec*)       echo >&2 "$0: $1: option not supported"; exit 1;;
+  --d* | --rec*)       echo >&2 "$0: $1: option not supported"; exit 2;;
   --files-with-*)      files_with_matches=1;;
   --files-witho*)      files_without_matches=1;;
   --no-f*)     no_filename=1;;
@@ -48,7 +48,7 @@ while test $# -ne 0; do
   --*) ;;
   -*)
        case "$1" in
-       -*[dr]*) echo >&2 "$0: $1: option not supported"; exit 1;;
+       -*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
        esac
        case "$1" in
        -*H*)   with_filename=1;;
@@ -83,7 +83,7 @@ done
 if test -z "$pat"; then
   echo "grep through gzip files"
   echo "usage: $prog [grep_options] pattern [files]"
-  exit 1
+  exit 2
 fi
 
 if test $# -eq 0; then
@@ -95,12 +95,15 @@ res=0
 for i do
   gzip -cdfq "$i" |
     if test $files_with_matches -eq 1; then
-      $grep $opt "$pat" > /dev/null && echo $i
+      $grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
     elif test $files_without_matches -eq 1; then
-      $grep $opt "$pat" > /dev/null || echo $i
+      $grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
     elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
       $grep $opt "$pat"
     else
+      i=${i//\\/\\\\}
+      i=${i//|/\\|}
+      i=${i//&/\\&}
       if test $with_filename -eq 1; then
        sed_script="s|^[^:]*:|${i}:|"
       else