]> Pileus Git - ~andy/rhawk/blobdiff - irc.awk
Save game after flipping the table
[~andy/rhawk] / irc.awk
diff --git a/irc.awk b/irc.awk
index c06cc8e61b50edd128a168f7f4d26c3f2dfffd0d..d4bb41e1f2dde228e23235a0e13ab57d0f114b01 100644 (file)
--- a/irc.awk
+++ b/irc.awk
@@ -137,9 +137,10 @@ function reload() {
 
 # Input parsing
 // {
-       gsub(/\s+/,     " ")
-       gsub(/^ | $/,    "")
-       gsub(/\3[0-9]*/, "")
+       gsub(/\s+/, " ")
+       gsub(/^ | $/, "")
+       gsub(/[\2\11\17\23\25\26\37]/, "")
+       gsub(/[\3\13](1[0-5]|0?[0-9])?(,(1[0-5]|0?[0-9]))?/, "")
        match($0, /(:([^ ]+) )?([A-Z0-9]+)(( [^:][^ ]*)*)( :(.*))?/, arr);
        sub(/^ /, "", arr[4])
        SRC = arr[2]
@@ -179,11 +180,11 @@ CMD == "PING" {
 }
 
 CMD == "332" {
-       CMD = "TOPIC"
+       TOPICS[ARG[2]] = MSG
 }
 
 CMD == "TOPIC" {
-       topics[DST] = MSG
+       TOPICS[ARG[1]] = MSG
 }
 
 # Authentication
@@ -192,6 +193,8 @@ CMD == "319" {
        gsub(/[@+]/, "")
        for (i=1; i<=NF; i++)
                send("WHO " $i " %uhnar")
+       for (i=1; i<=NF; i++)
+               send("TOPIC " $i)
 }
 
 CMD == "ACCOUNT" {
@@ -217,14 +220,11 @@ CMD == "JOIN" {
        USERS[FROM]["real"] = MSG
 }
 
-/^\.auth/ {
-       _who = $2 ? $2 : FROM
-       if (_who in USERS)
-               say(" nick=" USERS[_who]["nick"] \
-                   " user=" USERS[_who]["user"] \
-                   " auth=" USERS[_who]["auth"] \
-                   " real=" USERS[_who]["real"] \
-                   " host=" USERS[_who]["host"])
-       else
-               say("no auth info for " _who)
+CMD == "NICK" {
+       USERS[MSG]["user"] = USERS[FROM]["user"]
+       USERS[MSG]["host"] = USERS[FROM]["host"]
+       USERS[MSG]["nick"] = MSG
+       USERS[MSG]["auth"] = USERS[FROM]["auth"]
+       USERS[MSG]["real"] = USERS[FROM]["real"]
+       delete USERS[FROM]
 }