1ff8c3af2SDavid du Colombier#!/bin/rc 2ff8c3af2SDavid du Colombier 325f7656aSDavid du Colombierrfork e 425f7656aSDavid du Colombier 5ff8c3af2SDavid du Colombierif(! ~ $#* 1){ 6ff8c3af2SDavid du Colombier echo 'usage: patch/apply patch-name' >[1=2] 7ff8c3af2SDavid du Colombier exit usage 8ff8c3af2SDavid du Colombier} 9ff8c3af2SDavid du Colombier 10ff8c3af2SDavid du Colombierif(! test -d /n/sources/patch){ 11ff8c3af2SDavid du Colombier rfork n 12ff8c3af2SDavid du Colombier 9fs sources 13ff8c3af2SDavid du Colombier} 14ff8c3af2SDavid du Colombier 15ff8c3af2SDavid du Colombierif(! test -d /n/sources/patch/$1){ 16ff8c3af2SDavid du Colombier echo 'no such patch' /n/sources/patch/$1 >[1=2] 17ff8c3af2SDavid du Colombier exit nopatch 18ff8c3af2SDavid du Colombier} 19ff8c3af2SDavid du Colombier 20d1da931cSDavid du Colombierbuiltin cd /n/sources/patch/$1 || exit nopatch 21ff8c3af2SDavid du Colombierif(! patch/okay .){ 22ff8c3af2SDavid du Colombier echo 'bad patch: '$status >[1=2] 23ff8c3af2SDavid du Colombier exit badpatch 24ff8c3af2SDavid du Colombier} 25ff8c3af2SDavid du Colombier 26ff8c3af2SDavid du Colombierif(! echo >.tmp || ! rm .tmp){ 27ff8c3af2SDavid du Colombier echo no write permission >[1=2] 28ff8c3af2SDavid du Colombier exit 'no write permission' 29ff8c3af2SDavid du Colombier} 30ff8c3af2SDavid du Colombier 31ff8c3af2SDavid du Colombierecho -n merge... >[1=2] 32ff8c3af2SDavid du Colombierfn xxx { 33375daca8SDavid du Colombier if(! test -f $1) 34375daca8SDavid du Colombier cp $2 $2.new 35375daca8SDavid du Colombier if not 36ff8c3af2SDavid du Colombier ape/diff3 -m $1 $2.orig $2 >$2.new 37ff8c3af2SDavid du Colombier if(grep -s '^<<<<' $2.new){ 38*cb8c047aSDavid du Colombier echo conflicts merging $1';' see `{pwd}^/$2.new >[1=2] 39ff8c3af2SDavid du Colombier 40ff8c3af2SDavid du Colombier touch failed 41ff8c3af2SDavid du Colombier } 42ff8c3af2SDavid du Colombier} 43ff8c3af2SDavid du Colombierrm -f failed 44ff8c3af2SDavid du Colombiercat files | sed 's/^/xxx /' | rc 45ff8c3af2SDavid du Colombierif(test -f failed){ 46ff8c3af2SDavid du Colombier echo exiting without changes >[1=2] 47ff8c3af2SDavid du Colombier exit failed 48ff8c3af2SDavid du Colombier} 49ff8c3af2SDavid du Colombier 50ff8c3af2SDavid du Colombierecho -n backup... >[1=2] 51ff8c3af2SDavid du Colombierfn xxx { 52ff8c3af2SDavid du Colombier # echo cp $1 $2.backup 53ff8c3af2SDavid du Colombier cp $1 $2.backup 54ff8c3af2SDavid du Colombier} 55ff8c3af2SDavid du Colombiercat files | sed 's/^/xxx /' |rc 56ff8c3af2SDavid du Colombier 57ff8c3af2SDavid du Colombierecho -n copy... >[1=2] 58ff8c3af2SDavid du Colombierfn xxx { 59ff8c3af2SDavid du Colombier # echo cp $2.new $1 60ff8c3af2SDavid du Colombier cp $2.new $1 || touch failed 61ff8c3af2SDavid du Colombier} 62ff8c3af2SDavid du Colombiercat files | sed 's/^/xxx /' | rc 63ff8c3af2SDavid du Colombier 64ff8c3af2SDavid du Colombierfn xxx { 65ff8c3af2SDavid du Colombier # echo cp $2.backup $1 66ff8c3af2SDavid du Colombier cp $2.backup $1 67ff8c3af2SDavid du Colombier} 68ff8c3af2SDavid du Colombier 69ff8c3af2SDavid du Colombierif(test -f failed){ 70ff8c3af2SDavid du Colombier echo copying failed, restoring backups >[1=2] 71ff8c3af2SDavid du Colombier cat files | sed 's/^/xxx /' | rc 72ff8c3af2SDavid du Colombier exit failed 73ff8c3af2SDavid du Colombier} 74ff8c3af2SDavid du Colombier 75ff8c3af2SDavid du Colombierecho >[1=2] 76ff8c3af2SDavid du Colombier 77ff8c3af2SDavid du Colombierecho to update sources: >[1=2] 78ff8c3af2SDavid du Colombiercat files | awk '{print " update " $1 }' >[1=2] 79ff8c3af2SDavid du Colombier 80