From f0c331c51ca7d73de8b3142634c63f53fd58dd7f Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Mon, 15 Aug 2005 13:15:39 +0000 Subject: [PATCH] Use a fake geometry for files. --- commands/ibm/partition.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/commands/ibm/partition.c b/commands/ibm/partition.c index bcb90ec09..4cfc606bf 100755 --- a/commands/ibm/partition.c +++ b/commands/ibm/partition.c @@ -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); -- 2.44.0