# /etc/rc/startup 
# mount /startup device

. /etc/utils

#set -x

# LIBRARY

fail()
{
echo -e "${BRIGHT}$1${NORMAL}"
}

remount_if_umsdos()
{
dev=$1
set -- `mount | rgrep $dev`
mp=$3; type=$5 

if [ "$type" = umsdos ] ; then
	umount $dev
	echo -n "Remount $dev on $mp as MSDOS ... "
	mount $dev $mp -t msdos && echo "done."
fi

}

probe_media()
{
local DEV=$1

case $DEV in
/dev/fd0*|/dev/hd*)
	setlevel 1
        dd if=$DEV of=/dev/null bs=1c count=1 2>/dev/null; rc=$?
	setlevel 5
	
	return $rc
        ;;
/dev/sc*)
	return 0
        ;;
esac
}


probe_mount()
{
local DEV=$1
echo  "Try mount $DEV as /startup"

rc=0
(probe_media $DEV && mount $DEV /startup ) || rc=1


if [ $rc -ne 0 ] ; then
	fail "fail." ; return 1
else
	echo -n "mount OK, check for data ... " 
fi

if [ -d /startup/init ] || [ -d /startup/modules ] ; then
	echo "found."
	remount_if_umsdos $DEV
	return 0
else
	umount /startup 2>/dev/null
	echo "not found."
	return 1
fi
}


try_installed()
{
[ -d /startup/init ] && return 0
return 1 
}



try_mounting()
{
SplitArgs `cat /proc/cmdline`

STARTUP_DEVICE=
if [ "$f1722" ] ; then
        # RAM-system 1722k muLinux
	STARTUP_DEVICE=/dev/fd0H1722
elif [ "$f1440" ] || [ "$rescue" ] ; then
        # RAM-system 1440k muLinux
	STARTUP_DEVICE=/dev/fd0H1440
fi

# try to mount in turn
# Priority: cdrom, scsi-cdrom, zip, hd, floppy

device_list=`
(
echo $STARTUP_DEVICE
/bin/scan ide-cdrom
/bin/scan scsi-cdrom
/bin/scan scsi-hd
/bin/scan ide-hd
)`


mkdir -p /startup
for dev in $device_list; do
test "$dev" && probe_mount $dev && return 0 
sleep 1
done
return 1
}

register()
{
# register startup device

set -- `mount | rgrep /startup`
STARTUP_FS=$5
STARTUP_DEVICE=$1
cat > /setup/sys/startup <<END
STARTUP_DEVICE=$STARTUP_DEVICE
STARTUP_FS=$STARTUP_FS
END
}

load_startup_modules()
{
if [ -f /startup/modules/list ] ; then
        cd /startup/modules
        . /etc/rc/modules
elif [ -f /startup/modules/boot/list ] ; then
        cd /startup/modules/boot
        . /etc/rc/modules
fi

cd /

cp /startup/boot/info /etc 2>/dev/null

# get the user init program, if any

if [ -f /startup/init/init.sh ] ; then
        cp /startup/init/init.sh /etc
fi

}

#-------------
# MAIN
#--------------

(try_installed || try_mounting) && register && load_startup_modules

# End
