#!/bin/sh

export PATH=/usr/bin:/bin:/usr/sbin:/sbin

FAKE_ROOT=/system
FAKE_ROOT_RO=/system-ro
INFORM_PATH=/mnt/inform

STATUS_DIR=${FAKE_ROOT}/opt/data/recovery
STATUS_FILE=${STATUS_DIR}/RW.STATUS
DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH

SYNC="/bin/sync"
MKDIR="/bin/mkdir"
MOUNT="/bin/mount"
UMOUNT="/bin/umount"
REBOOT="/sbin/reboot"
BLKID="/sbin/blkid"

#------------------------------------------------
#       mount_partitions
#------------------------------------------------
mount_partitions() {
    "$MOUNT" -t proc none /proc
    "$MOUNT" -t sysfs none /sys
    "$MOUNT" -t smackfs smackfs /smack
    "$MOUNT" -t tmpfs tmpfs /run -o rw,nosuid,nodev,mode=755
    "$MOUNT" -t tmpfs tmpfs /tmp -o mode=1777,smackfsroot=*

    "$MKDIR" /dev/pts
    "$MOUNT" -t devpts devpts /dev/pts
}

#------------------------------------------------
#       mount_inform
#------------------------------------------------
mount_inform() {
    PART_INFORM=$("$BLKID" -L "inform" -o device)
    if [ "z$PART_INFORM" != "z" ]; then
        "$MKDIR" -p ${INFORM_PATH}
        "$MOUNT" -t ext4 ${PART_INFORM} ${INFORM_PATH}
    fi
}

#------------------------------------------------
#       do_reboot
#------------------------------------------------
do_reboot() {
    echo "Reboot"
    "$SYNC"
    "$REBOOT"
    while [ 1 ]
    do
        sleep 1
        echo "."
    done
}

#------------------------------------------------
#       Main Routine Start
#------------------------------------------------
echo "You entered into /sbin/init on initrd"

mount_partitions
mount_inform

cd /

# Manually parse /proc/cmdline to avoid additional tools on image
read cmdline </proc/cmdline
echo "Kernel command line: $cmdline"
set -- $cmdline
while [ $# -gt 0 ]; do
    key="${1%%=*}"
    if [ "$key" = "bootmode" ]; then
        BOOT_MODE="${1#*=}"
        break;
    fi
    shift
done

if [ "z$BOOT_MODE" = "z" ]; then
    echo "BOOT_MODE was NOT defined!!"
    echo "Do reboot!!"
    do_reboot
fi
echo "BOOTMODE is ${BOOT_MODE}"
exec "/sbin/${BOOT_MODE}-init"
