commit 11c58be98c6575552b27a5998fbe6afa78d4649e from: Oliver Lowe date: Sat Aug 10 08:32:24 2024 UTC import Watch in rc commit - e9e55ec0fc4f4626523dc296d3ccec82a3cef5da commit + 11c58be98c6575552b27a5998fbe6afa78d4649e blob - /dev/null blob + 43390cce13bbdf20ac306c69830d4499b80b9270 (mode 755) --- /dev/null +++ rc/Watch @@ -0,0 +1,47 @@ +#!/bin/rc + +usage='usage: Watch arg ...' + +fn showtop{ + echo -n '0,0' >>$1/addr + echo 'dot=addr' >>$1/ctl + echo show >>$1/ctl +} + +if(! test -e /mnt/acme/acme){ + echo 'Watch: must be executed from acme' + exit '/mnt/acme/acme: no such directory' +} +if(~ $* ''){ + echo 'Watch: no command' + echo $usage + exit 'no command' +} + +id=`{sed 1q /dev/new/ctl | awk '{print $1}'} +win=/mnt/acme/$id +wd=`{pwd | tr -d ' +'} + +echo nomenu >>$win/ctl +echo name $wd/+Watch >>$win/ctl + +echo '% ' $* >>$win/body +echo $* | rc >>$win/body +echo clean >>$win/ctl +echo scratch >>$win/ctl +showtop $win + +while(test -e $win){ + if(sed 1q /mnt/acme/log | grep 'put '$wd'' >/dev/null) { + echo dirty >>$win/ctl + echo -n '0,$' >>$win/addr + echo '% ' $* >$win/data + echo $* | rc >>$win/body + echo clean >>$win/ctl + echo scratch >>$win/ctl + showtop $win + } +} + +echo 'window deleted' >>/dev/null