Annotation of src/usr.bin/compress/zdiff, Revision 1.2
1.1 millert 1: #!/bin/sh -
2: #
1.2 ! otto 3: # $OpenBSD$
! 4: #
1.1 millert 5: # Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
6: #
7: # Permission to use, copy, modify, and distribute this software for any
8: # purpose with or without fee is hereby granted, provided that the above
9: # copyright notice and this permission notice appear in all copies.
10: #
11: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18: #
19: # Sponsored in part by the Defense Advanced Research Projects
20: # Agency (DARPA) and Air Force Research Laboratory, Air Force
21: # Materiel Command, USAF, under agreement number F39502-99-1-0512.
22: #
23:
24: # Set $prog based on $0
25: case $0 in
26: *cmp) prog=cmp
27: ;;
28: *) prog=diff
29: ;;
30: esac
31: USAGE="usage: z$prog [options] file1 [file2]"
32:
33: # Pull out any command line flags so we can pass them to diff/cmp
34: # XXX - assumes there is no optarg
35: flags=
36: while test $# -ne 0; do
37: case "$1" in
38: --)
39: shift
40: break
41: ;;
42: -*)
43: flags="$flags $1"
44: shift
45: ;;
46: *)
47: break
48: ;;
49: esac
50: done
51:
52: if [ $# -eq 1 ]; then
53: # One file given, compare compressed to uncompressed
54: files="$1"
55: case "$1" in
56: *[._-][Zz])
57: files="${1%??}"
58: ;;
59: *[._-]gz)
60: files="${1%???}"
61: ;;
62: *.t[ag]z)
63: files="${1%??}"ar
64: ;;
65: *) echo "z$prog: unknown suffix" 1>&2
66: exit 1
67: esac
68: compress -cdfq "$1" | $prog $flags - "$files"
69: status=$?
70: elif [ $# -eq 2 ]; then
71: # Two files given, compare the two uncompressing as needed
72: case "$1" in
73: *[._-][Zz]|*[._-]gz|*.t[ag]z)
74: files=-
75: filt="compress -cdfq $1"
76: ;;
77: *)
78: files="$1"
79: ;;
80: esac
81: case "$2" in
82: *[._-][Zz]|*[._-]gz|*.t[ag]z)
83: if [ "$files" = "-" ]; then
84: tmp=`mktemp -t z$prog.XXXXXXXXXX` || exit 1
85: trap "rm -f $tmp" 0 1 2 3 13 15
86: compress -cdfq "$2" > $tmp
87: files="$files $tmp"
88: else
89: files="$files -"
90: filt="compress -cdfq $2"
91: fi
92: ;;
93: *)
94: files="$files $2"
95: ;;
96: esac
97: if [ -n "$filt" ]; then
98: $filt | $prog $flags $files
99: else
100: $prog $flags $files
101: fi
102: status=$?
103: else
104: echo "$USAGE" 1>&2
105: exit 1
106: fi
107:
108: exit $status