]> Pileus Git - ~andy/rhawk/blobdiff - irc.awk
Add support for cloaks in Spades
[~andy/rhawk] / irc.awk
diff --git a/irc.awk b/irc.awk
index 3fbd613bc8de1604e69e938c6e1f7952b459a6a0..17f0fb44eaa878b8f5e9d087144b85060208c784 100644 (file)
--- a/irc.awk
+++ b/irc.awk
@@ -21,7 +21,8 @@
 function send(msg) {
        print "  > " msg > "/dev/stderr"
        print msg
-       system("sleep 1")
+       if (!DEBUG)
+               system("sleep 1")
        fflush()
 }
 
@@ -58,16 +59,26 @@ function connect(server, nick, channel) {
                send("NICK " nick)
        }
 }
-function privmsg(to, msg) {
+
+function say(to, msg) {
+       if (msg == "") {
+               msg = to
+               if (DST ~ "^#")
+                       to = DST
+               else if (DST == NICK && FROM)
+                       to = FROM
+               else
+                       to = CHANNEL
+       }
        send("PRIVMSG " to " :" msg)
 }
-function say(msg) {
-       if (DST ~ "^#")
-               privmsg(DST, msg)
-       else if (DST == NICK && FROM)
-               privmsg(FROM, msg)
+
+function action(to, msg)
+{
+       if (msg)
+               say(to, "\001ACTION " msg "\001")
        else
-               privmsg(CHANNEL, msg)
+               say("\001ACTION " to "\001")
 }
 
 function reply(msg) {
@@ -91,12 +102,20 @@ function topic(chan, msg) {
 BEGIN {
        if (CHILD == "") {
                debug("Starting server");
-               status = system("awk -f rhawk -v CHILD=1 -v FIRST=1");
+               cmd = "awk -f rhawk" \
+                     " -v CHILD=1" \
+                     " -v START=" systime() \
+                     " -v DEBUG=" !!DEBUG
+               status = system(cmd " -v FIRST=1");
                while (status)
-                       status = system("awk -f rhawk -v CHILD=1");
+                       status = system(cmd);
                exit(0);
        } else {
-               debug("Starting child: CHILD=" CHILD " FIRST=" FIRST);
+               debug("Starting child:" \
+                     " DEBUG=" DEBUG   \
+                     " CHILD=" CHILD   \
+                     " START=" START   \
+                     " FIRST=" FIRST);
        }
 }
 
@@ -120,17 +139,18 @@ function reload() {
        ARG = arr[8]
        MSG = arr[10]
 
-       match(SRC, /([^! ]+)!/, arr);
+       match(SRC, /([^! ]+)!([^@ ]+)@([^ ]+\/[^ ]+)?/, arr);
        FROM = arr[1]
+       AUTH = arr[3]
 
        match(MSG, /(([^ :,]*)[:,] *)?(.*)/, arr);
        TO  = arr[2]
-       $0  = TO == NICK ? arr[3] : MSG
+       $0  = TO ? arr[3] : MSG
 
-       if (CMD == "PRIVMSG" && DST == NICK && FROM)
+       if (CMD == "PRIVMSG" && DST == NICK && FROM && !TO)
                TO = DST
 
-       set()
+       #set()
 }
 
 # IRC client