|
|
1.1 ! root 1: : ! 2: #!/bin/sh ! 3: ! 4: check=0 ! 5: pipe=0 ! 6: opt= ! 7: files= ! 8: keep=0 ! 9: res=0 ! 10: old=0 ! 11: new=0 ! 12: block=1024 ! 13: # block is the disk block size (best guess, need not be exact) ! 14: ! 15: for arg ! 16: do ! 17: case "$arg" in ! 18: -*) opt="$opt $arg";; ! 19: *) files="$files $arg";; ! 20: esac ! 21: done ! 22: ! 23: if test -z "$files"; then ! 24: echo 'recompress .Z files into .z (gzip) files' ! 25: echo usage: `echo $0 | sed 's,^.*/,,'` "[-tv9P]" file.Z... ! 26: echo " -t tests the new files before deleting originals" ! 27: echo " -v be verbose" ! 28: echo " -9 use the slowest compression method (optimal compression)" ! 29: echo " -K keep a .Z file when it is smaller than the .z file" ! 30: if ${TOUCH-touch} -r foo$$ 2>/dev/null; then ! 31: echo " -P use pipes for the conversion" ! 32: else ! 33: echo " -P use pipes for the conversion (does not preserve timestamp)" ! 34: fi ! 35: rm -f foo$$ ! 36: exit 1 ! 37: fi ! 38: opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'` ! 39: case "$opt" in ! 40: *t*) check=1; opt=`echo "$opt" | sed 's/t//g'` ! 41: esac ! 42: case "$opt" in ! 43: *K*) keep=1; opt=`echo "$opt" | sed 's/K//g'` ! 44: esac ! 45: case "$opt" in ! 46: *P*) pipe=1; opt=`echo "$opt" | sed 's/P//g'` ! 47: esac ! 48: if test -n "$opt"; then ! 49: opt="-$opt" ! 50: fi ! 51: ! 52: for i in $files; do ! 53: n=`echo $i | sed 's/.Z$//'` ! 54: if test ! -f $n.Z ; then ! 55: echo $n.Z not found ! 56: res=1; continue ! 57: fi ! 58: test $keep -eq 1 && old=`wc -c < $n.Z` ! 59: if test $pipe -eq 1; then ! 60: if gzip -d < $n.Z | gzip $opt > $n.z; then ! 61: # Copy time stamp from old file to new one, if possible. ! 62: ${TOUCH-touch} -r $n.Z $n.z 2> /dev/null ! 63: else ! 64: echo error while recompressing $n.Z ! 65: res=1; continue ! 66: fi ! 67: else ! 68: if test $check -eq 1; then ! 69: if cp -p $n.Z $n.$$ 2> /dev/null || cp $n.Z $n.$$; then ! 70: : ! 71: else ! 72: echo cannot backup $n.Z ! 73: res=1; continue ! 74: fi ! 75: fi ! 76: if gzip -d $n.Z; then ! 77: : ! 78: else ! 79: test $check -eq 1 && mv $n.$$ $n.Z ! 80: echo error while uncompressing $n.Z ! 81: res=1; continue ! 82: fi ! 83: if gzip $opt $n; then ! 84: : ! 85: else ! 86: test $check -eq 1 && mv $n.$$ $n.Z ! 87: echo error while recompressing $n ! 88: res=1; continue ! 89: fi ! 90: fi ! 91: test $keep -eq 1 && new=`wc -c < $n.z` ! 92: if test $keep -eq 1 -a `expr \( $old + $block - 1 \) / $block` -lt \ ! 93: `expr \( $new + $block - 1 \) / $block`; then ! 94: if test $pipe -eq 1; then ! 95: rm -f $n.z ! 96: elif test $check -eq 1; then ! 97: mv $n.$$ $n.Z && rm -f $n.z ! 98: else ! 99: gzip -d $n.z && compress $n && rm -f $n.z ! 100: fi ! 101: echo "$n.Z smaller than $n.z -- unchanged" ! 102: ! 103: elif test $check -eq 1; then ! 104: if gzip -t $n.z ; then ! 105: rm -f $n.$$ $n.Z ! 106: else ! 107: test $pipe -eq 0 && mv $n.$$ $n.Z ! 108: rm -f $n.z ! 109: echo error while testing $n.z, $n.Z unchanged ! 110: res=1; continue ! 111: fi ! 112: elif test $pipe -eq 1; then ! 113: rm -f $n.Z ! 114: fi ! 115: done ! 116: exit $res
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.