summaryrefslogtreecommitdiff
path: root/rc/bin/ircrc
diff options
context:
space:
mode:
Diffstat (limited to 'rc/bin/ircrc')
-rwxr-xr-xrc/bin/ircrc32
1 files changed, 24 insertions, 8 deletions
diff --git a/rc/bin/ircrc b/rc/bin/ircrc
index 9be2bc4e7..0a4a29196 100755
--- a/rc/bin/ircrc
+++ b/rc/bin/ircrc
@@ -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
}