Watch (859B)
1 #!/bin/rc 2 3 usage='usage: Watch arg ...' 4 5 fn showtop{ 6 echo -n '0,0' >>$1/addr 7 echo 'dot=addr' >>$1/ctl 8 echo show >>$1/ctl 9 } 10 11 if(! test -e /mnt/acme/acme){ 12 echo 'Watch: must be executed from acme' 13 exit '/mnt/acme/acme: no such directory' 14 } 15 if(~ $* ''){ 16 echo 'Watch: no command' 17 echo $usage 18 exit 'no command' 19 } 20 21 id=`{sed 1q /dev/new/ctl | awk '{print $1}'} 22 win=/mnt/acme/$id 23 wd=`{pwd | tr -d ' 24 '} 25 26 echo nomenu >>$win/ctl 27 echo name $wd/+Watch >>$win/ctl 28 29 echo '% ' $* >>$win/body 30 echo $* | rc >>$win/body 31 echo clean >>$win/ctl 32 echo scratch >>$win/ctl 33 showtop $win 34 35 while(test -e $win){ 36 if(sed 1q /mnt/acme/log | grep 'put '$wd'' >/dev/null) { 37 echo dirty >>$win/ctl 38 echo -n '0,$' >>$win/addr 39 echo '% ' $* >$win/data 40 echo $* | rc >>$win/body 41 echo clean >>$win/ctl 42 echo scratch >>$win/ctl 43 showtop $win 44 } 45 } 46 47 echo 'window deleted' >>/dev/null