#!/bin/tcsh -f
# put PID in a file named script.pid
echo $$ > script.pid
# Set the port number.
set port = 4000
set __NOLOG = "NO"
set __AREADEBUG = 0
set __NOSOCKET = ""
set __COUNT = ""
if ( "$1" == "-p" ) set port="$2"
if ( "$2" == "-p" ) set port="$3"
if ( "$3" == "-p" ) set port="$4"
if ( "$4" == "-p" ) set port="$5"
if ( "$5" == "-p" ) set port="$6"
if ( "$6" == "-p" ) set port="$7"
if ( "$1" == "-areadebug") set __AREADEBUG = "$2"
if ( "$2" == "-areadebug") set __AREADEBUG = "$3"
if ( "$3" == "-areadebug") set __AREADEBUG = "$4"
if ( "$4" == "-areadebug") set __AREADEBUG = "$5"
if ( "$5" == "-areadebug") set __AREADEBUG = "$6"
if ( "$6" == "-areadebug") set __AREADEBUG = "$7"
if ( "$1" == "-count") set __COUNT = "-count"
if ( "$2" == "-count") set __COUNT = "-count"
if ( "$3" == "-count") set __COUNT = "-count"
if ( "$4" == "-count") set __COUNT = "-count"
if ( "$5" == "-count") set __COUNT = "-count"
if ( "$6" == "-count") set __COUNT = "-count"
if ( "$7" == "-count") set __COUNT = "-count"
if ( "$1" == "-h" ) then
echo "syntax : mud [-h]"
echo " or : mud [-p <port#>] [-areadebug <level>] [-nosocket] [-n] [-count]"
exit
endif
if ( "$1" == "-n" ) set __NOLOG = "YES"
if ( "$2" == "-n" ) set __NOLOG = "YES"
if ( "$3" == "-n" ) set __NOLOG = "YES"
if ( "$4" == "-n" ) set __NOLOG = "YES"
if ( "$5" == "-n" ) set __NOLOG = "YES"
if ( "$6" == "-n" ) set __NOLOG = "YES"
if ( "$7" == "-n" ) set __NOLOG = "YES"
if ( "$1" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$2" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$3" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$4" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$5" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$6" == "-nosocket" ) set __NOSOCKET = "-nosocket"
if ( "$7" == "-nosocket" ) set __NOSOCKET = "-nosocket"
echo "Starting Mud20..."
set CUR_DIR = /Users/toddj/Mud20
set RUN_FILE = $CUR_DIR/RUNNING
# Change to area directory.
cd $CUR_DIR/area_current
# set the default time to let the script wait before starting anew...
set _SLEEP_ = 3
# Remove the old core file.
if ( -e $CUR_DIR/area_current/core ) then
rm $CUR_DIR/area_current/core >/dev/null
endif
#echo "About to set limits..."
# Set limits.
# nice -20
#
# Commented this out, to see what happens...
# -Manwe
#
# unlimit
while ( 1 )
if ( -e shutdown.txt ) rm -f shutdown.txt
if ( -e $RUN_FILE) then
echo "The mud is already running. Remove the RUNNING file or shut it down first!"
exit
endif
# Fill the RUNNING file with some information
# It may happen you can do something usefull with it ;-)
echo "homedir of the mud : ${CUR_DIR}" > $RUN_FILE
echo "Started by : ${uid} (${user})" >> $RUN_FILE
echo -n "Started on : " >> $RUN_FILE
date >> $RUN_FILE
echo "Parameter list : ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9}" >> $RUN_FILE
echo Finding log file
# If you want to have logs in a different directory,
# change the 'set logfile' line to reflect the directory name.
set index = 1000
while ( 1 )
set logfile = $CUR_DIR/log/$index.log
if ( ! -e $logfile ) break
@ index++
end
echo Found new log file $logfile
# Record starting time
date > $logfile
limit > $logfile
if( "$__NOLOG" != "YES" ) $CUR_DIR/start_tail -f $logfile
# Record initial charges
# charges >> $logfile
echo Startup with log file $logfile
# Do as much as you can to get the binaries 'there'...
if (! -d $CUR_DIR/bin) then
mkdir $CUR_DIR/bin
endif
if (! -e $CUR_DIR/bin/next_mud ) then
if (! -e $CUR_DIR/bin/mud ) then
echo "There are no binaries!"
if( -e $CUR_DIR/compile ) then
echo "Run the script 'compile' to install"
else
echo "Go to the source dir and type 'make'"
endif
rm $RUN_FILE
exit
else
cp -f $CUR_DIR/bin/mud $CUR_DIR/bin/next_mud
endif
endif
cp -f $CUR_DIR/bin/next_mud $CUR_DIR/bin/current_mud
if ( ! -e $CUR_DIR/bin/current_mud ) then
echo There is no binary file.
echo Be sure to compile, and copy bin/mud to bin/next_mud.
rm $RUN_FILE
exit 0
endif
$CUR_DIR/bin/current_mud -p $port -areadebug $__AREADEBUG $__NOSOCKET $__COUNT >&! $logfile
# Analyze the core file
if ( -e $CUR_DIR/area_current/core ) then
echo where | gdb ../bin/current_mud core >> $logfile
echo "\n"
endif
# Record ending charges
# charges >> $logfile
# Restart, giving old connections a chance to die.
#if ( -e shutdown.txt ) then
#rm -f shutdown.txt
#exit 0
#endif
echo
if( "$__NOLOG" != "YES" ) then
echo "Terminating tailing $logfile"
sleep 2
$CUR_DIR/down -tail
endif
if (-e $RUN_FILE ) then
rm -f $RUN_FILE
endif
if ( -e shutdown.txt ) then
rm -f shutdown.txt
if ( -e script.pid ) then
rm script.pid;
endif
echo "The game is shutdown and will not reboot now"
echo "start $0 again when you are ready."
exit 0
else
echo "Starting the mud in ${_SLEEP_} seconds again."
sleep $_SLEEP_
endif
end