summaryrefslogtreecommitdiff
path: root/fdisk/disksize.c
diff options
context:
space:
mode:
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;
+}