diff options
-rwxr-xr-x | conv | 64 |
1 files changed, 56 insertions, 8 deletions
@@ -5,13 +5,28 @@ IFS=' ' -echo '$NetBSD' -echo -sed ' - /^diff/d; - /^index/d; - s/^--- .*/&/; -' | +{ + echo '$NetBSD' + echo + + # get patch description + if [ x"$1" = x"-i" ]; then + f=`mktemp` + echo 'Edit patch description...' > $f + </dev/tty >/dev/tty vi $f + c=`cat $f` + if [ x"$c" != x"Edit patch description..." ]; then + printf '%s\n\n' "$c" + fi + rm $f + fi + + sed ' + /^diff/d; + /^index/d; + s/^--- .*/&/; + ' +} | while read line; do case "$line" in diff*) ;; @@ -25,4 +40,37 @@ while read line; do *) echo "$line" ;; esac -done +done | { +if [ x"$1" = x"-i" ]; then + # read patch before proceeding + patch=`cat` + + # get patch directory + dir=$2 + if [ -z "$2" ]; then + echo -n 'Package name: ' >/dev/tty + read dir </dev/tty + fi + dir=~/patches/$dir + mkdir -p $dir + + # get patch name + name=$3 + if [ -z "$3" ]; then + echo -n 'Patch name: ' >/dev/tty + read name </dev/tty + fi + + # write patch if it doesn't already exist + if [ -e $dir/$name ]; then + f=`mktemp` + echo error: $dir/$name already exists; saving to $f 1>&2 + exit 1 + else + printf '%s\n' "$patch" > $dir/$name + echo $dir/name 1>&2 + fi +else + cat +fi +} |