X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd-patch;h=9637b89aa72ad77ccfd98932f1f660673cdcee49;hp=560b1d6056bda1e24093b58f11125ec386c4bcfa;hb=refs%2Fheads%2Fupstream;hpb=797faf1430c1284c112e3255d0c65836aad858db diff --git a/ircd-patch b/ircd-patch index 560b1d6..9637b89 100755 --- a/ircd-patch +++ b/ircd-patch @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # -# $Id: ircd-patch,v 1.4 2002-04-09 22:40:56 vampire Exp $ +# $Id: ircd-patch,v 1.5.2.1 2005-12-29 03:41:56 entrope Exp $ # # # Experimental centralized patch system for ircu @@ -48,24 +48,25 @@ done update_patchlist() { list="" for name in $PLIST ; do - [ -f $MARKS/$name ] && list="$list.$name" + test -f $MARKS/$name && list="$list.$name" done echo "/* This file was automatically generated by ircd-patch */" > $PLIST_FILE echo "#define PATCHLIST \"$list\"" >> $PLIST_FILE echo "Updated $PLIST_FILE" } -[ ! -d $DIFFS ] && (echo "*** Missing $DIFFS, creating it" ; mkdir -p $DIFFS) -[ ! -d $MARKS ] && (echo "*** Missing $MARKS, creating it" ; mkdir -p $MARKS) +test -d $DIFFS || (echo "*** Missing $DIFFS, creating it" ; mkdir -p $DIFFS) +test -d $MARKS || (echo "*** Missing $MARKS, creating it" ; mkdir -p $MARKS) dry_run() { - patch -p0 -N -t --dry-run $2 >/dev/null < $1 + rejects=`patch -p0 -N -t --dry-run $2 < $1 | grep "hunk FAILED" | sed -e 's/.*to file / /;s/\.rej$//'` + test -z "$rejects" } patch_list() { echo "Available patches (* marks applied patches):" for name in $PLIST ; do - [ -f $MARKS/$name ] && echo -n " * " || echo -n " " + test -f $MARKS/$name && echo -n " * " || echo -n " " echo $name done echo "Done." @@ -74,11 +75,11 @@ patch_list() { patch_test() { echo "Testing patches:" list="$*" - [ -z "$list" ] && list=$PLIST + test "z$list" = "z" && list=$PLIST for name in $list ; do fname=$DIFFS/$name.diff echo -ne " $name\t" - if [ ! -f $MARKS/$name ] ; then + if test ! -f $MARKS/$name ; then if dry_run "$fname" ; then echo -n " OK" else @@ -102,22 +103,24 @@ patch_test() { patch_add() { name=$1 fname="$DIFFS/$name.diff" - if [ ! -f $fname ]; then + if test ! -f $fname ; then echo "Patch $name ($fname) does not exist" retcode=3 return fi - if [ $force -lt 2 -a -f $MARKS/$name ] ; then + if test $force -lt 2 -a -f $MARKS/$name ; then echo "Patch $name seems already applied" retcode=4 return fi - if [ $force -lt 1 ]; then + if test $force -lt 1 ; then echo -n "Testing $fname... " if ! dry_run $fname ; then echo "Failed (use -f to force)." + echo "The following files failed patching:" + echo "$rejects" retcode=2 return fi @@ -137,22 +140,24 @@ patch_add() { patch_del() { name=$1 fname="$DIFFS/$name.diff" - if [ ! -f $fname ]; then + if test ! -f $fname ; then echo "Patch $name ($fname) does not exist" retcode=3 return fi - if [ $force -lt 2 -a ! -f $MARKS/$name ] ; then + if test $force -lt 2 -a ! -f $MARKS/$name ; then echo "Patch $name doesn't seem to be applied" retcode=4 return fi - if [ $force -lt 1 ]; then + if test $force -lt 1 ; then echo -n "Testing $fname... " if ! dry_run $fname -R ; then echo "Failed (use -f to force)." + echo "The following files failed patching:" + echo "$rejects" retcode=2 return fi @@ -183,8 +188,8 @@ do_help() { echo "a patch is already applied." } -while [ "$1" == "-f" ]; do - force=$[$force + 1] +while test "$1" = "-f" ; do + force=`expr $force + 1` shift done