Fixed some ircrc bugs. Only the last channel given to the -t flag is set as target. Unknown commands are not sent to the server. Control-D can be used to exit the client. When the connection is lost, an error message is displayed and the client waits for user input before exiting. Manual page updated.

This commit is contained in:
ppatience0 2013-01-29 23:56:29 -05:00
parent bc0e5ffa22
commit f0a451d667
2 changed files with 53 additions and 30 deletions

View file

@ -38,9 +38,18 @@ fn work {
title
echo JOIN $target > $netdir/data
}
while (cmd=`{read}) {
msg=()
out=()
if(~ $target *,*)
target = `{echo $target | awk -F',' '{print $NF}'}
while () {
cmd=`{read}
if(! ~ `{cat $netdir/status} *Established*)
exit
if(~ $#cmd 0) {
echo QUIT : Leaving... > $netdir/data
exit
}
msg=()
out=()
switch ($cmd(1)) {
case /!
eval `{mshift $cmd} | while(rc=`{read})echo 'PRIVMSG '^$target^' :' $rc | tee $netdir/data
@ -61,6 +70,8 @@ fn work {
target=$cmd(2)
title
msg = (JOIN `{mshift $cmd})
if(~ $target *,*)
target = `{echo $target | awk -F',' '{print $NF}'}
}
case /l
msg = (LIST `{mshift $cmd})
@ -91,6 +102,8 @@ fn work {
case /x
echo QUIT : Leaving... > $netdir/data
exit
case /*
echo unknown command
case *
msg = 'PRIVMSG '^$target^' :'^$"cmd
out = '('^$target^') ⇐ '^$"cmd
@ -148,19 +161,22 @@ fn privmsg {
s = s ":" $i;
printf("%s\n", s);
}'
}
fn pretty {
while (~ `{cat $netdir/status} *Established*) {
line=`{read}
if(! line=`{read}) {
echo Connection lost
date
exit
}
switch ($line) {
case *PRIVMSG*
line = `{echo -n $line | privmsg}
case *JOIN* *QUIT* *PART* *NICK*
line = `{echo -n $line | misc}
case *NOTICE*
line = `{echo -n $line | notice}
case *PRIVMSG*
line = `{echo -n $line | privmsg}
case *PING*
echo -n $line | sed 's/PING/PONG/' > $netdir/data
line = ()
@ -235,6 +251,6 @@ if(~ $#userpass 2 && ~ $nick $user) {
netdir=`{basename -d $clonefile} ^ / ^ `{cat /fd/4}
echo connect $ip!$port >$netdir/ctl || exit 'cannot connect'
echo connected to tcp!$ip!$port on $netdir
cat $netdir/data | tr -d ' ' | pretty &
cat $netdir/data | tr -d '\x2\xd\x1f' | pretty &
work
}