Commit 7e4c303f authored by Scott Anderson's avatar Scott Anderson
Browse files

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: default avatarScott Anderson <saa@google.com>

(cherry picked from commit a9fac415)

Change-Id: Ib2af725fc39e96c2f81559f61979d451604d4817
parent e437f552
......@@ -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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment