tags 343575 patch
tags 630111 patch
stop
-----

Hello,

Here is a small patch for this bug.

Regards,

-- 
Stéphane Aulery
--- zdiff.in.old	2012-02-05 13:52:33.810291167 +0100
+++ zdiff.in	2012-02-05 13:54:39.678915321 +0100
@@ -76,9 +76,15 @@
 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 @@
     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 @@
 			(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 @@
 		        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>&- |

Reply via email to