--- vl.c.nocdrom Fri Apr 14 14:05:19 2006 +++ vl.c Fri Apr 14 14:34:10 2006 @@ -4730,6 +4730,10 @@ QEMU_OPTION_hdc, QEMU_OPTION_hdd, QEMU_OPTION_cdrom, + QEMU_OPTION_cdrom_a, + QEMU_OPTION_cdrom_b, + QEMU_OPTION_cdrom_c, + QEMU_OPTION_cdrom_d, QEMU_OPTION_boot, QEMU_OPTION_snapshot, QEMU_OPTION_m, @@ -4795,6 +4799,10 @@ { "hdc", HAS_ARG, QEMU_OPTION_hdc }, { "hdd", HAS_ARG, QEMU_OPTION_hdd }, { "cdrom", HAS_ARG, QEMU_OPTION_cdrom }, + { "cdrom-a", HAS_ARG, QEMU_OPTION_cdrom_a }, + { "cdrom-b", HAS_ARG, QEMU_OPTION_cdrom_b }, + { "cdrom-c", HAS_ARG, QEMU_OPTION_cdrom_c }, + { "cdrom-d", HAS_ARG, QEMU_OPTION_cdrom_d }, { "boot", HAS_ARG, QEMU_OPTION_boot }, { "snapshot", 0, QEMU_OPTION_snapshot }, { "m", HAS_ARG, QEMU_OPTION_m }, @@ -5091,11 +5099,7 @@ nographic = 0; kernel_filename = NULL; kernel_cmdline = ""; -#ifdef TARGET_PPC - cdrom_index = 1; -#else - cdrom_index = 2; -#endif + cdrom_index = -1; //disable by default cyls = heads = secs = 0; translation = BIOS_ATA_TRANSLATION_AUTO; #ifdef _WIN32 @@ -5127,7 +5131,7 @@ break; r = argv[optind]; if (r[0] != '-') { - hd_filename[0] = argv[optind++]; + //hd_filename[0] = argv[optind++]; } else { const QEMUOption *popt; @@ -5178,9 +5182,12 @@ { int hd_index; hd_index = popt->index - QEMU_OPTION_hda; + if (hd_filename[hd_index] != NULL) { +printf("%d %s\n", hd_index, hd_filename[hd_index]); + fprintf(stderr, "qemu: can't share multiple disks\n"); + exit(1); + } hd_filename[hd_index] = optarg; - if (hd_index == cdrom_index) - cdrom_index = -1; } break; case QEMU_OPTION_snapshot: @@ -5235,9 +5242,30 @@ kernel_cmdline = optarg; break; case QEMU_OPTION_cdrom: + case QEMU_OPTION_cdrom_a: + case QEMU_OPTION_cdrom_b: + case QEMU_OPTION_cdrom_c: + case QEMU_OPTION_cdrom_d: if (cdrom_index >= 0) { - hd_filename[cdrom_index] = optarg; + fprintf(stderr, "qemu: too many cdroms\n"); + exit(1); + } + + if (popt->index == QEMU_OPTION_cdrom) +/* use a sensible default */ +#ifdef TARGET_PPC + cdrom_index = 1; +#else + cdrom_index = 2; +#endif + else + cdrom_index = popt->index - QEMU_OPTION_cdrom_a; + + if (hd_filename[cdrom_index] != NULL) { + fprintf(stderr, "qemu: can't share multiple disks\n"); + exit(1); } + hd_filename[cdrom_index] = optarg; break; case QEMU_OPTION_boot: boot_device = optarg[0];