#!/bin/sh # # Fork the next patch in the series # . 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: trypatch " exit 1 } if [ $# -ne 1 ] then usage fi NEW=$1 BASE=`stripit $NEW` SERIES=series if [ ! -e $SERIES ] then echo 'File "series" not found' exit 1 fi if grep $BASE $SERIES >& /dev/null ; then echo "Patch $NEW already exists in series" exit 1 fi if [ ! -f $P/patches/$BASE.patch ] ; then echo "Patch $NEW doesn't exist as a file" exit 1 fi $TMPSERIES=$(mktemp /tmp/series-XXXXXXXX) top=$(toppatch) if [ x"$top" == x ] then todo=$(head -1 $SERIES) else last_in_series=$(stripit $(tail -1 $SERIES)) if [ $last_in_series == $top ] then echo "Series fully applied. Ends at $top" exit 0 fi todo=$(grep -C1 "^$top\.patch" $SERIES | tail -1) if [ x$todo = x ] then todo=$(head -1 $SERIES) fi fi if patch -p1 -i $P/patches/$BASE.patch ; then patch -R -p1 -i $P/patches/$BASE.patch $basetodo=$(basename $todo) sed "s/$todo/$BASE/" < $SERIES > $TMPSERIES mv -f $TMPSERIES $SERIES echo "Replaced $todo with $BASE" else echo "Failed to replace $todo with $BASE" fi