]> Pileus Git - ~andy/rhawk/commitdiff
Updates awksock
authorAndy Spencer <andy753421@gmail.com>
Fri, 3 Feb 2012 21:39:09 +0000 (21:39 +0000)
committerAndy Spencer <andy753421@gmail.com>
Fri, 3 Feb 2012 21:39:09 +0000 (21:39 +0000)
irc.awk
spades.awk

diff --git a/irc.awk b/irc.awk
index dd090f73be7052aa4159fd318e1abdefb2ef47b9..ac190bc75aec7f6836cb30884a1783ec2f45066d 100644 (file)
--- a/irc.awk
+++ b/irc.awk
 
 # Debugging
 function send(msg) {
-       print msg
-       fflush()
+       print msg |& socket
+       print "  > " msg
+}
+function recv(msg) {
+       print msg |& child
+       print "  < " msg
 }
-
 function debug(msg) {
        print "  # " msg > "/dev/stderr"
-       fflush()
 }
 
 function set() {
@@ -57,18 +59,27 @@ function connect(server, port, nick, channel) {
                socket = "/inet/tcp/0/" SERVER "/" PORT
 
                debug("Starting server");
-
-               status = system();
-               while (status)
-                       status = system("awk -f rhawk -v CHILD=1");
-
-               #print "  > " msg > "/dev/stderr"
-               print msg
-               #print ""         > "/dev/stderr"
-               #print "  < " $0  > "/dev/stderr"
-               fflush()
-
-               exit(0);
+               while (running) {
+                       printf "" |& child 
+                       printf "" |& socket
+
+                       while (connected) {
+                               if (!(fd = select("from", child, socket))) {
+                                       print "timeout"
+                                       continue
+                               }
+                               if (!(st = fd |& getline line)) {
+                                       print "broken pipe"
+                                       close(fd)
+                                       break
+                               }
+                               if (fd == socket)
+                                       recv(line)
+                               if (fd == child)
+                                       send(line)
+                               fflush()
+                       }
+               }
        } else {
                if (first)
                        setup()
index 3eeab902d350454fdd95d37a05ce53afa3b8fb22..51d18d6824be8c592074b39ba8c442b27db9f50d 100644 (file)
@@ -315,7 +315,7 @@ FROM == OWNER &&
 
 !sp_valid &&
 (sp_state "bid" || sp_state == "play") &&
-/^\.(bid|play)\>$/ {
+/^\.(bid|play)\>/ {
        if (FROM in sp_players)
                say(".slap " FROM ", it is not your turn.")
        else
@@ -458,7 +458,7 @@ sp_state == "play" &&
                say("There is no game in progress")
        }
        if (sp_state == "join") {
-               say("Waiting for palyers: " \
+               say("Waiting for players: " \
                    sp_order[0] " " sp_order[1] " " \
                    sp_order[2] " " sp_order[3])
        }