diff options
Diffstat (limited to 'rc/bin/patch/undo')
-rwxr-xr-x | rc/bin/patch/undo | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/rc/bin/patch/undo b/rc/bin/patch/undo new file mode 100755 index 000000000..177c24ab1 --- /dev/null +++ b/rc/bin/patch/undo @@ -0,0 +1,35 @@ +#!/bin/rc + +rfork e +if(! ~ $#* 1){ + echo 'usage: patch/undo patch-name' >[1=2] + exit 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 +} + +d=$1 +builtin cd /n/sources/patch/$1 || exit nopatch +if(! patch/okay .){ + echo 'bad patch: '$status >[1=2] + exit badpatch +} + +fn xxx { + if(cmp $2.new $1){ + echo cp /n/sources/patch/$d/$2.backup $1 + cp $2.backup $1 + } + if not + echo $1 has changed since patch was applied! >[2=1] +} +cat files | sed 's/^/xxx /' |rc + |