- devMakeInode(cddev, "/tmp/cdrom");
do {
do {
- if (doPwMount("/tmp/cdrom", location,
+ if (doPwMount(cddev, location,
"iso9660", IMOUNT_RDONLY, NULL)) {
- ejectCdrom();
+ ejectCdrom(cddev);
wrongCDMessage();
} else {
break;
@@ -172,7 +169,7 @@ static void mountCdromStage2(char *cddev, char *location) {
/* if we failed, umount location (usually) /mnt/source and keep going */
if (rc) {
umount(location);
- ejectCdrom();
+ ejectCdrom(cddev);
wrongCDMessage();
} else {
gotcd1 = 1;
@@ -181,22 +178,19 @@ static void mountCdromStage2(char *cddev, char *location) {
}
/* reads iso status from device cddriver */
-static int getISOStatusFromCDROM(char *cddriver, char *mediasum) {
+static int getISOStatusFromCDROM(char *cddev, char *mediasum) {
int isofd;
int isostatus;
r = asprintf(&stage2loc, "%s/images/stage2.img", location);
r = asprintf(&discinfoloc, "%s/.discinfo", location);
@@ -312,19 +307,19 @@ char * setupCdrom(char * location, struct loaderData_s * loaderData,
/* JKFIXME: ASSERT -- we have a cdrom device when we get here */
do {
for (i = 0; devices[i]; i++) {
+ char *tmp;
+
if (!devices[i]->device)
continue;
+ r = asprintf(&tmp, "/dev/%s", devices[i]->device);
+ free(devices[i]->device);
+ devices[i]->device = tmp;
logMessage(INFO,"trying to mount CD device %s on %s", devices[i]->device, location);
- if (devMakeInode(devices[i]->device, "/tmp/cdrom") != 0) {
- logMessage(ERROR, "unable to create device node for %s",
- devices[i]->device);
- continue;
- }
-
- if (!doPwMount("/tmp/cdrom", location, "iso9660",
- IMOUNT_RDONLY, NULL)) {
+ if (!(rc=doPwMount(devices[i]->device, location, "iso9660",
+ IMOUNT_RDONLY, NULL))) {
+ cddev = devices[i]->device;
if (!access(stage2loc, R_OK) &&
(!requirepkgs || !access(discinfoloc, R_OK))) {
/* if we failed, umount location (usually /mnt/source) and
@@ -363,7 +357,6 @@ char * setupCdrom(char * location, struct loaderData_s * loaderData,
/* we can now unmount the CD */
if (FL_RESCUE(flags) && stage2inram) {
umount(location);
- unlink("/tmp/cdrom");
}