1cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#!/bin/sh
2cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
3cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
4cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Bzcmp/diff wrapped for bzip2, 
5cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
6cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
7cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
8cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# gram  on compressed files.  All options specified are passed
9cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# directly to cmp or diff.  If only 1 file is specified,  then
10cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# the  files  compared  are file1 and an uncompressed file1.gz.
11cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# If two files are specified, then they are  uncompressed  (if
12cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# necessary) and fed to cmp or diff.  The exit status from cmp
13cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# or diff is preserved.
14cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
15cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectPATH="/usr/bin:/bin:$PATH"; export PATH
16cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectprog=`echo $0 | sed 's|.*/||'`
17cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectcase "$prog" in
18cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project  *cmp) comp=${CMP-cmp}   ;;
19cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project  *)    comp=${DIFF-diff} ;;
20cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectesac
21cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
22cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectOPTIONS=
23cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectFILES=
24cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectfor ARG
25cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectdo
26cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project    case "$ARG" in
27cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project    -*)	OPTIONS="$OPTIONS $ARG";;
28cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project     *)	if test -f "$ARG"; then
29cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project            FILES="$FILES $ARG"
30cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project        else
31cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project            echo "${prog}: $ARG not found or not a regular file"
32cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	    exit 1
33cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project        fi ;;
34cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project    esac
35cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectdone
36cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectif test -z "$FILES"; then
37cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	echo "Usage: $prog [${comp}_options] file [file]"
38cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	exit 1
39cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectfi
40cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
41cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project      echo 'cannot create a temporary file' >&2
42cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project      exit 1
43cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project}
44cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectset $FILES
45cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectif test $# -eq 1; then
46cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	FILE=`echo "$1" | sed 's/.bz2$//'`
47cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
48cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	STAT="$?"
49cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
50cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectelif test $# -eq 2; then
51cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	case "$1" in
52cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project        *.bz2)
53cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                case "$2" in
54cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	        *.bz2)
55cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
56cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        bzip2 -cdfq "$2" > $tmp
57cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
58cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        STAT="$?"
59cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project			/bin/rm -f $tmp;;
60cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
61cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
62cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        STAT="$?";;
63cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                esac;;
64cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project        *)      case "$2" in
65cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	        *.bz2)
66cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
67cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        STAT="$?";;
68cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                *)      $comp $OPTIONS "$1" "$2"
69cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                        STAT="$?";;
70cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project                esac;;
71cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	esac
72cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project        exit "$STAT"
73cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectelse
74cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	echo "Usage: $prog [${comp}_options] file [file]"
75cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	exit 1
76cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectfi
77