#define AT_MINORS 4
int i, minors[AT_MINORS] = { 0, 5, 10, 15 }, dev = 0, found = 0;
char pvd[CD_SECTOR];
- printf("\nLooking for boot CD. This may take several minutes.\n"
+ printf("\nLooking for boot CD. This may take a minute.\n"
"Please ignore any error messages.\n\n");
for(i = 0; i < AT_MINORS && !found; i++) {
struct super_block probe_super;
/* Open device readonly. (This fails if the device
* is also writable, which a CD isn't.)
*/
- printf("%d", i);
if((r = dev_open(dev, FS_PROC_NR, RO_BIT)) != OK) {
- printf("ro", i);
continue;
}
if((r = dev_io(DEV_READ, dev, FS_PROC_NR, pvd,
16*CD_SECTOR, sizeof(pvd), 0)) != sizeof(pvd)) {
- printf("rpvd", i);
dev_close(dev);
continue;
}
if(pvd[0] != 1 || pvd[1] != 'C' || pvd[2] != 'D' ||
pvd[3] != '0' || pvd[4] != '0' || pvd[5] != '1' || pvd[6] != 1 ||
strncmp(pvd + 40, "MINIX", 5)) {
- printf("vpvd", i, r);
continue;
}
for(minor = minors[i]+2; minor <= minors[i]+3; minor++) {
dev = (AT_MAJOR << MAJOR) | minor;
if((r = dev_open(dev, FS_PROC_NR, R_BIT)) != OK) {
- printf("[o%d]\n", minor);
break;
}
probe_super.s_dev = dev;
r = read_super(&probe_super);
dev_close(dev);
if(r != OK) {
- printf("fs[%d]", minor);
break;
}
}
}
}
- printf("\nCD probe done.\n");
-
if(!found) return NO_DEV;
return dev;