From e851cb0c3df489c68f29bb6cef02c7bc061c3251 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Thu, 10 Jul 2014 01:31:17 +0200
Subject: [PATCH] Add wrapper script over wrapper script so log messages get
 read on exit.

---
 TODO                         |  6 ++----
 roguelike                    | 34 ++++------------------------------
 start_server_client_union.sh | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 34 deletions(-)
 create mode 100755 start_server_client_union.sh

diff --git a/TODO b/TODO
index 276d56f..d9f1594 100644
--- 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>
 
diff --git a/roguelike b/roguelike
index 8ca2871..efb362c 100755
--- 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
index 0000000..57133aa
--- /dev/null
+++ b/start_server_client_union.sh
@@ -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
-- 
2.30.2