X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=start_server_client_union.sh;fp=start_server_client_union.sh;h=57133aae4c5b7ff28a2534ad9fbede305238d4c2;hb=e851cb0c3df489c68f29bb6cef02c7bc061c3251;hp=0000000000000000000000000000000000000000;hpb=6ac951c41a091ffc723840894ddf1e774739511d;p=plomrogue 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