ref: 4ed833284a1ef29cf1957a0dd63191e84ef2b62e
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 } channel=chat chatsrv=chat while (~ $1 -*){ switch($1){ case -n name = $2 shift 2 case -j channel = $2 shift 2 case -s chatsrv = $2 shift 2 case * echo bad flag $1 '-n NICK -j CHANNEL' shift } } if(! ~ $1 '') chatsrv=$1 if(! test -e /n/$chatsrv/ctl) mount /srv/$chatsrv /n/$chatsrv if(! test -e /n/$chatsrv/ctl){ 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} } echo JOIN $name to $channel >>/n/$chatsrv/$channel $home/bin/$objtype/chat-fmt </n/$chatsrv/$channel & catkill=$apid while(talk=`{read}){ switch($talk(1)){ case /q shutdown case /n if(! ~ $talk(2) ''){ echo nick $name ' -> ' $talk(2) >>/n/$chatsrv/$channel name=$talk(2) } if not echo 'you need to provide a nick for /n NICK' case /j if (~ $talk(2) '') echo must specify a channel to join if not if(test -e /n/$chatsrv/$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 } } }