patch to improve behavior of zdiff when file is compressed without extension
authorBdale Garbee <bdale@gag.com>
Fri, 13 Apr 2012 05:10:59 +0000 (23:10 -0600)
committerBdale Garbee <bdale@gag.com>
Fri, 13 Apr 2012 05:10:59 +0000 (23:10 -0600)
debian/changelog
debian/patches/series
debian/patches/zdiff-file.diff [new file with mode: 0644]
zdiff.in

index 64223f493a24dad0db1802e1a5497849ca0d98dd..bf4fe47cb24a85aa7241e8439a09518356c484dd 100644 (file)
@@ -7,6 +7,8 @@ gzip (1.4-6) unstable; urgency=low
     closes: #637626
   * patch to improve zdiff doc from Stéphane Aulery, closes: #269612
   * patches to fix RFC URLs from Stéphane Aulery, closes: #636182
+  * patch from Stéphane Aulery to improve zdiff behavior when file is
+    compressed without explicit extension, closes: #343575, #630111
 
  -- Bdale Garbee <bdale@gag.com>  Thu, 12 Apr 2012 11:38:56 -0600
 
index c6482a46ff612564e0370262645832f9d2a8077a..f85a0929be74aefc6459663a39738b3840c45fcf 100644 (file)
@@ -7,3 +7,4 @@ zgrep-dash-h.diff
 gzip-man-pack.diff
 zdiff-man.diff
 rfc-urls.diff
+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>&- |
index 9d3b4aed0a1bd842b84a1b7e71ba2fa987d367af..506a888ef2d78390d9d6e8eec497b63c37d673a5 100644 (file)
--- 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>&- |