#! /bin/sh
#
# Restart LPMud a lot of times, in case of a crash.
#
NICE_VAL="-19"
MUDHOME=/sherlock/u1/home/sherlock/curmud
MUDUSER=sherlock
PROCIDFILE=$MUDHOME/.procs
#
# Let's do everything from the mud directory
#
cd $MUDHOME
#
case `whoami` in
$MUDUSER ) : ;;
* ) echo 'permission denied' >&2
exit 0 ;;
esac
umask 007
while [ $# -gt 0 ]; do
case $1 in
-k ) KILL_MUD=1 ;;
-n ) shift ; NICE_VAL="$1" ;;
[1-9][0-9]* ) NUM_TO_RESET=$1 ;;
* ) echo $1 ": unknown switch to" $0 ; exit 1;;
esac
shift
done
#
# If a number is not given on the command line, set a default
#
if [ "${NUM_TO_RESET}" -eq "" ]; then
NUM_TO_RESET=100
fi
# let's do it!
if [ "${KILL_MUD}" -ne "1" ]; then
echo $$ > $PROCIDFILE
(/bin/nice $NICE_VAL ./make_list $PROCIDFILE ) &
echo "Restart ${i}." >> mudlib/lpmud.log
date >> mudlib/lpmud.log
echo "The game has been up since" > mudlib/UPSINCE
date >> mudlib/UPSINCE
/bin/nice $NICE_VAL ./parse >> mudlib/lpmud.log 2>&1
tail -20 mudlib/debug.log >> mudlib/lpmud.log
fi
#
# This is the Killing section
#
for i in `cat $PROCIDFILE ` ; do
if [ $i != $$ ] ; then
kill -9 $i
if [ $? != 0 ]; then
echo "Process ID $i killed"
fi
fi
done
if [ "${KILL_MUD}" -eq "1" ]; then
echo "Mud taken down"
exit 0
fi
exec $0 -n $NICE_VAL `expr $NUM_TO_RESET - 1`