## The system's main boot script.

##
## Some functions used by the main script
##

# launch <executable path> [thread to wait for]

launch() {
	if [ -f "/boot/$1" ]
	then
		"/boot/$1" &
		[ "$2" != "" ] && waitfor "$2"
		return 1
	else
		echo There is no "$1"
	fi
	return 0
}

# launchscript <script path>

launchscript() {
	if [ -f "/boot/$1" ]
	then
		. "/boot/$1"
	fi
}

# runprog <executable path>

runprog() {
	if [ -f "/boot/$1" ]
	then
		"/boot/$1"
		return 1
	else
		echo There is no "$1"
	fi
	return 0
}

##
## Main script starts here
##

# Set up stdin/out/err to nirvana

exec </dev/null
exec >/dev/null 2>&1

# Standard locations of boot files
SCRIPTS=beos/system/boot
SERVERS=beos/system/servers

# Set up the environment

export SAFEMODE=`/bin/safemode`

launchscript $SCRIPTS/SetupEnvironment

# Sets timezone etc.
runprog beos/bin/clockconfig

# Launch servers

# We must wait for the app_server and registrar to be ready
#launch $SERVERS/app_server picasso			# launch app_server
launch $SERVERS/registrar _roster_thread_	# launch registrar

if [ "$SAFEMODE" != "yes" ]; then
	launch $SERVERS/syslog_daemon
fi

# Launch consoled (to be removed later - this starts the mini console)
launch beos/bin/consoled

# Check for daily saving time
# TODO to be launched when tracker and deskbar are launched
#launch beos/bin/dstcheck

