#!/bin/bash

ok=1

while [ -n "$1" ]; do
    case "$1" in
	--lang)
	    lang="$2"
            shift
	    shift
	;;
	--i18n-loop)
	    i18n_loop="$2"
            shift
	    shift
	;;
	--boot-loop)
	    boot_loop="$2"
            shift
	    shift
	;;
	--main-loop)
	    main_loop="$2"
            shift
	    shift
	;;
	--totem-pid)
            totem_pid="$2"
            shift
	    shift
	;;
	--user)
            USER="$2"
            shift
	    shift
	;;
	--restore-cmd)
            RESTORE_CMD="$2"
            shift
	    shift
	;;
	*)
            ok=''
	    shift
    esac
done

if [ -z "$totem_pid" -o -z "$ok" ]; then
    printf "Usage: mdk_behind_totem [--boot-loop <loop>] [--main-loop <loop>] --totem-pid <pid>\n"
    exit 1
fi

exec &> /tmp/mdk_behind_totem.log

trap 'umount_cd' USR1

umount_cd() {
    echo umount_cd

    umount /image_i18n_$lang
    losetup -d /dev/$i18n_loop

    umount /image_boot
    losetup -d /dev/$boot_loop

    ln -sf /image_always/lib /

    if [ -L /image ]; then
	rm -f /image
    else
	umount /image && \
	    /image_always/sbin/losetup -d /dev/$main_loop || { mount_cd; kill $totem_pid; exec mdk_totem; }
    fi
    
    /image_always/usr/bin/eject
}

mount_cd() {
    echo mount_cd
    if [ -e /cdrom/live_tree.clp ]; then
	/image_always/sbin/losetup -r -e gz /dev/$main_loop /cdrom/live_tree.clp 
	/image_always/bin/mount -r /dev/$main_loop /image
    else
	ln -sf /cdrom/live_tree /image
    fi

    losetup -r -e gz /dev/$boot_loop /cdrom/live_tree_boot.clp 
    mount -r /dev/$boot_loop /image_boot

    losetup -r -e gz /dev/$i18n_loop /cdrom/live_tree_i18n_$lang.clp
    mount -r /dev/$i18n_loop /image_i18n_$lang

    ln -sf /image/lib /

    mdk_move_loop to_cdrom always always_i18n totem nvidia

    # restore killed kde apps
    su -c "$RESTORE_CMD" $USER
}

while [ -e "/proc/$totem_pid" ]; do
    echo "waiting..."
    /image_totem/bin/sleep 1
done

mount_cd