undo 549 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/bin/rc
  2. if(! ~ $#* 1){
  3. echo 'usage: patch/undo patch-name' >[1=2]
  4. exit usage
  5. }
  6. if(! test -d /n/sources/patch){
  7. rfork n
  8. 9fs sources
  9. }
  10. if(! test -d /n/sources/patch/$1){
  11. echo 'no such patch' /n/sources/patch/$1 >[1=2]
  12. exit nopatch
  13. }
  14. d=$1
  15. cd /n/sources/patch/$1 || exit nopatch
  16. if(! patch/okay .){
  17. echo 'bad patch: '$status >[1=2]
  18. exit badpatch
  19. }
  20. fn xxx {
  21. if(cmp $2.new $1){
  22. echo cp /n/sources/patch/$d/$2.backup $1
  23. cp $2.backup $1
  24. }
  25. if not
  26. echo $1 has changed since patch was applied! >[2=1]
  27. }
  28. cat files | sed 's/^/xxx /' |rc