# /etc/rc - System startup script run by init before going multiuser.

umask 022
TERM="${TERM-minix}"
PATH=/usr/local/bin:/bin:/usr/bin
export TERM PATH

usage()
{
    echo >&2 "Usage: $0 [-saf] start|stop|down"
    exec intr sh
}

while getopts 'saf' opt
do
    case $opt in
    s)	sflag=t ;;	# Single user
    a)	aflag=t ;;	# Ask for /usr
    f)	fflag=t ;;	# Force a full file system check
    *)	usage
    esac
done
shift `expr $OPTIND - 1`

case "$#:$1" in
1:start|1:stop|1:down)
    action=$1
    ;;
*)  usage
esac

case $action in
start)
    # National keyboard?
    test -f /etc/keymap && loadkeys /etc/keymap

    # Set timezone.
    . /etc/profile

    # Try to read the hardware real-time clock, otherwise do it manually.
    readclock || intr date -q

    # Initialize files.
    printroot >/etc/mtab			# /etc/mtab keeps track of mounts
    >/etc/utmp				# /etc/utmp keeps track of logins

    # /etc/fstab lists the root, tmp and usr devices.
    . /etc/fstab

    # Any swapspace on a device?
    test "$swap" : '/dev/' && mount -s $swap

    # Mount the /usr partition unless this is a single floppy Minix.
    if [ ! -d /usr/bin ]
    then
	if [ "$aflag" -o "$usr" = unknown ]
	then
	    # We need to ask what the /usr du jour is.
	    intr sh -c '
		echo -n "Finish the name of device to mount as /usr: /dev/"
		read usr
		echo "usr=/dev/$usr" >/tmp/usr'
	    . /tmp/usr
	fi
	mount $usr /usr || {
	    echo "\
Please try to mount something else as /usr, then hit CTRL-D to continue startup.
Mount $usr /usr failed -- Single user."
	    intr sh
	}
	rm -f /tmp/usr
    fi

    # Check if the system crashed.
    if shutdown -C
    then
	echo
	echo "The system was not properly shut down.  Checking file systems."
	fflag=t
    fi

    if [ "$fflag" ]
    then
	umount $usr
	intr fsck -r $root
	intr fsck -r $usr
	mount $usr /usr
    fi

    if [ "$sflag" ]
    then
	echo "Single user."
	intr sh
    fi

    # Any swapspace on a file?
    test -n "$swap" -a ! "$swap" : '/dev/' && mount -s $swap

    case "`printroot -r`" in
    /dev/ram)
	# Remove boot-only things to make space.
	rm -rf /boot /minix
    esac

    # Things should be alright now.
    echo;echo "Multiuser startup in progress."
esac

# Further initialization.
test -f /usr/etc/rc && sh /usr/etc/rc $action
test -f /usr/local/etc/rc && sh /usr/local/etc/rc $action

# Any messages?
test "$action" = start -a -f /etc/issue && cat /etc/issue
exit 0
