ref: f3125a94649e1a92ec86ac08c90312c01a258e26
dir: /cl/
#!/bin/rc
rfork ne
fn sighup sigint sigterm {
if(! ~ $#svc 0)
unmount /mnt/$svc
echo 'exiting'
}
fn usage {
echo >[1=2] usage: cl [n lines] service
exit usage
}
fn setbuff {
if(~ $#current 0)
return
echo buffer $current > /mnt/$svc/ctl
label $"current@$svc
}
fn tailback {
if(~ $#current 0)
return
count=`{grep $current /mnt/$svc/tabs | sed 's/\[//;s/\].*//'}
# Any unreads plus our scrollback/context lines
count=`{echo $count + $lines | pc}
tail -^$count^f /mnt/$svc/feed
}
current=()
lines=()
svc=()
while(~ $! -*){
switch($1){
case -n
lines=$1
shift
case -*
usage
}
}
svc=$1; shift
if(~ $#lines 0)
lines=20
if(~ $#svc 0)
usage
# Ensure our mount is correct
if(test -d /mnt/$svc)
unmount /mnt/$svc
if(test -e /srv/$svc)
mount /srv/$svc /mnt/$svc
list=`{cat /mnt/$svc/tabs | sed 's/\[.*\] //'}
if(~ $#list 1)
current=$list(1)
if not{
echo select buffer: [$list(1)]
if(! ~ $#list 1)
echo $list(2-)
# read in the selected buffer
selected=`{read}
echo $selected
}
setbuff
tailback