/* Ben Gras * * Based on sizeup() in mkfs.c. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include unsigned long sizeup(char *); int main(int argc, char *argv[]) { int sec; if(argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } printf("%lu\n", sizeup(argv[1])); return 0; } unsigned long sizeup(device) char *device; { int fd; struct partition entry; unsigned long d; struct stat st; if ((fd = open(device, O_RDONLY)) == -1) { perror("sizeup open"); exit(1); } if (ioctl(fd, DIOCGETP, &entry) == -1) { perror("sizeup ioctl"); exit(1); } close(fd); d = div64u(entry.size, 512); return d; }