#! /bin/sh
#
# Usage: $0 <base-src-dir> <patched-src-dir> <old-patches-dir> <new-patches-dir>
#
case $# in
	4)	base="$1"
		patched="$2"
		old="$3"
		new="$4"
		;;
	*)	echo Usage: "$0" '<base-src> <patched-src> <old-patches> <new-patches>' 1>&2
		exit 1
		;;
esac
if [ -e "$new" ]; then
	echo "$new exists!" 1>&2
	exit 1
fi
basedots=`echo "$base" | sed -e s/././g`
patcheddots=`echo "$patched" | sed -e s/././g`
rm -f .empty
touch -t 197001010000.00 .empty
mkdir -p "$new"
( cd "$old" ; find . -type f -print ) | sed -e 's;^./;;' | sort |
while read fn
do
	f1="$base"/"$fn"
	f2="$patched"/"$fn"
	if [ ! -f "$f1" ]; then f1=.empty; fi
	if [ ! -f "$f2" ]; then f2=.empty; fi
	echo $fn
	diff -u "$f1" "$f2" |
		case "$f1" in
			.empty)	case "$f2" in
					.empty)	sed                                                                      -e '1,2s/... ... .. ..:..:.. ....$/Thu Jan  1 00:00:00 1970/' ;;
					*)	sed                                  -e '2s/+++ '$patcheddots'/+++ NEW/' -e '1,2s/... ... .. ..:..:.. ....$/Thu Jan  1 00:00:00 1970/' ;;
				esac ;;
			*)	case "$f2" in
					.empty)	sed -e '1s/--- '$basedots'/--- OLD/'                                     -e '1,2s/... ... .. ..:..:.. ....$/Thu Jan  1 00:00:00 1970/' ;;
					*)	sed -e '1s/--- '$basedots'/--- OLD/' -e '2s/+++ '$patcheddots'/+++ NEW/' -e '1,2s/... ... .. ..:..:.. ....$/Thu Jan  1 00:00:00 1970/' ;;
				esac ;;
		esac > .difftmp
	if [ -s .difftmp ]; then
		( ( : >"$new"/"$fn" ) 2> /dev/null ) || mkdir -p "$new/`echo \"$fn\" | sed -e 's;/[^/]*\$;;'`"
		cat .difftmp > "$new"/"$fn"
	fi
done
rm -f .empty .difftmp
