diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-28 19:08:23 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-28 19:08:23 +0000 |
commit | a2333c8938af4829a8eac8c09615e6652cd412f1 (patch) | |
tree | 480f2729015c99231325990516c74a47ee30d8cd /util-linux/mkfs_vfat.c | |
parent | 78f9d8eb7adc10f1af8977212f24ab3c418a9c2b (diff) | |
download | busybox-w32-a2333c8938af4829a8eac8c09615e6652cd412f1.tar.gz busybox-w32-a2333c8938af4829a8eac8c09615e6652cd412f1.tar.bz2 busybox-w32-a2333c8938af4829a8eac8c09615e6652cd412f1.zip |
randomtest fixes
Diffstat (limited to 'util-linux/mkfs_vfat.c')
-rw-r--r-- | util-linux/mkfs_vfat.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/util-linux/mkfs_vfat.c b/util-linux/mkfs_vfat.c index 705c75c20..72c2058b5 100644 --- a/util-linux/mkfs_vfat.c +++ b/util-linux/mkfs_vfat.c | |||
@@ -323,9 +323,20 @@ int mkfs_vfat_main(int argc UNUSED_PARAM, char **argv) | |||
323 | * fs size <= 16G: 8k clusters | 323 | * fs size <= 16G: 8k clusters |
324 | * fs size > 16G: 16k clusters | 324 | * fs size > 16G: 16k clusters |
325 | */ | 325 | */ |
326 | sect_per_clust = volume_size_bytes >= ((off_t)16)*1024*1024*1024 ? 32 : | 326 | sect_per_clust = 1; |
327 | volume_size_bytes >= ((off_t)8)*1024*1024*1024 ? 16 : | 327 | if (volume_size_bytes >= 260*1024*1024) { |
328 | volume_size_bytes >= 260*1024*1024 ? 8 : 1; | 328 | sect_per_clust = 8; |
329 | /* fight gcc: */ | ||
330 | /* "error: integer overflow in expression" */ | ||
331 | /* "error: right shift count >= width of type" */ | ||
332 | if (sizeof(off_t) > 4) { | ||
333 | unsigned t = (volume_size_bytes >> 31 >> 1); | ||
334 | if (t >= 8/4) | ||
335 | sect_per_clust = 16; | ||
336 | if (t >= 16/4) | ||
337 | sect_per_clust = 32; | ||
338 | } | ||
339 | } | ||
329 | } else { | 340 | } else { |
330 | // floppy, loop, or regular file | 341 | // floppy, loop, or regular file |
331 | int not_floppy = ioctl(dev, FDGETPRM, ¶m); | 342 | int not_floppy = ioctl(dev, FDGETPRM, ¶m); |