#!/bin/sh

# Compare two directory trees with compiled terminfo files.  First
# test which files (if any) differ, on those that do run infocmp to
# produce a detailed report.

usage()
{
    echo "Usage: $0 old-directory new-directory" >&2
    exit 1
}

if [ $# != 2 ]; then
    usage
fi

OLD="$1"
NEW="$2"

if [ ! -d "$OLD" ]; then
    echo "$0: $OLD is not a directory" >&2
    usage
fi

if [ ! -d "$NEW" ]; then
    echo "$0: $NEW is not a directory" >&2
    usage
fi

filelist=$(mktemp) || { echo "$0: could not create temporary file" >&2; exit 1; }

echo "diff -qr --no-dereference $OLD $NEW"
diff -qr --no-dereference "$OLD" "$NEW" | tee "$filelist"
[ -n "$filelist" ] || { rm -f "$filelist"; exit 0; }

grep "$OLD.*$NEW" "$filelist" | while IFS= read -r line
do
    entry=$(basename "$(echo "$line" | cut -d ' ' -f2)")
    echo "infocmp report for $entry:"
    infocmp -x -A "$OLD" -B "$NEW" "$entry" "$entry"
done

rm -f "$filelist"
exit 0
