ref: 932aa079d1f8a98ba1d50e7bb4b3ea876053125c
dir: /add/
#!/bin/rc -e rfork ne # Remove commentary lines. # Remove leading and trailing empty lines. # Combine consecutive empty lines between paragraphs. # Remove trailing spaces from lines. # Ensure there's trailing newline. fn cleanmsg{ awk ' /^[ ]*#/ {next} /^[ ]*$/ {empty = 1; next} wet && empty {printf "\n"} {wet = 1; empty = 0} {sub(/[ ]+$/, ""); print $0} ' } fn editmsg{ if(! test -s $msgfile.tmp){ >$msgfile.tmp { echo -n '# tag:' $tag if(! ~ $#before 0) echo -n ' before:' $before if(! ~ $#after 0) echo -n ' after:' $after echo '' echo $data } edit=1 } if(~ $#editor 0) editor=hold $editor $msgfile.tmp cleanmsg < $msgfile.tmp > $msgfile if(! test -s $msgfile){ echo 'empty task message' >[1=2] exit 'task' } } fn gettag{ files=`{ls .pro/todo/} if(! ~ $#change 0) tag=$change if not tag=$#files } fn final{ cp $msgfile .pro/todo/$tag } fn sigexit{ if(! ~ $#msgfile 0) rm -f $msgfile $msgfile.tmp } flagfmt='c:change change, a:after after, b:before before, e:edit'; args='[msg ...]' eval `''{aux/getflags $*} || exec aux/usage msgfile=/tmp/pro-msg.$pid if(! ~ $#* 0){ data=`{echo $*} if(! ~ $#change 0 ) if(test -s .pro/todo/$change){ cat .pro/todo/$change > $msgfile.tmp if(! ~ $#data 0) echo $data >> $msgfile.tmp } @{ flag e + gettag editmsg final } || echo 'could not add task:' $status >[1=2] exit ''