Fix multiple file handling

1) Fix skip overflow for negative numbers
2) Print proper trailing lines and addresses according to the last
   element.
This commit is contained in:
FRIGN 2015-10-26 17:21:15 +01:00 committed by sin
parent 1e4ab5ec9a
commit 91ab4e80b9
1 changed files with 4 additions and 3 deletions

7
od.c
View File

@ -134,7 +134,7 @@ od(FILE *fp, char *fname, int last)
static off_t addr;
size_t buflen;
while (skip - addr) {
while (skip - addr > 0) {
buflen = fread(buf, 1, MIN(skip - addr, BUFSIZ), fp);
addr += buflen;
if (feof(fp) || ferror(fp))
@ -153,9 +153,10 @@ od(FILE *fp, char *fname, int last)
}
}
}
if (lineoff)
if (lineoff && last)
printline(line, lineoff, addr - lineoff);
printline((unsigned char *)"", 0, addr);
if (last)
printline((unsigned char *)"", 0, addr);
}
static int