3 # Copyright (C) 1998, 2002, 2004, 2007 Free Software Foundation
4 # Copyright (C) 1993 Jean-loup Gailly
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along
17 # with this program; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
22 version="znew (gzip) 1.3.12
23 Copyright (C) 2007 Free Software Foundation, Inc.
24 This is free software. You may redistribute copies of it under the terms of
25 the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
26 There is NO WARRANTY, to the extent permitted by law.
28 Written by Jean-loup Gailly."
30 usage="Usage: $0 [OPTION]... [FILE]...
31 Recompress files from .Z (compress) format to .gz (gzip) format.
35 -f Force recompression even if a .gz file already exists.
36 -t Test the new files before deleting originals.
37 -v Verbose; display name and statistics for each file compressed.
38 -9 Use the slowest compression method (optimal compression).
39 -P Use pipes for the conversion to reduce disk space usage.
40 -K Keep a .Z file when it is smaller than the .gz file.
41 --help display this help and exit
42 --version output version information and exit
44 Report bugs to <bug-gzip@gnu.org>."
55 # block is the disk block size (best guess, need not be exact)
57 warn="(does not preserve modes and timestamp)"
58 tmp=${TMPDIR-/tmp}/zfoo.$$
60 echo hi > $tmp || exit
61 if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then
66 if test -z "$cpmod" && ${TOUCH-touch} -r $tmp $tmp 2>/dev/null; then
67 cpmod="${TOUCH-touch}"
69 warn="(does not preserve file modes)"
72 # check if GZIP env. variable uses -S or --suffix
74 ext=`echo $tmp* | sed "s|$tmp||"`
76 if test -z "$ext"; then
77 echo znew: error determining gzip extension
80 if test "$ext" = ".Z"; then
81 echo znew: cannot use .Z as gzip extension.
88 --help) exec echo "$usage";;
89 --version) exec echo "$version";;
90 -*) opt="$opt $arg"; shift;;
95 if test $# -eq 0; then
100 opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
102 *t*) check=1; opt=`echo "$opt" | sed 's/t//g'`
105 *K*) keep=1; opt=`echo "$opt" | sed 's/K//g'`
108 *P*) pipe=1; opt=`echo "$opt" | sed 's/P//g'`
110 if test -n "$opt"; then
115 n=`echo $i | sed 's/.Z$//'`
116 if test ! -f "$n.Z" ; then
120 test $keep -eq 1 && old=`wc -c < "$n.Z"`
121 if test $pipe -eq 1; then
122 if gzip -d < "$n.Z" | gzip $opt > "$n$ext"; then
123 # Copy file attributes from old file to new one, if possible.
124 test -n "$cpmod" && $cpmod $cpmodarg "$n.Z" "$n$ext" 2> /dev/null
126 echo error while recompressing $n.Z
130 if test $check -eq 1; then
131 if cp -p "$n.Z" "$n.$$" 2> /dev/null || cp "$n.Z" "$n.$$"; then
134 echo cannot backup "$n.Z"
138 if gzip -d "$n.Z"; then
141 test $check -eq 1 && mv "$n.$$" "$n.Z"
142 echo error while uncompressing $n.Z
145 if gzip $opt "$n"; then
148 if test $check -eq 1; then
149 mv "$n.$$" "$n.Z" && rm -f "$n"
150 echo error while recompressing $n
152 # compress $n (might be dangerous if disk full)
153 echo error while recompressing $n, left uncompressed
158 test $keep -eq 1 && new=`wc -c < "$n$ext"`
159 if test $keep -eq 1 && test `expr \( $old + $block - 1 \) / $block` -lt \
160 `expr \( $new + $block - 1 \) / $block`; then
161 if test $pipe -eq 1; then
163 elif test $check -eq 1; then
164 mv "$n.$$" "$n.Z" && rm -f "$n$ext"
166 gzip -d "$n$ext" && compress "$n" && rm -f "$n$ext"
168 echo "$n.Z smaller than $n$ext -- unchanged"
170 elif test $check -eq 1; then
171 if gzip -t "$n$ext" ; then
174 test $pipe -eq 0 && mv "$n.$$" "$n.Z"
176 echo error while testing $n$ext, $n.Z unchanged
179 elif test $pipe -eq 1; then