#!/bin/sh

. patchfns >/dev/null || . /usr/lib/patch-scripts/patchfns >/dev/null || { \
	echo "Impossible to find my library 'patchfns'."
	echo "Check your install, or go to the right directory"
	exit 1
}
do_apply()
{
	FILES=$(cat $P/pc/$PATCH_NAME.pc)
	for file in $FILES
	do
		copy_file_to_bup $file $PATCH_NAME
	done

	silent=-s
	if [ $opt_force != 0 ]
	then
		silent=
	fi

	if patch -p1 $silent -i "$1" || [ $opt_force != 0 ]
	then
		true
	else
		echo SOMETHING WENT WRONG
		exit 1
	fi
}

add_to_db()
{
	basename "$1" >> "$DB"
}

usage()
{
	echo "Usage: apatch patchname"
	exit 1
}

opt_force=0
PATCH_NAMES=""

for i in $*
do
	case "$i" in
	-f)
		opt_force=1;;
	*)
		PATCH_NAMES="$PATCH_NAMES $i"
	esac
done

if [ x"$PATCH_NAMES" == x ]
then
	usage
fi

apatch()
{
	PATCH_NAME=$(stripit $1)

	need_file_there $P/pc/$PATCH_NAME.pc

	if is_applied "$PATCH_NAME"
	then
		echo "$PATCH_NAME" is already applied
		exit 1
	fi
	
	if [ $opt_force != 0 ]
	then
		echo FORCING PATCH
	fi

	if [ $opt_force != 0 ] || can_apply $P/patches/"$PATCH_NAME".patch
	then
		check_pc_match $P/patches/"$PATCH_NAME".patch $P/pc/"$PATCH_NAME".pc 
		do_apply $P/patches/"$PATCH_NAME".patch
		add_to_db "$PATCH_NAME"
		echo applied $PATCH_NAME
		echo
	else
		echo "$PATCH_NAME" does not apply
		exit 1
	fi
}

for i in $PATCH_NAMES
do
	if ! apatch $i
	then
		exit 1
	fi
done

