#!/bin/sh
# Copyright (C) 2011 O.S. Systems Software LTDA.
# Licensed on MIT

rootfs_enabled() {
	return 0
}

rootfs_run() {
        if [ -z "$ROOTFS_DIR" ]; then
		return
        fi
	C=0
	delay=${bootparam_rootdelay:-1}
	timeout=${bootparam_roottimeout:-5}
	while ! mountpoint -q $ROOTFS_DIR; do
		if [ $(( $C * $delay )) -gt $timeout ]; then
			fatal "root '$bootparam_root' doesn't exist or does not contain a /dev."
		fi

		if [ -n "$bootparam_root" ]; then
			debug "No e2fs compatible filesystem has been mounted, mounting $bootparam_root..."

			if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
				root_uuid=`echo $bootparam_root | cut -c6-`
				bootparam_root="/dev/disk/by-uuid/$root_uuid"
			fi

			if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
				root_partuuid=`echo $bootparam_root | cut -c10-`
				bootparam_root="/dev/disk/by-partuuid/$root_partuuid"
			fi

			if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
				root_partlabel=`echo $bootparam_root | cut -c11-`
				bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
			fi

			if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
				root_partlabel=`echo $bootparam_root | cut -c11-`
				bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
			fi

			if [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
				root_label=`echo $bootparam_root | cut -c7-`
				bootparam_root="/dev/disk/by-label/$root_label"
			fi

			if [ -e "$bootparam_root" ]; then
				flags=""
				if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
					if [  -n "$bootparam_rootflags" ]; then
						bootparam_rootflags="$bootparam_rootflags,"
					fi
					bootparam_rootflags="${bootparam_rootflags}ro"
				fi
				if [ -n "$bootparam_rootflags" ]; then
					flags="$flags -o$bootparam_rootflags"
				fi
				if [ -n "$bootparam_rootfstype" ]; then
					flags="$flags -t$bootparam_rootfstype"
				fi
				mount $flags $bootparam_root $ROOTFS_DIR
				if mountpoint -q $ROOTFS_DIR; then
					break
				else
					# It is unlikely to change, but keep trying anyway.
					# Perhaps we pick a different device next time.
					umount $ROOTFS_DIR
					fi
				fi
		fi
		debug "Sleeping for $delay second(s) to wait root to settle..."
		sleep $delay
		C=$(( $C + 1 ))
	done
}
