Index: zgrep.in =================================================================== --- zgrep.in.orig +++ zgrep.in @@ -176,13 +176,21 @@ res=0 for i do + case $i in + *.bz2) + uncompress=bzip2 + ;; + *) + uncompress=gzip + ;; + esac # Fail if gzip or grep (or sed) fails. gzip_status=$( exec 5>&1 if test $pat_on_stdin -eq 1; then eval "exec $pat_fd<&0" fi - (gzip -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | + ($uncompress -cdfq -- "$i" 5>&-; echo $? >&5) 3>&- | if test $files_with_matches -eq 1; then eval "$grep" >/dev/null && { printf '%s\n' "$i" || exit 2; } elif test $files_without_matches -eq 1; then