home · contact · privacy
Add wrapper script over wrapper script so log messages get read on exit.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 9 Jul 2014 23:31:17 +0000 (01:31 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 9 Jul 2014 23:31:17 +0000 (01:31 +0200)
TODO
roguelike
start_server_client_union.sh [new file with mode: 0755]

diff --git a/TODO b/TODO
index 276d56f003e7369af6da8ffef5953bf302691688..d9f15940234ccfd7711ec3e07562ddc17fde2164 100644 (file)
--- a/TODO
+++ b/TODO
@@ -4,10 +4,6 @@ IN GENERAL:
 
 - expand use of hardcoded_strings module(s)
 
-ROGUELIKE SKRIPT
-
-- do something about the invisibility of error messages
-
 BOTH SERVER/CLIENT:
 
 - make server and client communicate by specific world state info requests 
@@ -15,6 +11,8 @@ BOTH SERVER/CLIENT:
 
 SERVER:
 
+- bug: -v works, and -vs, but not -sv – why?
+
 - consider
   <http://www.plomlompom.de/PlomRogue/plomwiki.php?title=TheCreationOfSpace#comment_0>
 
index 8ca2871a42c998aa1c0258c8474e4027cedc9549..efb362c98ec526c18210bbddf90762ed8cd79008 100755 (executable)
--- a/roguelike
+++ b/roguelike
@@ -1,32 +1,6 @@
 #!/bin/sh
 
-# Abort the script on error.
-set -e
-
-# Use shell script's arguments for server and pipe server output to log file.
-./roguelike-server "$@" > log 2>&1 &
-
-# Give server some time to start up and exit on error.
-sleep 0.01
-
-# The client should not start if the server is not running. (If the server was
-# running in the foreground, any error exit of it so far would be caught by "set
-# -e" above. But "set -e" is blind to error codes generated in the background.)
-kill -0 $! 2> /dev/null
-
-# Give server some time (max. 10 seconds) to generate its worldstate file.
-i=0
-while [ ! -e server/worldstate ] && [ $i -le 1000 ]
-do
-    sleep 0.01
-    i=`expr $i + 1`
-done
-if [ ! -e server/worldstate ]
-then
-    echo "Server failed generating worldstate file within given time limit."
-    false
-fi
-
-# Only start the interface when everything else went well.
-kill -0 $! 2> /dev/null
-./roguelike-client
+# Wrapper to the script so that its suppressed server messages get read on exit.
+./start_server_client_union.sh "$@"
+sync
+cat log
diff --git a/start_server_client_union.sh b/start_server_client_union.sh
new file mode 100755 (executable)
index 0000000..57133aa
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# Abort the script on error.
+set -e
+
+# Use shell script's arguments for server and pipe server output to log file.
+# This script's wrapper script will read it out on exit.
+./roguelike-server "$@" > log 2>&1 &
+
+echo TEST >> log
+
+# Give server some time to start up and exit on error.
+sleep 0.01
+
+# The client should not start if the server is not running. (If the server was
+# running in the foreground, any error exit of it so far would be caught by "set
+# -e" above. But "set -e" is blind to error codes generated in the background.)
+kill -0 $! 2> /dev/null
+
+# Give server some time (max. 10 seconds) to generate its worldstate file.
+i=0
+while [ ! -e server/worldstate ] && [ $i -le 1000 ]
+do
+    sleep 0.01
+    i=`expr $i + 1`
+done
+if [ ! -e server/worldstate ]
+then
+    echo "Server failed generating worldstate file within given time limit."
+    false
+fi
+
+# Only start the interface when everything else went well.
+kill -0 $! 2> /dev/null
+./roguelike-client