#!/bin/sh

#
# Someone sent you a new version of a patch, but you want to turn
# it into an incremental patch.
#
# Usage: updatepatch name-of-delta-patch file-which-contains-replacement-patch
#
# The old version of the patch must be at toppatch
#

. patchfns 2>/dev/null ||
. /usr/lib/patch-scripts/patchfns 2>/dev/null ||
. $PATCHSCRIPTS_LIBDIR/patchfns 2>/dev/null ||
{
	echo "Impossible to find my library 'patchfns'."
	echo "Check your install, or go to the right directory"
	exit 1
}

usage()
{
	echo "Usage: updatepatch name-of-delta-patch file-which-contains-replacement-patch"
	exit 1
}

if [ $# != 2 ]
then
	usage
fi

TOPPATCH=$(toppatch)
PATCHNAME=$1
FILENAME=$2

poppatch
if patch -p1 --dry-run < $FILENAME
then
	true
else
	echo $FILENAME will not apply
	exit 1
fi
pushpatch

echo 1
fpatch $PATCHNAME $(inpatch)
for i in $(touched-by-patch $FILENAME)
do
	fpatch $i
done
echo 2
echo patch -R -p1 -i patches/$TOPPATCH.patch
patch -R -p1 -i patches/$TOPPATCH.patch
echo patch -p1 -i $FILENAME
patch -p1 -i $FILENAME
refpatch
poppatch
pcpatch $PATCHNAME
