1#!/bin/rc 2# patch/diff [-w] patch-name 3rfork e 4fn usage { 5 echo 'usage: patch/diff [-bmnwz] patch-name' >[1=2] 6 exit usage 7} 8 9dopts=(-c) 10while (! ~ $#* 0 && ~ $1 -*) { 11 switch ($1) { 12 case -[bmnw] 13 dopts=($dopts $1) 14 case -z 15 dopts=() 16 case * 17 usage 18 } 19 shift 20} 21if(! ~ $#* 1) 22 usage 23 24if(! test -d /n/sources/patch){ 25 rfork n 26 9fs sources 27} 28 29if(! test -d /n/sources/patch/$1){ 30 echo 'no such patch' /n/sources/patch/$1 >[1=2] 31 exit nopatch 32} 33 34builtin cd /n/sources/patch/$1 || exit nopatch 35if(! patch/okay .){ 36 echo 'bad patch: '$status >[1=2] 37 exit badpatch 38} 39 40d=/n/sources/patch/$1 41fn xxx { 42 echo $1 43 diff $dopts $2.orig $d/$2 | sed 's/^/ /' 44} 45cat files | sed 's/^/xxx /' | rc 46