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.
Signed-off-by: Scott Anderson <saa@google.com>
(cherry picked from commit a9fac4155f)
Change-Id: Ib2af725fc39e96c2f81559f61979d451604d4817
This commit is contained in:
parent
e437f552d2
commit
7e4c303fe0
1 changed files with 3 additions and 1 deletions
|
|
@ -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…
Add table
Reference in a new issue