summaryrefslogtreecommitdiffstats
path: root/fdisk/disksize.c
blob: f5687d2668abd5c39cf8f74ab97415bf71a5cab3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
}