#!/bin/bash
########################################################################
if [ ! -d ./log ]; then
mkdir ./log
fi
# Make sure this directory exists...
if [ ! -d ./PlayerShops ]; then
mkdir ./PlayerShops
fi
while ( : ) do
# Don't let us use more than 20 MEG, if we do, it's probably a
# memory leak. If the database ever gets huge, this will need to
# be raised.
ulimit -d 20000
echo "Starting ScryMUD at: `date`"
# Just in case.
chmod u+x ./gmud
if [ -x ./gmud ]; then
./gmud >& gmud.log
else
exit 2
fi
RETVAL=$?
echo "ScryMUD stopped at: `date`"
sleep 1 # Make infinite loop not so bad.
date >> ./gmud.log
echo "************END OF CRASH FILE**************" >> ./gmud.log
cat ./gmud.log >> ./GMUD.LOG
tail -500 ./GMUD.LOG > /tmp/gmud.log
mv /tmp/gmud.log ./GMUD.log
# Keep a history of the log files that might have been created.
if [ -f ./log/logfile.txt2 ]; then
mv -f ./log/logfile.txt2 ./log/logfile.txt3
fi
if [ -f ./log/logfile.txt1 ]; then
mv -f ./log/logfile.txt1 ./log/logfile.txt2
fi
if [ -f ./log/logfile.txt ]; then
mv -f ./log/logfile.txt ./log/logfile.txt1
fi
# And 3 object pointer logs.
if [ -f ./log/obj_ptr.log2 ]; then
mv -f ./log/obj_ptr.log2 ./log/obj_ptr.log3
fi
if [ -f ./log/obj_ptr.log1 ]; then
mv -f ./log/obj_ptr.log1 ./log/obj_ptr.log2
fi
if [ -f ./log/obj_ptr.log ]; then
mv -f ./log/obj_ptr.log ./log/obj_ptr.log1
fi
# Core's take up too much space, just going to grap the useful info
# with gdb.
if [ -f ./gdb.out4 ]; then
mv -f ./gdb.out4 ./gdb.out5
fi
if [ -f ./gdb.out3 ]; then
mv -f ./gdb.out3 ./gdb.out4
fi
if [ -f ./gdb.out2 ]; then
mv -f ./gdb.out2 ./gdb.out3
fi
if [ -f ./gdb.out1 ]; then
mv -f ./gdb.out1 ./gdb.out2
fi
# Depending on the shell..one of these may exist.
if [ -f ./core ]; then
echo bt > /tmp/gdb_input
echo quit >> /tmp/gdb_input
gdb gmud ./core < /tmp/gdb_input > gdb.out1
fi
if [ -f ./gmud.core ]; then
echo bt > /tmp/gdb_input
echo quit >> /tmp/gdb_input
gdb gmud ./gmud.core < /tmp/gdb_input > gdb.out1
fi
echo "Checking RETVAL: ${RETVAL}"
if [ $RETVAL = 2 ]; then
echo "Checking for new world"
if [ -f ./World/wrld.new.tar.gz ]; then
echo "Copying over new world database."
cd ./World
#zcat wrld.new.tar.gz | tar -xvf -
# Some platforms have screwed up zcat's it seems. --BEN
rm -f ./wrld.new.tar
gunzip ./wrld.new.tar.gz
tar -xf ./wrld.new.tar
cd ..
fi
echo "Checking for new binary."
if [ -f ./gmud.new ]; then
echo "Copying over new server (gmud) binary."
mv ./gmud.new ./gmud
fi
fi
# echo "Checking for fastboot."
# if [ ! -r .fastboot ]; then
# sleep 60
# else
# rm .fastboot
# sleep 5
# fi
# Might want to change this to send email to another address.
if [ ! -r ./.reboot ]; then #reboot is explicit only
mail ${USER}@localhost < shutdown_msg
exit
fi
done