Fix hd command so it doesn't error out on EOF
hd would error out on files that were not a multiple of its read buffer size (4096). For example: Read error on init.rc, offset 17040 len 4096, No such file or directory The fix is to stop reading on EOF instead of treating it as an error. Change-Id: Ie7f4216e08835150f2f5784e77bb9e2190b0def4 Signed-off-by: Scott Anderson <saa@google.com>
This commit is contained in:
parent
d95c615219
commit
a9fac4155f
|
@ -68,6 +68,8 @@ int hd_main(int argc, char *argv[])
|
|||
if(count > 0 && base + count - filepos < read_len)
|
||||
read_len = base + count - filepos;
|
||||
res = read(fd, &buf, read_len);
|
||||
if(res == 0)
|
||||
break;
|
||||
for(i = 0; i < res; i++) {
|
||||
if((i & 15) == 0) {
|
||||
printf("%08x: ", filepos + i);
|
||||
|
@ -80,7 +82,7 @@ int hd_main(int argc, char *argv[])
|
|||
lsum = 0;
|
||||
}
|
||||
}
|
||||
if(res <= 0) {
|
||||
if(res < 0) {
|
||||
printf("Read error on %s, offset %d len %d, %s\n", argv[optind], filepos, read_len, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue