#ifdef DEBUG
dump_eventq("initial");
#endif
- for (i = 0, f &= ~f_write, start = 0; i < eventq.n; i++) {
+ for (i = 0, f &= ~f_write, start = last = 0; i < eventq.n; i++) {
ev = &eventq.v[i];
if (ev->ev == EV_WRITE) { start = ev->pos; f |= f_write; }
if (ev->pos >= limit) break;
if (ev->ev == EV_STOP) { nsectors += ev->pos - start; f &= ~f_write; }
- if (f&f_fixup) start = ev->pos;
+ if (f&f_fixup) last = ev->pos;
}
eventq.n = i;
#ifdef DEBUG
dump_eventq("trimmed");
#endif
if (f&f_fixup) {
- put_event(EV_WRITE, 0, start);
+ put_event(EV_WRITE, 0, last);
f |= f_write;
}
if (f&f_write) {
"failed to seek to resume position "
"(sector %"PRIuSEC") in output file `%s'",
ev->pos, outfile);
+ f |= f_write;
#ifdef DEBUG
progress_clear(&progress);
printf(";; %8"PRIuSEC": begin write\n", pos);
#endif
- f |= f_write;
break;
case EV_STOP:
f &= ~f_write;
carefully_fclose(errfp, "bad-sector error log");
progress_free(&progress);
+ return (0);
+
#undef f_bogus
#undef f_continue
#undef f_fixup
#undef f_stats
#undef f_write
-
- return (0);
}