#! /bin/sh

prg=diff

if [ -x /opt/csw/bin/gdiff ]; then 			# SUN/OS Solaris
    prg=/opt/csw/bin/gdiff
fi

DIFF_PROGRAM=${DIFF_PROGRAM:-$prg}

usage ()
{
    echo "\
Usage: $(basename $0) [options] FILE1 FILE2
Options are same as in diff command."
}

clean_up ()
{
    [ "$ft1" ] && rm -f "$ft1"
    [ "$ft2" ] && rm -f "$ft2"
}

Main ()
{
    file1=""
    file2=""

    while test $# -ne 0; do
	case "$1" in
	    --help|-h)
		usage
		exit 0
		;;
	    -*)
		opts="$opts $1"
		;;
	    *)
		if [ ! "$file1" ]; then
		    file1=$1
		elif [ ! "$file2" ]; then
		    file2=$1
		else
		    usage
		    exit 1
		fi
		;;
	esac
	shift
    done

    if [ ! "$file1" ]; then
	echo "$0: [ERROR] missing argument" >&2
	return 1
    fi

    if [ -d "$file1" ]; then
	# Be recursive.
	# echo "entering $file1"
	for file in "$file1"/*
	do
	    "$0" $opts "$file" $(echo "$file" | sed "s@^$file1/@$file2/@")
	done
    else
	ft1=$(mktemp /tmp/oodiff.$$.1.XXXXXXXXXX) \
	    || ft1="/tmp/oodiff.$$.1"

	ft2=$(amktemp /tmp/oodiff.$$.2.XXXXXXXXXX) \
	    || ft2="/tmp/oodiff.$$.2"

	trap 'clean_up; exit 0' 1 2 3 15

	if odt2txt  "$file1" > "$ft1" 2>/dev/null && \
	   odt2txt "$file2" > "$ft2" 2>/dev/null
	then

	    if $DIFF_PROGRAM -L "$file1" -L "$file2" $opts "$ft1" "$ft2"
	    then
		# no text change
		if diff -q "$file1" "$file2"; then
		    : # no change at all
		else
		    echo "OpenDocument files $file1 and $file2 files differ" \
			 "(same text content)"
		fi
	    fi
	else
	    $DIFF_PROGRAM $opts "$file1" "$file2"
	fi

	clean_up
    fi
}

Main "$@"

# End of file
