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