-diff --git a/zdiff.in b/zdiff.in
-index 9d3b4ae..506a888 100644
---- a/zdiff.in
-+++ b/zdiff.in
-@@ -76,9 +76,15 @@ gzip_status=0
- exec 3>&1
-
- if test $# -eq 1; then
-- case $1 in
-- *[-.]gz* | *[-.][zZ] | *.t[ga]z)
-+ type_file=$(file -b --mime-type "$1")
-+
-+ case $type_file in
-+ application/x-gzip | application/x-compress)
- FILE=`expr "X$1" : 'X\(.*\)[-.][zZtga]*$'`
-+ if test "$FILE" == ""; then
-+ FILE="$1"
-+ fi;
-+
- gzip_status=$(
- exec 4>&1
- (gzip -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
-@@ -88,10 +94,13 @@ if test $# -eq 1; then
- exit 2;;
- esac
- elif test $# -eq 2; then
-- case "$1" in
-- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
-- case "$2" in
-- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
-+ type_file1=$(file -b --mime-type "$1")
-+ type_file2=$(file -b --mime-type "$2")
-+
-+ case "$type_file1" in
-+ application/x-gzip | application/x-compress)
-+ case "$type_file2" in
-+ application/x-gzip | application/x-compress)
- if test "$1$2" = --; then
- gzip_status=$(
- exec 4>&1
-@@ -118,6 +127,9 @@ elif test $# -eq 2; then
- (exit $cmp_status)
- else
- F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog
-+ if test "$F" == ""; then
-+ F="$2"
-+ fi;
- tmp=
- trap '
- test -n "$tmp" && rm -f "$tmp"
-@@ -147,8 +159,8 @@ elif test $# -eq 2; then
- eval "$cmp" - '"$2"' >&3
- );;
- esac;;
-- *) case "$2" in
-- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
-+ *) case "$type_file2" in
-+ application/x-gzip | application/x-compress)
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |