This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history] / gnu / usr.bin / gzip / zdiff
CommitLineData
3013fe88 1#!/bin/sh
caed0dfe 2# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
3013fe88
NW
3
4# Zcmp and zdiff are used to invoke the cmp or the diff pro-
5# gram on compressed files. All options specified are passed
6# directly to cmp or diff. If only 1 file is specified, then
7# the files compared are file1 and an uncompressed file1.gz.
8# If two files are specified, then they are uncompressed (if
9# necessary) and fed to cmp or diff. The exit status from cmp
10# or diff is preserved.
11
caed0dfe 12PATH="/usr/local/bin:$PATH"; export PATH
3013fe88
NW
13prog=`echo $0 | sed 's|.*/||'`
14case "$prog" in
15 *cmp) comp=${CMP-cmp} ;;
16 *) comp=${DIFF-diff} ;;
17esac
18
19OPTIONS=
20FILES=
21for ARG
22do
23 case "$ARG" in
24 -*) OPTIONS="$OPTIONS $ARG";;
25 *) if test -f "$ARG"; then
26 FILES="$FILES $ARG"
27 else
28 echo "${prog}: $ARG not found or not a regular file"
29 exit 1
30 fi ;;
31 esac
32done
33if test -z "$FILES"; then
34 echo "Usage: $prog [${comp}_options] file [file]"
35 exit 1
36fi
37set $FILES
38if test $# -eq 1; then
39 FILE=`echo "$1" | sed 's/[-.][zZtga]*$//'`
40 gzip -cd "$1" | $comp $OPTIONS - "$FILE"
41 STAT="$?"
42
43elif test $# -eq 2; then
44 case "$1" in
e32dd11d 45 *[-.]gz* | *[-.][zZ] | *.t[ga]z)
3013fe88 46 case "$2" in
e32dd11d
NW
47 *[-.]gz* | *[-.][zZ] | *.t[ga]z)
48 F=`echo "$2" | sed 's|.*/||;s|[-.][zZtga]*||'`
49 gzip -cdfq "$2" > /tmp/"$F".$$
50 gzip -cdfq "$1" | $comp $OPTIONS - /tmp/"$F".$$
3013fe88
NW
51 STAT="$?"
52 /bin/rm -f /tmp/"$F".$$;;
53
e32dd11d 54 *) gzip -cdfq "$1" | $comp $OPTIONS - "$2"
3013fe88
NW
55 STAT="$?";;
56 esac;;
57 *) case "$2" in
e32dd11d
NW
58 *[-.]gz* | *[-.][zZ] | *.t[ga]z)
59 gzip -cdfq "$2" | $comp $OPTIONS "$1" -
3013fe88
NW
60 STAT="$?";;
61 *) $comp $OPTIONS "$1" "$2"
62 STAT="$?";;
63 esac;;
64 esac
65 exit "$STAT"
66else
67 echo "Usage: $prog [${comp}_options] file [file]"
68 exit 1
69fi