#!/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