mirror of
https://github.com/vivier/EMILE.git
synced 2024-07-31 23:29:05 +00:00
Correct drivers info when block size is not 512 (i.e. CDROM)
This commit is contained in:
parent
1edfe9e730
commit
1ce4925be6
@ -55,19 +55,33 @@ static int emile_scanbus(device_name_t devices[EMILE_MAX_DISK])
|
||||
device_name_t dev;
|
||||
|
||||
j = 0;
|
||||
for(i = 0; i < EMILE_MAX_DISK; i++)
|
||||
|
||||
/* scan SCSI disks */
|
||||
|
||||
for(i = 0; (i < EMILE_MAX_DISK) && (j < EMILE_MAX_DISK); i++)
|
||||
{
|
||||
sprintf(dev, "/dev/sd%c", 'a' + i);
|
||||
fd = open(dev, O_RDONLY);
|
||||
if (fd == -1)
|
||||
{
|
||||
if (errno == ENXIO)
|
||||
continue;
|
||||
return j;
|
||||
}
|
||||
break;
|
||||
close(fd);
|
||||
strncpy(devices[j++], dev, EMILE_MAX_DEVNAME);
|
||||
}
|
||||
|
||||
/* scan ATA disks: EMILE doesn't manage them, but this
|
||||
* allows to have all information on all disks
|
||||
*/
|
||||
|
||||
for(i = 0; (i < EMILE_MAX_DISK) && (j < EMILE_MAX_DISK); i++)
|
||||
{
|
||||
sprintf(dev, "/dev/hd%c", 'a' + i);
|
||||
fd = open(dev, O_RDONLY);
|
||||
if (fd == -1)
|
||||
break;
|
||||
close(fd);
|
||||
strncpy(devices[j++], dev, EMILE_MAX_DEVNAME);
|
||||
}
|
||||
|
||||
return j;
|
||||
}
|
||||
|
||||
@ -126,8 +140,10 @@ void scanbus(void)
|
||||
emile_map_get_driver_info(map, j,
|
||||
&block, &size, &type);
|
||||
printf(" %d: base: %d size: %d type: %d",
|
||||
j, block, size, type);
|
||||
part = emile_map_seek_driver_partition(map, block);
|
||||
j, block * block_size / 512,
|
||||
size * block_size / 512 , type);
|
||||
part = emile_map_seek_driver_partition(map,
|
||||
block * block_size / 512 );
|
||||
if (part == -1)
|
||||
printf(" <invalid>\n");
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user