ref: 917a1d503a424c5d753b28aea7c9c20416ede021
dir: /chat/
#!/bin/rc # minimal chat client for hubfs: chat [-n NICK] [-j CHANNEL] [chatsrv] # dd -bs `{du -n /n/chat/chat | sed 's/ .*//'} -skip 1 -if /n/chat/chat rfork enf fn helpmessage{ echo ------------------------- echo '/q to quit | /c to list channels | /h for help message' echo '/n NICK to change nick | /j CHANNEL to change channels' echo ------------------------- } fn close{ # echo PART $name from $channel >>/n/$chatsrv/$channel @{echo kill>/proc/$catkill/ctl} } fn shutdown{ close exit } fn sighup{ shutdown } fn sigint{ shutdown } fn clear{ awk 'BEGIN{ for(i = 0; i < '$1'; i++) printf "\x08" }' } channel=chat chatsrv=gchat while (~ $1 -*){ switch($1){ case -n name = $2 shift 2 case -j channel = $2 shift 2 case * echo bad flag $1 '-n NICK -j CHANNEL' shift } } if(! ~ $1 '') chatsrv=$1 if(! test -e /n/$chatsrv/chat) mount /srv/$chatsrv /n/$chatsrv if(! test -e /n/$chatsrv/chat){ echo 'no chat service named $chatsrv found' >[1=2] exit no.chat } echo ' -- hubchat 0.2 --' helpmessage sleep 2 #while(~ $#name 0){ # echo 'please enter a chat name:' # name=`{read} #} name=be0ba #echo JOIN $name to $channel >>/n/$chatsrv/$channel chat-fmt </n/$chatsrv/$channel & catkill=$apid while(talk=`{read}){ clear `{echo $talk | wc -r} switch($talk(1)){ case /q shutdown case /n name=$talk(2) case /j if (~ $talk(2) '') echo must specify a channel to join if not if(test -e /n/chat/$talk(2)){ close channel=$talk(2) cat /n/$chatsrv/$channel & catkill=$apid echo JOIN $name to $channel >>/n/$chatsrv/$channel } if not echo channel does not exist case /h helpmessage echo currently in $channel echo case /c echo Available channels: lc /n/$chatsrv echo ------------------- echo currently in $channel echo case * # ts=`{date -u} # ts=`{echo '('^$ts(4)^')'} if(! ~ $talk ''){ line=`{echo $name '→ ' $talk} echo $line >>/n/$chatsrv/$channel & } } }