diff options
author | Justin T. Gibbs <gibbs@FreeBSD.org> | 1997-06-02 19:25:48 +0000 |
---|---|---|
committer | Justin T. Gibbs <gibbs@FreeBSD.org> | 1997-06-02 19:25:48 +0000 |
commit | 637fe2f7f304ff84986af70ad9f1694fb45262d4 (patch) | |
tree | d267ad137c2f6059cdd18bedec07ee924291b996 /sbin/i386/fdisk | |
parent | 2895de58f2ced2535c54b9a5fbe16a0cd17e5304 (diff) | |
download | src-637fe2f7f304ff84986af70ad9f1694fb45262d4.tar.gz src-637fe2f7f304ff84986af70ad9f1694fb45262d4.zip |
Don't overflow when calculating the size in MB of a partition.
No more 241MB 4+ gig partitions for me!
Notes
Notes:
svn path=/head/; revision=26389
Diffstat (limited to 'sbin/i386/fdisk')
-rw-r--r-- | sbin/i386/fdisk/fdisk.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sbin/i386/fdisk/fdisk.c b/sbin/i386/fdisk/fdisk.c index 6f759f895f42..8e3e2674a8b3 100644 --- a/sbin/i386/fdisk/fdisk.c +++ b/sbin/i386/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) |