diff options
Diffstat (limited to 'sbin/fdisk')
-rw-r--r-- | sbin/fdisk/fdisk.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c index 6f759f8..8e3e267 100644 --- a/sbin/fdisk/fdisk.c +++ b/sbin/fdisk/fdisk.c @@ -429,17 +429,26 @@ static struct dos_partition mtpart = { 0 }; static void print_part(int i) { -struct dos_partition *partp = ((struct dos_partition *) &mboot.parts) + i; + struct dos_partition *partp; + u_int64_t part_mb; + partp = ((struct dos_partition *) &mboot.parts) + i; if (!bcmp(partp, &mtpart, sizeof (struct dos_partition))) { printf("<UNUSED>\n"); return; } + /* + * Be careful not to overflow. + */ + part_mb = partp->dp_size; + part_mb *= secsize; + part_mb /= (1024 * 1024); printf("sysid %d,(%s)\n", partp->dp_typ, get_type(partp->dp_typ)); - printf(" start %ld, size %ld (%ld Meg), flag %x\n", + printf(" start %ld, size %ld (%qd Meg), flag %x\n", partp->dp_start, - partp->dp_size, partp->dp_size * secsize / (1024 * 1024), + partp->dp_size, + part_mb, partp->dp_flag); printf("\tbeg: cyl %d/ sector %d/ head %d;\n\tend: cyl %d/ sector %d/ head %d\n" ,DPCYL(partp->dp_scyl, partp->dp_ssect) |