#!/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/chatrfork enffn 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=chatchatsrv=chatwhile (~ $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=$1if(! test -e /n/$chatsrv/chat) mount /srv/$chatsrv /n/$chatsrvif(! test -e /n/$chatsrv/chat){ echo 'no chat service named $chatsrv found' >[1=2] exit no.chat}echo ' -- hubchat 0.2 --'helpmessagesleep 2while(~ $#name 0){ echo 'please enter a chat name:' name=`{read}}echo JOIN $name to $channel >>/n/$chatsrv/$channelcat /n/$chatsrv/$channel &catkill=$apidwhile(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/chat/$talk(2)){ close channel=$talk(2) cat /n/chat/$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/chat/$channel } }}
#!/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 *
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}
}
echo JOIN $name to $channel >>/n/$chatsrv/$channel
cat /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/chat/$talk(2)){
close
channel=$talk(2)
cat /n/chat/$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/chat/$channel
}
}
}