Fix overflow in old Linux file size.

This commit is contained in:
rsc 2005-08-10 17:16:38 +00:00
parent a32765e337
commit a3e9d8935f

View file

@ -47,6 +47,8 @@ isdisk(struct stat *st)
#include <linux/hdreg.h> #include <linux/hdreg.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#undef major
#define major(dev) ((int)(((dev) >> 8) & 0xff))
static vlong static vlong
disksize(int fd, int dev) disksize(int fd, int dev)
{ {
@ -62,7 +64,7 @@ disksize(int fd, int dev)
return u64; return u64;
#endif #endif
if(ioctl(fd, BLKGETSIZE, &l) >= 0) if(ioctl(fd, BLKGETSIZE, &l) >= 0)
return l*512; return (vlong)l*512;
if(ioctl(fd, HDIO_GETGEO, &geo) >= 0) if(ioctl(fd, HDIO_GETGEO, &geo) >= 0)
return (vlong)geo.heads*geo.sectors*geo.cylinders*512; return (vlong)geo.heads*geo.sectors*geo.cylinders*512;
return 0; return 0;