]> git.gag.com Git - debian/gzip/blobdiff - debian/patches/zdiff-file.diff
patch to improve behavior of zdiff when file is compressed without extension
[debian/gzip] / debian / patches / zdiff-file.diff
diff --git a/debian/patches/zdiff-file.diff b/debian/patches/zdiff-file.diff
new file mode 100644 (file)
index 0000000..ea7bc6d
--- /dev/null
@@ -0,0 +1,61 @@
+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>&- |