Wabi patch already merged in new upstream version
[debian/gzip] / znew.in
diff --git a/znew.in b/znew.in
index 9bd3ce97c7beb215658612cfd0004575cb28acac..2b703d17642b2c3393dfd9744774d71c1e500c23 100644 (file)
--- a/znew.in
+++ b/znew.in
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 #!/bin/sh
 
-# Copyright (C) 1998, 2002, 2004, 2007, 2010 Free Software Foundation
+# Copyright (C) 1998, 2002, 2004, 2007, 2010-2018 Free Software Foundation,
+# Inc.
 # Copyright (C) 1993 Jean-loup Gailly
 
 # This program is free software; you can redistribute it and/or modify
 # Copyright (C) 1993 Jean-loup Gailly
 
 # This program is free software; you can redistribute it and/or modify
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-bindir=@bindir@
-case $1 in
---__bindir) bindir=${2?}; shift; shift;;
-esac
-PATH=$bindir:$PATH; export PATH
-
 version="znew (gzip) @VERSION@
 version="znew (gzip) @VERSION@
-Copyright (C) 2010-2013 Free Software Foundation, Inc.
+Copyright (C) 2010-2018 Free Software Foundation, Inc.
 This is free software.  You may redistribute copies of it under the terms of
 This is free software.  You may redistribute copies of it under the terms of
-the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+the GNU General Public License <https://www.gnu.org/licenses/gpl.html>.
 There is NO WARRANTY, to the extent permitted by law.
 
 Written by Jean-loup Gailly."
 There is NO WARRANTY, to the extent permitted by law.
 
 Written by Jean-loup Gailly."
@@ -58,39 +53,15 @@ new=0
 block=1024
 # block is the disk block size (best guess, need not be exact)
 
 block=1024
 # block is the disk block size (best guess, need not be exact)
 
-warn="(does not preserve modes and timestamp)"
-tmp=${TMPDIR-/tmp}/zfoo.$$
-set -C
-echo hi > $tmp || exit
-if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then
-  cpmod=${CPMOD-cpmod}
-  warn=""
-fi
-
-if test -z "$cpmod" && ${TOUCH-touch} -r $tmp $tmp 2>/dev/null; then
-  cpmod="${TOUCH-touch}"
-  cpmodarg="-r"
-  warn="(does not preserve file modes)"
-fi
-
-# check if GZIP env. variable uses -S or --suffix
-gzip -q $tmp
-ext=`echo $tmp* | sed "s|$tmp||"`
-rm -f $tmp*
-if test -z "$ext"; then
-  echo znew: error determining gzip extension
-  exit 1
-fi
-if test "$ext" = ".Z"; then
-  echo znew: cannot use .Z as gzip extension.
-  exit 1
-fi
+# Beware -s or --suffix in $GZIP.
+unset GZIP
+ext=.gz
 
 for arg
 do
   case "$arg" in
 
 for arg
 do
   case "$arg" in
-  --help)      exec echo "$usage";;
-  --version)   exec echo "$version";;
+  --help)      printf '%s\n' "$usage"   || exit 1; exit;;
+  --version)   printf '%s\n' "$version" || exit 1; exit;;
   -*)     opt="$opt $arg"; shift;;
    *)     break;;
   esac
   -*)     opt="$opt $arg"; shift;;
    *)     break;;
   esac
@@ -101,41 +72,42 @@ if test $# -eq 0; then
   exit 1
 fi
 
   exit 1
 fi
 
-opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
+opt=`printf '%s\n' "$opt" | sed -e 's/ //g' -e 's/-//g'`
 case "$opt" in
 case "$opt" in
-  *t*) check=1; opt=`echo "$opt" | sed 's/t//g'`
+  *t*) check=1; opt=`printf '%s\n' "$opt" | sed 's/t//g'`
 esac
 case "$opt" in
 esac
 case "$opt" in
-  *K*) keep=1; check=1; opt=`echo "$opt" | sed 's/K//g'`
+  *K*) keep=1; check=1; opt=`printf '%s\n' "$opt" | sed 's/K//g'`
 esac
 case "$opt" in
 esac
 case "$opt" in
-  *P*) pipe=1; opt=`echo "$opt" | sed 's/P//g'`
+  *P*) pipe=1; opt=`printf '%s\n' "$opt" | sed 's/P//g'`
 esac
 if test -n "$opt"; then
   opt="-$opt"
 fi
 
 for i do
 esac
 if test -n "$opt"; then
   opt="-$opt"
 fi
 
 for i do
-  n=`echo $i | sed 's/.Z$//'`
+  n=`printf '%s\n' "$i" | sed 's/.Z$//'`
   if test ! -f "$n.Z" ; then
   if test ! -f "$n.Z" ; then
-    echo $n.Z not found
+    printf '%s\n' "$n.Z not found"
     res=1; continue
   fi
   test $keep -eq 1 && old=`wc -c < "$n.Z"`
   if test $pipe -eq 1; then
     if gzip -d < "$n.Z" | gzip $opt > "$n$ext"; then
       # Copy file attributes from old file to new one, if possible.
     res=1; continue
   fi
   test $keep -eq 1 && old=`wc -c < "$n.Z"`
   if test $pipe -eq 1; then
     if gzip -d < "$n.Z" | gzip $opt > "$n$ext"; then
       # Copy file attributes from old file to new one, if possible.
-      test -n "$cpmod" && $cpmod $cpmodarg "$n.Z" "$n$ext" 2> /dev/null
+      touch -r"$n.Z" -- "$n$ext" 2>/dev/null
+      chmod --reference="$n.Z" -- "$n$ext" 2>/dev/null
     else
     else
-      echo error while recompressing $n.Z
+      printf '%s\n' "error while recompressing $n.Z"
       res=1; continue
     fi
   else
     if test $check -eq 1; then
       res=1; continue
     fi
   else
     if test $check -eq 1; then
-      if cp -p "$n.Z" "$n.$$" 2> /dev/null || cp "$n.Z" "$n.$$"; then
+      if cp -p "$n.Z" "$n.$$"; then
         :
       else
         :
       else
-        echo cannot backup "$n.Z"
+        printf '%s\n' "cannot backup $n.Z"
         res=1; continue
       fi
     fi
         res=1; continue
       fi
     fi
@@ -143,7 +115,7 @@ for i do
       :
     else
       test $check -eq 1 && mv "$n.$$" "$n.Z"
       :
     else
       test $check -eq 1 && mv "$n.$$" "$n.Z"
-      echo error while uncompressing $n.Z
+      printf '%s\n' "error while uncompressing $n.Z"
       res=1; continue
     fi
     if gzip $opt "$n"; then
       res=1; continue
     fi
     if gzip $opt "$n"; then
@@ -151,10 +123,10 @@ for i do
     else
       if test $check -eq 1; then
         mv "$n.$$" "$n.Z" && rm -f "$n"
     else
       if test $check -eq 1; then
         mv "$n.$$" "$n.Z" && rm -f "$n"
-        echo error while recompressing $n
+        printf '%s\n' "error while recompressing $n"
       else
         # compress $n  (might be dangerous if disk full)
       else
         # compress $n  (might be dangerous if disk full)
-        echo error while recompressing $n, left uncompressed
+        printf '%s\n' "error while recompressing $n, left uncompressed"
       fi
       res=1; continue
     fi
       fi
       res=1; continue
     fi
@@ -167,7 +139,7 @@ for i do
     else
       mv "$n.$$" "$n.Z" && rm -f "$n$ext"
     fi
     else
       mv "$n.$$" "$n.Z" && rm -f "$n$ext"
     fi
-    echo "$n.Z smaller than $n$ext -- unchanged"
+    printf '%s\n' "$n.Z smaller than $n$ext -- unchanged"
 
   elif test $check -eq 1; then
     if gzip -t "$n$ext" ; then
 
   elif test $check -eq 1; then
     if gzip -t "$n$ext" ; then
@@ -175,7 +147,7 @@ for i do
     else
       test $pipe -eq 0 && mv "$n.$$" "$n.Z"
       rm -f "$n$ext"
     else
       test $pipe -eq 0 && mv "$n.$$" "$n.Z"
       rm -f "$n$ext"
-      echo error while testing $n$ext, $n.Z unchanged
+      printf '%s\n' "error while testing $n$ext, $n.Z unchanged"
       res=1; continue
     fi
   elif test $pipe -eq 1; then
       res=1; continue
     fi
   elif test $pipe -eq 1; then