#!/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 } usage() { echo "Usage: mpatch patchname [output_dir]" exit 1 } doit() { echo $* 1>&2 $* || { echo oops exit 1 } } epoch() { # doit touch -t 7001011000.00 $1 doit touch -t 7001010000.00 $1 } dirfor() { dir=$(dirname $1) if [ ! -d $dir ] then doit mkdir -p $dir RMDIRS="$RMDIRS $dir" fi } if [ $# == 0 ] then usage fi PATCH_NAME=$(stripit $1) OUTPUT_DIR=$2 FILES=$(cat $P/pc/$PATCH_NAME.pc) OUT=$P/patches/$PATCH_NAME.patch TMPOUT=$(mktemp /tmp/patch-$PATCH_NAME-XXXXXX) TXT=$P/txt/$PATCH_NAME.txt OLDDIR=$(basename $(/bin/pwd)) NEWDIR=$OLDDIR-$LOGNAME if is_applied_last $PATCH_NAME then true else echo $PATCH_NAME is not the last-applied patch exit 1 fi doit rm -f $OUT echo "Placing patch in " $OUT if [ -e $TXT -a -s $TXT ] then echo >> $OUT body $TXT >> $OUT echo >> $OUT echo >> $OUT else echo "**** No patch description for $PATCH_NAME ****" fi rm -f $TMPOUT for file in $FILES do OLD_FILE="$file"~"$PATCH_NAME" if [ ! -e $OLD_FILE ] then OLD_FILE=/dev/null fi NEW_FILE=$file XDIFF_OPTS="" if [ ! -e $NEW_FILE ] then NEW_FILE=/dev/null XDIFF_OPTS="-L $file" fi echo diff -puN $XDIFF_OPTS $DIFF_OPTS $OLD_FILE $NEW_FILE diff -puN $XDIFF_OPTS $DIFF_OPTS $OLD_FILE $NEW_FILE | p0-2-p1 $OLDDIR $NEWDIR >> $TMPOUT done diffstat -p1 $TMPOUT >> $OUT 2>/dev/null echo >> $OUT cat $TMPOUT >> $OUT echo >> $OUT echo "_" >> $OUT rm -f $TMPOUT