summaryrefslogtreecommitdiff
path: root/support.cc
diff options
context:
space:
mode:
authorsrs5694 <srs5694@users.sourceforge.net>2010-01-20 00:57:37 -0500
committersrs5694 <srs5694@users.sourceforge.net>2010-01-20 00:57:37 -0500
commitfd058aeda5d9042f52fdabf0109904d7d5dd2ce1 (patch)
tree82cb099bc9cc7edee9ea965ababc4886ed5f8d8b /support.cc
parent245a6a5a280cb021faa54bbcb931415f3d182dd9 (diff)
downloadsgdisk-fd058aeda5d9042f52fdabf0109904d7d5dd2ce1.tar.gz
Fixed bug that caused disk size to be read incorrectly on 32-bit
versions of FreeBSD.
Diffstat (limited to 'support.cc')
-rw-r--r--support.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/support.cc b/support.cc
index 47ff438..0d4a7b3 100644
--- a/support.cc
+++ b/support.cc
@@ -588,6 +588,7 @@ int myWrite(int fd, char* buffer, int numBytes) {
// to work around a problem returning a uint64_t value on Mac OS.
uint64_t disksize(int fd, int *err) {
long sz; // Do not delete; needed for Linux
+ uint64_t size = 0; // Do not delete; needed for FreeBSD
long long b; // Do not delete; needed for Linux
uint64_t sectors = 0; // size in sectors
off_t bytes = 0; // size in bytes
@@ -602,9 +603,9 @@ uint64_t disksize(int fd, int *err) {
*err = ioctl(fd, DKIOCGETBLOCKCOUNT, &sectors);
#else
#ifdef __FreeBSD__
- *err = ioctl(fd, DIOCGMEDIASIZE, &sz);
+ *err = ioctl(fd, DIOCGMEDIASIZE, &size);
b = GetBlockSize(fd);
- sectors = sz / b;
+ sectors = size / b;
#else
*err = ioctl(fd, BLKGETSIZE, &sz);
if (*err) {