diff --git a/src/dj.c b/src/dj.c index 593ae31..2301eb4 100644 --- a/src/dj.c +++ b/src/dj.c @@ -158,7 +158,7 @@ usage(char *s) { int main(int argc, char *argv[]) { int align; /* low 8b used, negative if no alignment is being done */ - int count; /* 0 if dj(1) runs until no more reads are possible */ + int count; /* -1 if dj(1) runs until no more reads are possible */ char *fmt; /* == fmt_asv (default) or fmt_human (-H) */ size_t i; /* side of io being modified */ char noerror; /* 0=exits (default) 1=retries on partial reads or writes */ @@ -166,7 +166,7 @@ int main(int argc, char *argv[]) { /* Set defaults. */ align = -1; - count = 0; + count = -1; fmt = fmt_asv; noerror = 0; for (i = 0; i < (sizeof io) / (sizeof *io); ++i) { @@ -284,7 +284,10 @@ int main(int argc, char *argv[]) { return oserr(io[1].fn, errno); } - do { /* while(count == 0 || --count > 0); */ + for ( ; + count == -1 || count > 0; + count -= (count != -1) /* decrement if counting */ + ) { assert(io[0].bufuse == 0); { /* read */ @@ -303,7 +306,7 @@ int main(int argc, char *argv[]) { assert(io[0].bufuse >= t); - if (io[0].bufuse == t) /* that's all she wrote */ { break; } + if (io[0].bufuse == t) { break; } /* that's all she wrote */ if (/* t < io[0].bufuse && */ io[0].bufuse < io[0].bs) { fprintf(stderr, "%s: Partial read:\n\t", program_name); @@ -326,7 +329,7 @@ int main(int argc, char *argv[]) { if (skipping > 0) { io[0].seek -= skipping; io[0].bufuse = 0; - count += (count != 0); + count += (count != -1); /* increment if counting */ continue; } } @@ -393,7 +396,7 @@ int main(int argc, char *argv[]) { if(!noerror) { count = 1; } } } - } while(count == 0 || --count > 0); + } fprintio(stderr, fmt, io);