#!/bin/sh
die() {
	echo >&2 "$@"
	exit 1
}
dietail() {
	echo >&2 "$@"
	echo >&2 "tail $LOG:"
	tail $LOG
	exit 1
}
[ $# -ge 1 ] || die "Usage: $0 <server version> [<additional parameters for campaignd>]"

VERSION=$1
shift
PARAMETERS="$@"

case $VERSION in
1.4|1.6)
	THREADS=4
	;;
*)
	THREADS=2
	;;
esac

SERVERBASE=$HOME/campaignd/$VERSION

[ -d "$SERVERBASE" ] || die "Server '$VERSION' not found."
[ -r "$SERVERBASE"/COPYING.txt ] || die "GPL file (COPYING.txt) is missing."
[ -d "$SERVERBASE/data" ] || die "Server '$VERSION' has no data/ dir."
[ -d "$SERVERBASE/logs" ] || mkdir $SERVERBASE/logs

ulimit -c unlimited

cd $SERVERBASE || exit 1

while [ true ]
do
	DATE=$(date +"%Y%m%d-%H%M%S")
	COMMAND="$HOME/bin/campaignd-$VERSION $THREADS $PARAMETERS"
	LOG="$SERVERBASE/logs/campaignd.$DATE.log"
	echo "started $VERSION campaignd with command: '$COMMAND' logging to: $LOG"
	$COMMAND > $LOG 2>&1
	EXIT_CODE="$?"
	echo "exit code: $EXIT_CODE"
	mv gmon.out gmon.$DATE.out > /dev/null 2>&1
	case $EXIT_CODE in
		0)	exit ;;
		1|2|3|127)	dietail ;; #"File I/O error." #"Could not parse config file." #"Could not bind to port." #cannot open shared object file
	esac
done
