new upstream version already has fresh gnulib
[debian/gzip] / znew.in
diff --git a/znew.in b/znew.in
index 986ffc7f874415addd30f7471bec2a86853b7c5d..2b703d17642b2c3393dfd9744774d71c1e500c23 100644 (file)
--- a/znew.in
+++ b/znew.in
@@ -1,11 +1,12 @@
 #!/bin/sh
 
 #!/bin/sh
 
-# Copyright (C) 1998, 2002, 2004 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
 # it under the terms of the GNU General Public License as published by
 # Copyright (C) 1993 Jean-loup Gailly
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
 
 # This program is distributed in the hope that it will be useful,
 # (at your option) any later version.
 
 # This program is distributed in the hope that it will be useful,
 # 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.
 
-PATH="BINDIR:$PATH"; export PATH
-
 version="znew (gzip) @VERSION@
 version="znew (gzip) @VERSION@
-Copyright (C) 2006 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."
 
-usage="Usage: znew [OPTION]... [FILE]...
+usage="Usage: $0 [OPTION]... [FILE]...
 Recompress files from .Z (compress) format to .gz (gzip) format.
 
 Options:
 Recompress files from .Z (compress) format to .gz (gzip) format.
 
 Options:
@@ -37,7 +36,7 @@ Options:
   -v     Verbose; display name and statistics for each file compressed.
   -9     Use the slowest compression method (optimal compression).
   -P     Use pipes for the conversion to reduce disk space usage.
   -v     Verbose; display name and statistics for each file compressed.
   -9     Use the slowest compression method (optimal compression).
   -P     Use pipes for the conversion to reduce disk space usage.
-  -K     Keep a .Z file when it is smaller than the .gz file.
+  -K     Keep a .Z file when it is smaller than the .gz file; implies -t.
       --help     display this help and exit
       --version  output version information and exit
 
       --help     display this help and exit
       --version  output version information and exit
 
@@ -54,84 +53,61 @@ 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=/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
 done
 
 if test $# -eq 0; then
   -*)     opt="$opt $arg"; shift;;
    *)     break;;
   esac
 done
 
 if test $# -eq 0; then
-  echo "$usage"
+  echo >&2 "$0: invalid number of operands; try \`$0 --help' for help"
   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; 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
@@ -139,33 +115,31 @@ 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
       :
     else
       if test $check -eq 1; then
       res=1; continue
     fi
     if gzip $opt "$n"; then
       :
     else
       if test $check -eq 1; then
-       mv "$n.$$" "$n.Z" && rm -f "$n"
-        echo error while recompressing $n
+        mv "$n.$$" "$n.Z" && rm -f "$n"
+        printf '%s\n' "error while recompressing $n"
       else
       else
-       # compress $n  (might be dangerous if disk full)
-        echo error while recompressing $n, left uncompressed
+        # compress $n  (might be dangerous if disk full)
+        printf '%s\n' "error while recompressing $n, left uncompressed"
       fi
       res=1; continue
     fi
   fi
   test $keep -eq 1 && new=`wc -c < "$n$ext"`
   if test $keep -eq 1 && test `expr \( $old + $block - 1 \) / $block` -lt \
       fi
       res=1; continue
     fi
   fi
   test $keep -eq 1 && new=`wc -c < "$n$ext"`
   if test $keep -eq 1 && test `expr \( $old + $block - 1 \) / $block` -lt \
-                             `expr \( $new + $block - 1 \) / $block`; then
+                              `expr \( $new + $block - 1 \) / $block`; then
     if test $pipe -eq 1; then
       rm -f "$n$ext"
     if test $pipe -eq 1; then
       rm -f "$n$ext"
-    elif test $check -eq 1; then
-      mv "$n.$$" "$n.Z" && rm -f "$n$ext"
     else
     else
-      gzip -d "$n$ext" && compress "$n" && rm -f "$n$ext"
+      mv "$n.$$" "$n.Z" && rm -f "$n$ext"
     fi
     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
@@ -173,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