summaryrefslogtreecommitdiffstats
path: root/move/tree/mdk_behind_totem
blob: 62618ea931c91c65eae9067b8611011666490260 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash

ok=1

while [ -n "$1" ]; do
    case "$1" in
	--boot-loop)
	    boot_loop="$2"
            shift
	    shift
	;;
	--main-loop)
	    main_loop="$2"
            shift
	    shift
	;;
	--totem-pid)
            totem_pid="$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_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

    ln -sf /image/lib /

    mdk_move_loop to_cdrom always always_i18n totem nvidia

    # tell kicker that it should refetch menu's icons
    dcop kicker ksycoca notifyDatabaseChanged '(' ')'
}

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

mount_cd