#!/bin/sh
# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh

# lzcmp and lzdiff are used to invoke the cmp or the diff pro-
# gram  on compressed files.  All options specified are passed
# directly to cmp or diff.  If only 1 file is specified,  then
# the files compared  are file1 and an uncompressed file1.lzma.
# If two files are specified, then they are  uncompressed  and
# fed  to  cmp  or  diff.  The exit status from cmp or diff is
# preserved.

prog=`echo $0 | sed 's|.*/||'`
case "$prog" in
  *cmp) comp=${CMP-cmp}   ;;
  *)    comp=${DIFF-diff} ;;
esac

OPTIONS=
FILES=
for ARG
do
    case "$ARG" in
    -*)	OPTIONS="$OPTIONS $ARG";;
     *)	if test -f "$ARG"; then
            FILES="$FILES $ARG"
        else
            echo "${prog}: $ARG not found or not a regular file"
	    exit 2
        fi ;;
    esac
done
if test -z "$FILES"; then
	echo "Usage: $prog [${comp}_options] file [file]"
	exit 2
fi
set $FILES
if test $# -eq 1; then
	FILE=`echo "$1" | sed 's/[-.][tlaz]*$//'`
	lzma -dc "$1" | $comp $OPTIONS - "$FILE"

elif test $# -eq 2; then
	case "$1" in
        *[-.]lzma | *.t[la]z)
                case "$2" in
	        *[-.]lzma | *.t[la]z)
			F=`echo "$2" | sed 's|.*/||;s|[-.][tlaz]*||'`
			TF=`/usr/bin/mktemp ${TMPDIR:-/tmp}/"$F".XXXXXXXXXX` || exit 1
			trap 'rm -f "$TF"; exit 2' EXIT HUP INT PIPE TERM
			lzma -dc "$2" > "$TF" || exit
                        lzma -dc "$1" | $comp $OPTIONS - "$TF"
                        STAT="$?"
			rm -f "$TF" || STAT=2
			trap EXIT HUP INT PIPE TERM
			exit $STAT;;

                *)      lzma -dc "$1" | $comp $OPTIONS - "$2";;
                esac;;
        *)      case "$2" in
	        *[-.]lzma | *.t[la]z)
                        lzma -dc "$2" | $comp $OPTIONS "$1" -;;
                *)      $comp $OPTIONS "$1" "$2";;
                esac;;
	esac
else
	echo "Usage: $prog [${comp}_options] file [file]"
	exit 2
fi
