misc: update --version copyright
[debian/gzip] / gzexe.in
index 69e8c3fc87f69ac7dd08c6d3cb1d81e0013b4090..1977b1cb7b2a28fc6de5910a8cc0965232939e96 100644 (file)
--- a/gzexe.in
+++ b/gzexe.in
@@ -1,4 +1,3 @@
-:
 #!/bin/sh
 # gzexe: compressor for Unix executables.
 # Use this only for binaries that you do not use frequently.
 #!/bin/sh
 # gzexe: compressor for Unix executables.
 # Use this only for binaries that you do not use frequently.
 # On Ultrix, /bin/sh is too buggy, change the first line to: #!/bin/sh5
 
 
 # On Ultrix, /bin/sh is too buggy, change the first line to: #!/bin/sh5
 
 
-# Copyright (C) 1998, 2002, 2004 Free Software Foundation
+# Copyright (C) 1998, 2002, 2004, 2006-2007, 2010-2017 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.
 
+tab='  '
+nl='
+'
+IFS=" $tab$nl"
+
 version='gzexe (gzip) @VERSION@
 version='gzexe (gzip) @VERSION@
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2007, 2011-2017 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: gzexe [OPTION] FILE...
+usage="Usage: $0 [OPTION] FILE...
 Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
 
   -d             Decompress each FILE instead of compressing it.
       --help     display this help and exit
       --version  output version information and exit
 
 Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
 
   -d             Decompress each FILE instead of compressing it.
       --help     display this help and exit
       --version  output version information and exit
 
-Report bugs to <bug-gzip@gnu.org>.'
-
-
-PATH="BINDIR:$PATH"
-if test $# = 0; then
-  echo "$usage"
-  exit 1
-fi
+Report bugs to <bug-gzip@gnu.org>."
 
 decomp=0
 res=0
 
 decomp=0
 res=0
@@ -67,134 +65,163 @@ while :; do
   esac
 done
 
   esac
 done
 
-tmp=gz$$
-trap "rm -f $tmp; exit 1" 1 2 3 5 10 13 15
-
-set -C
-echo hi > $tmp || exit
-if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then
-  cpmod=${CPMOD-cpmod}
-fi
-
-tail=""
-IFS="${IFS=    }"; saveifs="$IFS"; IFS="${IFS}:"
-for dir in $PATH; do
-  test -z "$dir" && dir=.
-  if test -f $dir/tail; then
-    tail="$dir/tail"
-    break
-  fi
-done
-IFS="$saveifs"
-if test -z "$tail"; then
-  echo cannot find tail
+if test $# -eq 0; then
+  echo >&2 "$0: missing operand
+Try \`$0 --help' for more information."
   exit 1
 fi
   exit 1
 fi
-case `echo foo | $tail -n +1 2>/dev/null` in
-foo) tail="$tail -n";;
-esac
+
+tmp=
+trap 'res=$?
+  test -n "$tmp" && rm -f "$tmp"
+  (exit $res); exit $res
+' 0 1 2 3 5 10 13 15
+
+mktemp_status=
 
 for i do
 
 for i do
-  if test ! -f "$i" ; then
-    echo ${x}: $i not a file
-    res=1
+  case $i in
+  -*) file=./$i;;
+  *)  file=$i;;
+  esac
+  if test ! -f "$file" || test ! -r "$file"; then
+    res=$?
+    echo >&2 "$0: $i is not a readable regular file"
     continue
   fi
   if test $decomp -eq 0; then
     continue
   fi
   if test $decomp -eq 0; then
-    if sed -e 1d -e 2q "$i" | grep "^skip=[0-9]*$" >/dev/null; then
-      echo "${x}: $i is already gzexe'd"
+    if sed -e 1d -e 2q "$file" | grep "^skip=[0-9][0-9]*$" >/dev/null; then
+      echo >&2 "$0: $i is already gzexe'd"
       continue
     fi
   fi
       continue
     fi
   fi
-  if ls -l "$i" | grep '^...[sS]' > /dev/null; then
-    echo "${x}: $i has setuid permission, unchanged"
+  if test -u "$file"; then
+    echo >&2 "$0: $i has setuid permission, unchanged"
     continue
   fi
     continue
   fi
-  if ls -l "$i" | grep '^......[sS]' > /dev/null; then
-    echo "${x}: $i has setgid permission, unchanged"
+  if test -g "$file"; then
+    echo >&2 "$0: $i has setgid permission, unchanged"
     continue
   fi
     continue
   fi
-  case "$i" in
-  */gzip | */tail | */sed | */chmod | */ln | */sleep | */rm)
-       echo "${x}: $i would depend on itself"; continue ;;
+  case /$file in
+  */basename | */bash | */cat | */chmod | */cp | \
+  */dirname | */echo | */expr | */gzip | \
+  */ln | */mkdir | */mktemp | */mv | */rm | \
+  */sed | */sh | */sleep | */test | */tail)
+    echo >&2 "$0: $i might depend on itself"; continue;;
   esac
   esac
-  if test -z "$cpmod"; then
-    cp -p "$i" $tmp 2>/dev/null || cp "$i" $tmp
-    if test -w $tmp 2>/dev/null; then
-      writable=1
-    else
-      writable=0
-      chmod u+w $tmp 2>/dev/null
-    fi
-    : >| $tmp
+
+  dir=`dirname "$file"` || dir=$TMPDIR
+  test -d "$dir" && test -w "$dir" && test -x "$dir" || dir=/tmp
+  test -n "$tmp" && rm -f "$tmp"
+  if test -z "$mktemp_status"; then
+    type mktemp >/dev/null 2>&1
+    mktemp_status=$?
+  fi
+  if test $mktemp_status -eq 0; then
+    tmp=`TMPDIR=$dir mktemp`
+  else
+    tmp=$dir/gzexe$$
+  fi && { cp -p "$file" "$tmp" 2>/dev/null || cp "$file" "$tmp"; } || {
+    res=$?
+    echo >&2 "$0: cannot copy $file"
+    continue
+  }
+  if test -w "$tmp"; then
+    writable=1
+  else
+    writable=0
+    chmod u+w "$tmp" || {
+      res=$?
+      echo >&2 "$0: cannot chmod $tmp"
+      continue
+    }
   fi
   if test $decomp -eq 0; then
   fi
   if test $decomp -eq 0; then
-    (sed 1q $0 &&
-     sed "s|^if tail|if $tail|" <<'EOF' &&
-skip=26
-set -C
+    (cat <<'EOF' &&
+#!/bin/sh
+skip=44
+
+tab='  '
+nl='
+'
+IFS=" $tab$nl"
+
 umask=`umask`
 umask 77
 umask=`umask`
 umask 77
-if (tempfile --version) >/dev/null 2>&1
-then gztmp=`tempfile -p gztmp` || exit
-else gztmp=/tmp/gztmp$$
-fi
-if tail +$skip "$0" | "BINDIR"/gzip -cd > "$gztmp"; then
+
+gztmpdir=
+trap 'res=$?
+  test -n "$gztmpdir" && rm -fr "$gztmpdir"
+  (exit $res); exit $res
+' 0 1 2 3 5 10 13 15
+
+if type mktemp >/dev/null 2>&1; then
+  gztmpdir=`mktemp -d`
+else
+  gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
+fi || { (exit 127); exit 127; }
+
+gztmp=$gztmpdir/$0
+case $0 in
+-* | */*'
+') mkdir -p "$gztmp" && rm -r "$gztmp";;
+*/*) gztmp=$gztmpdir/`basename "$0"`;;
+esac || { (exit 127); exit 127; }
+
+case `echo X | tail -n +1 2>/dev/null` in
+X) tail_n=-n;;
+*) tail_n=;;
+esac
+if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
   umask $umask
   umask $umask
-  /bin/chmod 700 "$gztmp"
-  prog=`echo "$gztmp" | /bin/sed 's|[^/]*$||'; echo $0 | /bin/sed 's|.*/||'`
-  if /bin/ln "$gztmp" "$prog" 2>/dev/null; then
-    trap '/bin/rm -f "$gztmp" "$prog"; exit $res' 0
-    (/bin/sleep 5; /bin/rm -f "$gztmp" "$prog") 2>/dev/null &
-    "$prog" ${1+"$@"}; res=$?
-  else
-    trap '/bin/rm -f "$gztmp"; exit $res' 0
-    (/bin/sleep 5; /bin/rm -f "$gztmp") 2>/dev/null &
-    "$gztmp" ${1+"$@"}; res=$?
-  fi
+  chmod 700 "$gztmp"
+  (sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
+  "$gztmp" ${1+"$@"}; res=$?
 else
 else
-  echo Cannot decompress $0; exit 1
+  echo >&2 "Cannot decompress $0"
+  (exit 127); res=127
 fi; exit $res
 EOF
 fi; exit $res
 EOF
-     gzip -cv9 "$i") > $tmp || {
-      /bin/rm -f $tmp
-      echo ${x}: compression not possible for $i, file unchanged.
-      res=1
+    gzip -cv9 "$file") > "$tmp" || {
+      res=$?
+      echo >&2 "$0: compression not possible for $i, file unchanged."
       continue
     }
 
   else
     # decompression
       continue
     }
 
   else
     # decompression
-    skip=26
-    if sed -e 1d -e 2q "$i" | grep "^skip=[0-9][0-9]*$" >/dev/null; then
-      eval `sed -e 1d -e 2q "$i"`
-    fi
-    if $tail +$skip "$i" | gzip -cd > $tmp; then
-      :
-    else
-      echo ${x}: $i probably not in gzexe format, file unchanged.
-      res=1
+    skip=44
+    skip_line=`sed -e 1d -e 2q "$file"`
+    case $skip_line in
+    skip=[0-9] | skip=[0-9][0-9] | skip=[0-9][0-9][0-9])
+      eval "$skip_line";;
+    esac
+    case `echo X | tail -n +1 2>/dev/null` in
+    X) tail_n=-n;;
+    *) tail_n=;;
+    esac
+    tail $tail_n +$skip "$file" | gzip -cd > "$tmp" || {
+      res=$?
+      echo >&2 "$0: $i probably not in gzexe format, file unchanged."
       continue
       continue
-    fi
+    }
   fi
   fi
-  rm -f "$i~"
-  mv "$i" "$i~" || {
-    echo ${x}: cannot backup $i as $i~
-    rm -f $tmp
-    res=1
+  test $writable -eq 1 || chmod u-w "$tmp" || {
+    res=$?
+    echo >&2 "$0: $tmp: cannot chmod"
     continue
   }
     continue
   }
-  mv $tmp "$i" || cp -p $tmp "$i" 2>/dev/null || cp $tmp "$i" || {
-    echo ${x}: cannot create $i
-    rm -f $tmp
-    res=1
+  ln -f "$file" "$file~" || {
+    res=$?
+    echo >&2 "$0: cannot backup $i as $i~"
     continue
   }
     continue
   }
-  rm -f $tmp
-  if test -n "$cpmod"; then
-    $cpmod "$i~" "$i" 2>/dev/null
-  elif test $writable -eq 0; then
-    chmod u-w $i 2>/dev/null
-  fi
+  mv -f "$tmp" "$file" || {
+    res=$?
+    echo >&2 "$0: cannot rename $tmp to $i"
+    continue
+  }
+  tmp=
 done
 done
-exit $res
+(exit $res); exit $res