--- od.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/od.c b/od.c index 31f8179..9e382d1 100644 --- a/od.c +++ b/od.c _AT_@ -68,13 +68,13 @@ printchar(FILE *f, unsigned char c) } static void -od(FILE *in, char *in_name, FILE *out, char *out_name) +od(FILE *in, char *in_name, FILE *out, char *out_name, int lastarg) { - off_t addr; + static off_t addr = 0; size_t i, chunklen; unsigned char buf[BUFSIZ]; - for (addr = 0; (chunklen = fread(buf, 1, BUFSIZ, in)); ) { + for ( ; (chunklen = fread(buf, 1, BUFSIZ, in)); ) { for (i = 0; i < chunklen && (maxbytes == -1 || (addr - skip) < maxbytes); ++i, ++addr) { if (addr - skip < 0) _AT_@ -89,11 +89,13 @@ od(FILE *in, char *in_name, FILE *out, char *out_name) if (feof(in) || ferror(in) || ferror(out)) break; } - if (addr - skip > 0) - fputc('\n', out); - if (radix != 'n') { - printaddress(out, MAX(addr, skip)); - fputc('\n', out); + if (lastarg) { + if (addr - skip > 0) + fputc('\n', out); + if (radix != 'n') { + printaddress(out, MAX(addr, skip)); + fputc('\n', out); + } } } _AT_@ -139,7 +141,7 @@ main(int argc, char *argv[]) } ARGEND; if (!argc) { - od(stdin, "<stdin>", stdout, "<stdout>"); + od(stdin, "<stdin>", stdout, "<stdout>", 1); } else { for (; *argv; argc--, argv++) { if (!strcmp(*argv, "-")) { _AT_@ -150,7 +152,7 @@ main(int argc, char *argv[]) ret = 1; continue; } - od(fp, *argv, stdout, "<stdout>"); + od(fp, *argv, stdout, "<stdout>", *(argv + 1) ? 0 : 1); if (fp != stdin && fshut(fp, *argv)) ret = 1; } -- 1.9.1 --------------080308000700020208050102--Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Fri Oct 02 2015 - 16:48:15 CEST