X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=zgrep.in;h=a828bbc528ac3bb3fdf6f35e3c22c59fc26345bc;hb=6a1bef0f0a7aa43a4bd49fceef0cc44f489d7706;hp=7ae779d63af8c03e07dbbc30b921ca979d7c17e7;hpb=80351b321c1ee7853366b158d38225efbde25ac6;p=debian%2Fgzip diff --git a/zgrep.in b/zgrep.in index 7ae779d..a828bbc 100644 --- a/zgrep.in +++ b/zgrep.in @@ -3,12 +3,12 @@ # 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 Free Software Foundation +# Copyright (C) 1998, 2001, 2002, 2006, 2007, 2009 Free Software Foundation # Copyright (C) 1993 Jean-loup Gailly # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, @@ -20,11 +20,16 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -PATH=BINDIR:$PATH +bindir=@bindir@ +case $1 in +--__bindir) bindir=${2?}; shift; shift;; +esac +PATH=$bindir:$PATH + grep='${GREP-grep}' -version='z$grep (gzip) @VERSION@ -Copyright (C) 2007 Free Software Foundation, Inc. +version='zgrep (gzip) @VERSION@ +Copyright (C) 2007, 2009-2010 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. @@ -101,12 +106,22 @@ while test $# -ne 0; do case $optarg in (" '-'" | " '/dev/stdin'" | " '/dev/fd/0'") pat_on_stdin=1 + eval 'test -e .' 2>/dev/null \ + && eval 'exists(){ test -e "$@"; }' \ + || eval 'exists(){ test -r "$@" || test -w "$@"; }' # Start search from 6 since the script already uses 3 and 5 - for fd in $(seq 6 254); do - if test ! -e /dev/fd/$fd; then - pat_fd=$fd - break; - fi + fd=6 + pat_fd= + while : ; do + if ! exists /proc/$$/fd/$fd; then + pat_fd=$fd + break; + fi + fd=$(expr $fd + 1) + if test $fd = 255; then + printf >&2 '%s: no free file descriptor\n' "$0" + exit 2 + fi done optarg=/dev/fd/$pat_fd; esac @@ -123,7 +138,7 @@ while test $# -ne 0; do files_with_matches=1;; (-L | --files-witho*) files_without_matches=1;; - (-h | --no-f*) + (--no-f*) no_filename=1;; (-V | --v | --ve | --ver | --vers | --versi | --versio | --version) echo "$version" || exit 2 @@ -165,7 +180,7 @@ do gzip_status=$( exec 5>&1 if test $pat_on_stdin -eq 1; then - eval "exec $pat_fd<&0" + eval "exec $pat_fd<&0" fi (gzip -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | if test $files_with_matches -eq 1; then