]> Pileus Git - ~andy/rhawk/blobdiff - irc.awk
better
[~andy/rhawk] / irc.awk
diff --git a/irc.awk b/irc.awk
index 0681885f41386b2e8f0684c57f91a19d8030419e..84b88f458c7dba90ca121fd9769acbae656bb8a0 100644 (file)
--- a/irc.awk
+++ b/irc.awk
@@ -41,6 +41,7 @@ function set() {
        debug("DST:  " DST)
        debug("FROM: " FROM)
        debug("TO:   " TO)
+       debug("ARG:  " ARG)
        debug("MSG:  " MSG)
 }
 
@@ -108,14 +109,15 @@ function reload() {
 
 # Input parsing
 // {
-       match($0, /(:([^ ]+) +)?(([A-Z0-9]+) +)(([^ ]+) +)?([^:]*:(.*))/, arr);
+       match($0, /(:([^ ]+) +)?(([A-Z0-9]+) +)(([^ ]+) +)?(([^: ]+) +)?(:(.*))/, arr);
        gsub(/\s+/,     " ", arr[8])
        gsub(/^ | $/,    "", arr[8])
        gsub(/\3[0-9]*/, "", arr[8])
        SRC = arr[2]
        CMD = arr[4]
        DST = arr[6]
-       MSG = arr[8]
+       ARG = arr[8]
+       MSG = arr[10]
 
        match(SRC, /([^! ]+)!/, arr);
        FROM = arr[1]
@@ -137,7 +139,11 @@ CMD == "PING" {
        send("PING " MSG)
 }
 
-CMD == "332" ||
+CMD == "332" {
+       CMD = "TOPIC"
+       DST = ARG
+}
+
 CMD == "TOPIC" {
        topics[DST] = MSG
 }