aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/vipatch14
1 files changed, 11 insertions, 3 deletions
diff --git a/bin/vipatch b/bin/vipatch
index d860f93..ecb45c9 100755
--- a/bin/vipatch
+++ b/bin/vipatch
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/sh -f
# vipatch -- edit unified diff
@@ -6,7 +6,15 @@
# a patch generated by diff -u, depending on the actual
# number of added/removed lines.
-ep | awk -vname=${0##*/} '
+IFS=''
+
+tmp=$(mktemp /tmp/vipatch.XXXXXX)
+trap 'rm $tmp; trap -' INT QUIT EXIT
+
+cat $1 > $tmp
+${EDITOR:-vi} $tmp </dev/tty >/dev/tty
+
+cat $tmp | awk -vname=${0##*/} '
/^@@ / { if (head) printpatch(); head = $0 "\n"; next }
head && /^---/ { print; next }
head && /^\+\+\+/ { print; next }
@@ -47,4 +55,4 @@ function printpatch() {
function abs(n) {
return (n > 0) ? n : -n;
}
-'
+' | { [ -z "$1" ] && cat || cat > $1; }