From 2c34d1a1a491861b68b76d6dbb449771d1cf114c Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Fri, 8 Dec 2000 19:26:57 +0000 Subject: mdk-stage1 can now run the Install from CDROM --- mdk-stage1/cdrom.c | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'mdk-stage1/cdrom.c') diff --git a/mdk-stage1/cdrom.c b/mdk-stage1/cdrom.c index e794dc9f5..1ac84979c 100644 --- a/mdk-stage1/cdrom.c +++ b/mdk-stage1/cdrom.c @@ -21,20 +21,48 @@ #include #include +#include +#include #include "stage1.h" #include "frontend.h" #include "modules.h" #include "probing.h" #include "log.h" +#include "mount.h" #include "cdrom.h" + + static enum return_type try_with_device(char *dev_name) { - log_message("with dev %s", dev_name); + char device_fullname[50]; - error_message("Should be trying with sucking device."); + strcpy(device_fullname, "/dev/"); + strcat(device_fullname, dev_name); + if (my_mount(device_fullname, "/tmp/image", "iso9660") == -1) { + enum return_type results; + results = ask_yes_no("I can't access a CDROM disc in your drive.\nRetry?"); + if (results == RETURN_OK) + return try_with_device(dev_name); + return results; + } + + if (access("/tmp/image/Mandrake", R_OK)) { + enum return_type results; + umount("/tmp/image"); + results = ask_yes_no("That CDROM disc does not seem to be a Linux-Mandrake Installation CDROM.\nRetry with another disc?"); + if (results == RETURN_OK) + return try_with_device(dev_name); + return results; + } + + log_message("found a Linux-Mandrake CDROM, good news!"); +/* + if (special_stage2 || total_memory() > 52 * 1024) loadMdkinstStage2(); + if (rescue) umount("/tmp/rhimage"); +*/ return RETURN_OK; } @@ -50,10 +78,11 @@ enum return_type cdrom_prepare(void) my_insmod("isofs"); medias = get_medias(CDROM, QUERY_NAME); + medias_models = get_medias(CDROM, QUERY_MODEL); ptr = medias; while (ptr && *ptr) { - log_message("found CDROM %s", *ptr); + log_message("have CDROM %s", *ptr); count++; ptr++; } @@ -67,6 +96,7 @@ enum return_type cdrom_prepare(void) } if (count == 1) { + log_message("Only one CDROM detected: %s (%s)", *medias, *medias_models); results = try_with_device(*medias); if (results == RETURN_OK) return RETURN_OK; @@ -76,8 +106,6 @@ enum return_type cdrom_prepare(void) return cdrom_prepare(); } - medias_models = get_medias(CDROM, QUERY_MODEL); - results = ask_from_list_comments("Please choose the CDROM drive to use for the installation.", medias, medias_models, &choice); if (results != RETURN_OK) -- cgit v1.2.1