From: Andy Spencer Date: Thu, 25 Apr 2013 07:50:18 +0000 (+0000) Subject: Improve input parsing X-Git-Url: http://pileus.org/git/?p=~andy%2Frhawk;a=commitdiff_plain;h=7eb267b1b1dd3ae5212cf852eb8f46c15feb2f68 Improve input parsing --- diff --git a/irc.awk b/irc.awk index 17f0fb4..2f5d220 100644 --- a/irc.awk +++ b/irc.awk @@ -36,15 +36,16 @@ function debug(msg) { fflush() } -function set() { +function set(i) { debug("CMD: [" CMD "]") debug("SRC: [" SRC "]") debug("DST: [" DST "]") debug("FROM: [" FROM "]") debug("TO: [" TO "]") - debug("ARG: [" ARG "]") debug("MSG: [" MSG "]") debug("$0: [" $0 "]") + for (i in ARG) + debug("ARG"i": [" ARG[i] "]") } # Functions @@ -132,16 +133,19 @@ function reload() { gsub(/\s+/, " ") gsub(/^ | $/, "") gsub(/\3[0-9]*/, "") - match($0, /(:([^ ]+) +)?(([A-Z0-9]+) +)(([^ ]+) +)?(([^: ]+) +)?(:(.*))/, arr); + match($0, /(:([^ ]+) )?([A-Z0-9]+)(( [^:][^ ]*)*)( :(.*))?/, arr); + sub(/^ /, "", arr[4]) SRC = arr[2] - CMD = arr[4] - DST = arr[6] - ARG = arr[8] - MSG = arr[10] + CMD = arr[3] + MSG = arr[7] + + split(arr[4], ARG) + DST = ARG[1] match(SRC, /([^! ]+)!([^@ ]+)@([^ ]+\/[^ ]+)?/, arr); FROM = arr[1] - AUTH = arr[3] + USER = arr[2] + HOST = arr[3] match(MSG, /(([^ :,]*)[:,] *)?(.*)/, arr); TO = arr[2] @@ -164,7 +168,6 @@ CMD == "PING" { CMD == "332" { CMD = "TOPIC" - DST = ARG } CMD == "TOPIC" { diff --git a/rhawk b/rhawk index 3186f99..46e2c65 100755 --- a/rhawk +++ b/rhawk @@ -48,7 +48,7 @@ FROM == OWNER && TO == NICK && /^\.msg/ { } # Kick handling -CMD == "KICK" && ARG == NICK { +CMD == "KICK" && ARG[2] == NICK { kick_delay = (kick_delay + 2) * 2 system("sleep " kick_delay) join(DST)