x

Programs, configuration and documentation that don't fit anywhere else
Log | Files | Refs | README | LICENSE

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