#!/bin/rc
# patch/diff [-w] patch-name
rfork e
fn usage {
echo 'usage: patch/diff [-bmnwz] patch-name' >[1=2]
exit usage
}
dopts=(-c)
while (! ~ $#* 0 && ~ $1 -*) {
switch ($1) {
case -[bmnw]
dopts=($dopts $1)
case -z
dopts=()
case *
usage
}
shift
}
if(! ~ $#* 1)
usage
if(! test -d /n/sources/patch){
rfork n
9fs sources
}
if(! test -d /n/sources/patch/$1){
echo 'no such patch' /n/sources/patch/$1 >[1=2]
exit nopatch
}
builtin cd /n/sources/patch/$1 || exit nopatch
if(! patch/okay .){
echo 'bad patch: '$status >[1=2]
exit badpatch
}
d=/n/sources/patch/$1
fn xxx {
echo $1
diff $dopts $2.orig $d/$2 | sed 's/^/ /'
}
cat files | sed 's/^/xxx /' | rc
|