--- /dev/null
+#!/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
+