123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- grep=${GREP:-grep}
- zcat=${ZCAT:-zstdcat}
- endofopts=0
- pattern_found=0
- grep_args=""
- hyphen=0
- silent=0
- prog=${0##*/}
- case $prog in
- *egrep*) prog=zegrep; grep_args='-E';;
- *fgrep*) prog=zfgrep; grep_args='-F';;
- *) prog=zstdgrep;;
- esac
- while [ "$#" -gt 0 ] && [ "${endofopts}" -eq 0 ]; do
- case "$1" in
- # from GNU grep-2.5.1 -- keep in sync!
- -[ABCDXdefm])
- if [ "$#" -lt 2 ]; then
- printf '%s: missing argument for %s flag\n' "${prog}" "$1" >&2
- exit 1
- fi
- case "$1" in
- -e)
- pattern="$2"
- pattern_found=1
- shift 2
- break
- ;;
- -f)
- pattern_found=2
- ;;
- *)
- ;;
- esac
- grep_args="${grep_args} $1 $2"
- shift 2
- ;;
- --)
- shift
- endofopts=1
- ;;
- -)
- hyphen=1
- shift
- ;;
- -h)
- silent=1
- shift
- ;;
- -*)
- grep_args="${grep_args} $1"
- shift
- ;;
- *)
- # pattern to grep for
- endofopts=1
- ;;
- esac
- done
- if [ "${pattern_found}" -lt 1 ]; then
- if [ "$#" -ge 1 ]; then
- pattern="$1"
- shift
- elif [ "${hyphen}" -gt 0 ]; then
- pattern="-"
- else
- printf '%s: missing pattern\n' "${prog}" >&2
- exit 1
- fi
- fi
- EXIT_CODE=0
- if [ "$#" -lt 1 ]; then
- # ... on stdin
- set -f # Disable file name generation (globbing).
- # shellcheck disable=SC2086
- "${zcat}" - | "${grep}" ${grep_args} -- "${pattern}" -
- EXIT_CODE=$?
- set +f
- else
- # ... on all files given on the command line
- if [ "${silent}" -lt 1 ] && [ "$#" -gt 1 ]; then
- grep_args="-H ${grep_args}"
- fi
- set -f
- while [ "$#" -gt 0 ]; do
- # shellcheck disable=SC2086
- if [ $pattern_found -eq 2 ]; then
- "${zcat}" -- "$1" | "${grep}" --label="${1}" ${grep_args} -- -
- else
- "${zcat}" -- "$1" | "${grep}" --label="${1}" ${grep_args} -- "${pattern}" -
- fi
- [ "$?" -ne 0 ] && EXIT_CODE=1
- shift
- done
- set +f
- fi
- exit "${EXIT_CODE}"
|