summaryrefslogtreecommitdiff
path: root/fdisk/disksize.c
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2006-12-07 00:26:18 +0100
committerKarel Zak <kzak@redhat.com>2006-12-07 00:26:18 +0100
commit2cccd0ff2b26c782dbd05d589b7695cab5e17458 (patch)
tree45ebc5937d2e083c12b58bdeffc1b1a2046c9598 /fdisk/disksize.c
parentc129767e063c5c9839cc9d94c34fd88dac3fb9a6 (diff)
downloadutil-linux-old-2cccd0ff2b26c782dbd05d589b7695cab5e17458.tar.gz
Imported from util-linux-2.12d tarball.
Diffstat (limited to 'fdisk/disksize.c')
-rw-r--r--fdisk/disksize.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fdisk/disksize.c b/fdisk/disksize.c
new file mode 100644
index 00000000..a0a210e9
--- /dev/null
+++ b/fdisk/disksize.c
@@ -0,0 +1,17 @@
+#include "common.h"
+
+int disksize(int fd, unsigned long long *sectors) {
+ int err;
+ long sz;
+ long long b;
+
+ err = ioctl (fd, BLKGETSIZE, &sz);
+ if (err)
+ return err;
+ err = ioctl(fd, BLKGETSIZE64, &b);
+ if (err || b == 0 || b == sz)
+ *sectors = sz;
+ else
+ *sectors = (b >> 9);
+ return 0;
+}