Use a fake geometry for files.

This commit is contained in:
Philip Homburg 2005-08-15 13:15:39 +00:00
parent 547cd7cc29
commit f0c331c51c

View File

@ -293,11 +293,23 @@ void geometry(void)
{
int fd;
struct partition geometry;
struct stat sb;
if ((fd= open(device, O_RDONLY)) < 0) fatal(device);
/* Get the geometry of the drive, and the device's base and size. */
if (ioctl(fd, DIOCGETP, &geometry) < 0) fatal(device);
if (ioctl(fd, DIOCGETP, &geometry) < 0)
{
/* Faking geometry. Use the same fake geometry as part. */
if (fstat(fd, &sb) < 0)
fatal(device);
geometry.base= cvul64(0);
geometry.size= cvul64(sb.st_size);
geometry.sectors= 32;
geometry.heads= 64;
geometry.cylinders= (sb.st_size-1)/SECTOR_SIZE/
(geometry.sectors*geometry.heads) + 1;
}
close(fd);
primary.lowsec= div64u(geometry.base, SECTOR_SIZE);
primary.size= div64u(geometry.size, SECTOR_SIZE);