From 33fdb0249b2347503aed5617490b278ce7ebe046 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Fri, 12 Jan 2001 14:43:21 +0000 Subject: - add wait_message for initializing of CDROM's (it can be long when it's SCSI) - print CDROM drive names (model) in dialogs --- mdk-stage1/cdrom.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'mdk-stage1') diff --git a/mdk-stage1/cdrom.c b/mdk-stage1/cdrom.c index eb5977153..73ccc273e 100644 --- a/mdk-stage1/cdrom.c +++ b/mdk-stage1/cdrom.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "stage1.h" #include "frontend.h" @@ -34,29 +35,35 @@ -static enum return_type try_with_device(char *dev_name) +static enum return_type try_with_device(char *dev_name, char * dev_model) { char device_fullname[50]; strcpy(device_fullname, "/dev/"); strcat(device_fullname, dev_name); + wait_message("Trying to access a CDROM disc (drive %s)", dev_model); + if (my_mount(device_fullname, IMAGE_LOCATION, "iso9660") == -1) { enum return_type results; + char msg[500]; unset_param(MODE_AUTOMATIC); /* we are in a fallback mode */ + remove_wait_message(); - results = ask_yes_no("I can't access a CDROM disc in your drive.\nRetry?"); + sprintf(msg, "I can't access a CDROM disc (drive %s).\nRetry?", dev_model); + results = ask_yes_no(msg); if (results == RETURN_OK) - return try_with_device(dev_name); + return try_with_device(dev_name, dev_model); return results; } + remove_wait_message(); if (access(IMAGE_LOCATION LIVE_LOCATION, R_OK)) { enum return_type results; umount(IMAGE_LOCATION); results = ask_yes_no("That CDROM disc does not seem to be a " DISTRIB_NAME " Installation CDROM.\nRetry with another disc?"); if (results == RETURN_OK) - return try_with_device(dev_name); + return try_with_device(dev_name, dev_model); return results; } @@ -99,7 +106,7 @@ enum return_type cdrom_prepare(void) } if (count == 1) { - results = try_with_device(*medias); + results = try_with_device(*medias, *medias_models); if (results == RETURN_OK) return RETURN_OK; i = ask_insmod(SCSI_ADAPTERS); @@ -109,16 +116,24 @@ enum return_type cdrom_prepare(void) } if (IS_AUTOMATIC) { - results = try_with_device(*medias); + results = try_with_device(*medias, *medias_models); if (results != RETURN_OK) unset_param(MODE_AUTOMATIC); return results; } else { results = ask_from_list_comments("Please choose the CDROM drive to use for the installation.", medias, medias_models, &choice); - if (results == RETURN_OK) - results = try_with_device(choice); - else + if (results == RETURN_OK) { + char ** model = medias_models; + ptr = medias; + while (ptr && *ptr && model && *model) { + if (!strcmp(*ptr, choice)) + break; + ptr++; + model++; + } + results = try_with_device(choice, *model); + } else return results; } -- cgit v1.2.1