#! /bin/sh

if [ $# -lt 2 ]; then
    echo "Usage: $0 directory1 directory2"
    exit 1
fi
if [ $# -eq 3 ]; then
    [ -d "$1/$3" ] && [ -d "$2/$3" ] &&
        exit
    [ ! -e "$1/$3" ] && [ ! -e "$2/$3" ] &&
        echo "$0: something wrong abount '$3'" >&2 && exit
    [ -e "$1/$3" ] && [ ! -e "$2/$3" ] &&
        echo "Only in '$1': '$3'" >&2 && exit
    [ ! -e "$1/$3" ] && [ -e "$2/$3" ] &&
        echo "Only in '$2': '$3'" >&2 && exit
    [ -f "$1/$3" ] && [ -d "$2/$3" ] &&
        echo "'$1/$3' is a regular file but '$2/$3' is a directory" >&2 && exit
    [ -d "$1/$3" ] && [ -f "$2/$3" ] &&
        echo "'$1/$3' is a directory but '$2/$3' is a regular file" >&2 && exit
    
    cmp -s "$1/$3" "$2/$3" || echo "$1/$3" "$2/$3" are differ >&2
    exit
fi
if [ -d "$1" -a -d "$2" ]; then
    echo "$0: start comparing '$1' and '$2'" >&2
fi

list=`mktemp --tmpdir cmpdir.list.XXXXXXXXXX` || exit 1
tmp=`mktemp --tmpdir cmpdir.tmp.XXXXXXXXXX` || exit 1
trap "rm -- '$list' '$tmp'" EXIT

wc=$PWD
cd "$1"
find -print0 >> "$tmp"
cd $wc

cd "$2"
find -print0 >> "$tmp"
cd $wc

sort -z "$tmp" | uniq -z > "$list"


xargs -a "$list" -0 -n 1 -I entry $0 "$1" "$2" "entry"
