diff options
Diffstat (limited to 'mdk-stage1/cdrom.c')
-rw-r--r-- | mdk-stage1/cdrom.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/mdk-stage1/cdrom.c b/mdk-stage1/cdrom.c index f87307499..71db1da16 100644 --- a/mdk-stage1/cdrom.c +++ b/mdk-stage1/cdrom.c @@ -1,7 +1,7 @@ /* - * Guillaume Cottenceau (gc@mandrakesoft.com) + * Guillaume Cottenceau (gc) * - * Copyright 2000 Mandrakesoft + * Copyright 2000 Mandriva * * This software may be freely redistributed under the terms of the GNU * public license. @@ -138,7 +138,7 @@ enum return_type cdrom_prepare(void) enum return_type results; static int already_probed_ide_generic = 0; - my_insmod("ide_cd_mod", ANY_DRIVER_TYPE, NULL, 0); + my_modprobe("ide_cd_mod", ANY_DRIVER_TYPE, NULL); if (IS_AUTOMATIC) { get_medias(CDROM, &medias, &medias_models, BUS_IDE); @@ -149,7 +149,7 @@ enum return_type cdrom_prepare(void) if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); - my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0); + my_modprobe("sr_mod", ANY_DRIVER_TYPE, NULL); get_medias(CDROM, &medias, &medias_models, BUS_SCSI); if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); @@ -158,9 +158,16 @@ enum return_type cdrom_prepare(void) if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); + /* detect hybrid isos (isos dumped to an USB stick) */ + my_modprobe("sd_mod", ANY_DRIVER_TYPE, NULL); + get_medias(DISK, &medias, &medias_models, BUS_USB); + if ((i = try_automatic(medias, medias_models)) != -1) { + return do_with_device(medias[i], medias_models[i]); + } + unset_automatic(); } else - my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0); + my_modprobe("sr_mod", ANY_DRIVER_TYPE, NULL); get_medias(CDROM, &medias, &medias_models, BUS_ANY); @@ -173,7 +180,7 @@ enum return_type cdrom_prepare(void) if (count == 0) { if (!already_probed_ide_generic) { already_probed_ide_generic = 1; - my_insmod("ide_generic", ANY_DRIVER_TYPE, NULL, 0); + my_modprobe("ide_generic", ANY_DRIVER_TYPE, NULL); return cdrom_prepare(); } stg1_error_message("No CDROM device found."); |