Mud20/accounts/
Mud20/accounts/c/
Mud20/accounts/f/
Mud20/accounts/k/
Mud20/accounts/s/
Mud20/accounts/t/
Mud20/area_current/
Mud20/area_current/newareas/
Mud20/bin/
Mud20/clans/
Mud20/gods/
Mud20/old-sources/
Mud20/player/
Mud20/player/a/del/
Mud20/player/b/
Mud20/player/b/bak/
Mud20/player/b/del/
Mud20/player/f/
Mud20/player/f/bak/
Mud20/player/f/del/
Mud20/player/k/
Mud20/player/k/bak/
Mud20/player/k/del/
Mud20/player/k/dmp/
Mud20/player/m/
Mud20/player/m/bak/
Mud20/player/o/
Mud20/player/o/bak/
Mud20/player/p/
Mud20/player/s/
Mud20/player/s/bak/
Mud20/player/s/del/
Mud20/player/t/
Mud20/player/t/del/
Mud20/player/v/
Mud20/public_html/
Mud20/races/
Mud20/skilltables/
__MACOSX/Mud20/accounts/
__MACOSX/Mud20/accounts/c/
__MACOSX/Mud20/accounts/f/
__MACOSX/Mud20/accounts/k/
__MACOSX/Mud20/accounts/s/
__MACOSX/Mud20/area_current/
__MACOSX/Mud20/area_current/core_areas/
__MACOSX/Mud20/area_current/helps/
__MACOSX/Mud20/area_current/newareas/
__MACOSX/Mud20/backups/
__MACOSX/Mud20/bin/
__MACOSX/Mud20/clans/
__MACOSX/Mud20/gods/
__MACOSX/Mud20/log/
__MACOSX/Mud20/old-sources/
__MACOSX/Mud20/player/
__MACOSX/Mud20/player/a/del/
__MACOSX/Mud20/player/b/
__MACOSX/Mud20/player/b/bak/
__MACOSX/Mud20/player/f/
__MACOSX/Mud20/player/f/bak/
__MACOSX/Mud20/player/f/del/
__MACOSX/Mud20/player/k/
__MACOSX/Mud20/player/k/bak/
__MACOSX/Mud20/player/k/del/
__MACOSX/Mud20/player/k/dmp/
__MACOSX/Mud20/player/m/
__MACOSX/Mud20/player/m/bak/
__MACOSX/Mud20/player/o/
__MACOSX/Mud20/player/o/bak/
__MACOSX/Mud20/player/p/
__MACOSX/Mud20/player/s/
__MACOSX/Mud20/player/s/bak/
__MACOSX/Mud20/player/t/del/
__MACOSX/Mud20/player/v/
__MACOSX/Mud20/public_html/
__MACOSX/Mud20/races/
__MACOSX/Mud20/skilltables/
#!/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