xref: /netbsd-src/external/bsd/bzip2/dist/bzdiff (revision c12ab3f1404d3e6320413d6099c78880423d6a49)
14f9a1459Swiz#!/bin/sh
24f9a1459Swiz# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
34f9a1459Swiz
44f9a1459Swiz# Bzcmp/diff wrapped for bzip2,
54f9a1459Swiz# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
64f9a1459Swiz
74f9a1459Swiz# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
84f9a1459Swiz# gram  on compressed files.  All options specified are passed
94f9a1459Swiz# directly to cmp or diff.  If only 1 file is specified,  then
104f9a1459Swiz# the  files  compared  are file1 and an uncompressed file1.gz.
114f9a1459Swiz# If two files are specified, then they are  uncompressed  (if
124f9a1459Swiz# necessary) and fed to cmp or diff.  The exit status from cmp
134f9a1459Swiz# or diff is preserved.
144f9a1459Swiz
154f9a1459SwizPATH="/usr/bin:/bin:$PATH"; export PATH
164f9a1459Swizprog=`echo $0 | sed 's|.*/||'`
174f9a1459Swizcase "$prog" in
184f9a1459Swiz  *cmp) comp=${CMP-cmp}   ;;
194f9a1459Swiz  *)    comp=${DIFF-diff} ;;
204f9a1459Swizesac
214f9a1459Swiz
224f9a1459SwizOPTIONS=
234f9a1459SwizFILES=
244f9a1459Swizfor ARG
254f9a1459Swizdo
264f9a1459Swiz    case "$ARG" in
274f9a1459Swiz    -*)	OPTIONS="$OPTIONS $ARG";;
284f9a1459Swiz     *)	if test -f "$ARG"; then
294f9a1459Swiz            FILES="$FILES $ARG"
304f9a1459Swiz        else
314f9a1459Swiz            echo "${prog}: $ARG not found or not a regular file"
324f9a1459Swiz	    exit 1
334f9a1459Swiz        fi ;;
344f9a1459Swiz    esac
354f9a1459Swizdone
364f9a1459Swizif test -z "$FILES"; then
374f9a1459Swiz	echo "Usage: $prog [${comp}_options] file [file]"
384f9a1459Swiz	exit 1
394f9a1459Swizfi
404f9a1459Swizset $FILES
414f9a1459Swizif test $# -eq 1; then
424f9a1459Swiz	FILE=`echo "$1" | sed 's/.bz2$//'`
434f9a1459Swiz	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
444f9a1459Swiz	STAT="$?"
454f9a1459Swiz
464f9a1459Swizelif test $# -eq 2; then
474f9a1459Swiz	case "$1" in
484f9a1459Swiz        *.bz2)
494f9a1459Swiz                case "$2" in
504f9a1459Swiz	        *.bz2)
514f9a1459Swiz			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
52*c12ab3f1Smaya			tmp=`mktemp "${TMPDIR:-/tmp}"/bzdiff.XXXXXXXXXX` || {
53*c12ab3f1Smaya			      echo 'cannot create a temporary file' >&2
54*c12ab3f1Smaya			      exit 1
55*c12ab3f1Smaya			}
56*c12ab3f1Smaya                        bzip2 -cdfq "$2" > "$tmp"
57*c12ab3f1Smaya                        bzip2 -cdfq "$1" | $comp $OPTIONS - "$tmp"
584f9a1459Swiz                        STAT="$?"
59*c12ab3f1Smaya			/bin/rm -f "$tmp";;
604f9a1459Swiz
614f9a1459Swiz                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
624f9a1459Swiz                        STAT="$?";;
634f9a1459Swiz                esac;;
644f9a1459Swiz        *)      case "$2" in
654f9a1459Swiz	        *.bz2)
664f9a1459Swiz                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
674f9a1459Swiz                        STAT="$?";;
684f9a1459Swiz                *)      $comp $OPTIONS "$1" "$2"
694f9a1459Swiz                        STAT="$?";;
704f9a1459Swiz                esac;;
714f9a1459Swiz	esac
724f9a1459Swizelse
734f9a1459Swiz	echo "Usage: $prog [${comp}_options] file [file]"
744f9a1459Swiz	exit 1
754f9a1459Swizfi
76*c12ab3f1Smayaexit "$STAT"
77