am 3e46f4af: am 9c39510e: am c2d9cc85: Merge "toolbox: Fixed type mismatch for ioctl(BLKGETSIZE)"

* commit '3e46f4af4f52aee324601b449abf9219bfd6b362':
  toolbox: Fixed type mismatch for ioctl(BLKGETSIZE)
This commit is contained in:
Elliott Hughes 2015-03-30 18:46:42 +00:00 committed by Android Git Automerger
commit 55ca889052
1 changed files with 9 additions and 1 deletions

View File

@ -798,6 +798,7 @@ static void getdiskinfo(int fd, const char *fname, const char *dtype,
__unused int oflag,struct bpb *bpb)
{
struct hd_geometry geom;
u_long block_size;
if (ioctl(fd, BLKSSZGET, &bpb->bps)) {
fprintf(stderr, "Error getting bytes / sector (%s)\n", strerror(errno));
@ -806,11 +807,18 @@ static void getdiskinfo(int fd, const char *fname, const char *dtype,
ckgeom(fname, bpb->bps, "bytes/sector");
if (ioctl(fd, BLKGETSIZE, &bpb->bsec)) {
if (ioctl(fd, BLKGETSIZE, &block_size)) {
fprintf(stderr, "Error getting blocksize (%s)\n", strerror(errno));
exit(1);
}
if (block_size > UINT32_MAX) {
fprintf(stderr, "Error blocksize too large: %lu\n", block_size);
exit(1);
}
bpb->bsec = (u_int)block_size;
if (ioctl(fd, HDIO_GETGEO, &geom)) {
fprintf(stderr, "Error getting gemoetry (%s) - trying sane values\n", strerror(errno));
geom.heads = 64;