#!/usr/bin/perl

use lib qw(/usr/lib/libDrakX);

use standalone;     #- warning, standalone must be loaded very first, for 'explanations'

use common;
use interactive;
use run_program;
use c;

my $in = 'interactive'->vnew('su');

my $cd_mntpoint = "/mnt/cdrom";

while (! -x "$cd_mntpoint/Mandrake/mdkinst/usr/bin/perl-install/live_install") {
    ejectCdrom();
    $in->ask_okcancel(N("Change Cd-Rom"),
N("Please insert the Installation Cd-Rom in your drive and press Ok when done.
If you don't have it, press Cancel to avoid live upgrade."), 1) or $in->exit(0);
    run_program::run("mount", "/mnt/cdrom");
}

if (-x "$cd_mntpoint/Mandrake/mdkinst/usr/bin/perl-install/live_install") {
    chdir "/$cd_mntpoint/Mandrake/mdkinst/usr/bin/perl-install/";
    $::testing or exec "./live_install";
}

$in->ask_warn('', N("Unable to start live upgrade !!!\n"));
$in->exit(1);

sub ejectCdrom {
    my ($cdrom) = @_;
    $cdrom or cat_("/proc/mounts") =~ m|(/dev/\S+)\s+/mnt/cdrom\s| and $cdrom = $1;
    $cdrom or cat_("/etc/fstab") =~ m|(/dev/\S+)\s+/mnt/cdrom\s| and $cdrom = $1;
    my $f = eval { $cdrom && detect_devices::tryOpen($cdrom) } or return;
    run_program::run("umount", "/mnt/cdrom");
    ioctl $f, c::CDROM_LOCKDOOR(), 0;
    ioctl $f, c::CDROMEJECT(), 1;
}