function send(msg) {
print " > " msg > "/dev/stderr"
print msg
- system("sleep 1")
+ if (!DEBUG)
+ system("sleep 1")
fflush()
}
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
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);
}
}
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]
- match(SRC, /([^! ]+)!/, arr);
+ split(arr[4], ARG)
+ DST = ARG[1]
+
+ match(SRC, /([^! ]+)!([^@ ]+)@([^ ]+\/[^ ]+)?/, arr);
FROM = arr[1]
+ USER = arr[2]
+ HOST = 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()
CMD == "332" {
CMD = "TOPIC"
- DST = ARG
}
CMD == "TOPIC" {