#!/bin/sh

ENTRY=6.0

echo "Pull up the following revisions(s) (requested by X in ticket #X):" > commitmsg

runfile()
{
local IFS
IFS='
'
for line in `awk '{
	if($1=="cvs" && $2=="rdiff") line=$0
	else line=line $0
	if(substr($NF,length($NF),1)=="\\\\") {
		line=substr(line,1,length(line)-1)
	} else {
		if(substr(line,1,10)=="cvs rdiff ") printf "%s\n",line
		line=""
	}
}'`
do
	IFS=' 	
'
	set $line
	if [ "$3" = "-u" ]; then
		shift
	fi
	opt="$3 $4"
	revfrom="${3#-r}"
	revto="${4#-r}"
	rev=`echo | awk -v from="$revfrom" -v to="$revto" '{
		sub("^1.","",from)
		sub("^1.","",to)
		if(from+1==to) printf "1.%d\n", to
		else printf "1.%d-1.%d\n", from+1, to
	}'`
	shift 4
	for file in $*
	do
		file="${file#src/}"
		echo "cvs diff -kk $opt ${file}"
		echo -n "OK? (y/n/p)[y]:" > /dev/tty
		read r < /dev/tty
		case "$r" in
		n*|N*)
			continue
			;;
		p*|P*)
			echo "Patching ${file} via patch"
			viapatch=1
			;;
		*)
			echo "Patching ${file}"
			viapatch=0
			;;
		esac
		if [ "$viapatch" = 0 ]; then
			cvs diff -kk $opt ${file} | patch
		fi
		echo "${file}			${rev}" >> doc/CHANGES-$ENTRY
		echo "	${file}:	revision ${rev}" >> commitmsg
	done
done
}

if [ "$1" = "-u" ]; then
	echo "Please enter URLs"
	while read url
	do
		[ -z "$url" ] && break
		echo "Fetching $url" > /dev/tty
		ftp -4 -o - $url
	done | runfile
elif [ "$#" -ge 1 ]; then
	for url in $*
	do
		echo "Fetching $url" > /dev/tty
		ftp -4 -o - $url
	done | runfile
else
	runfile
fi