(check_and_close, dump, dump_strings): Don't report bogus errno value
after ferror discovers an output error. We don't know the proper
errno value, since it might have been caused by any of a whole
bunch of calls, and it might have been trashed in the meantime.
Fixing this problem will require much more extensive changes;
in the meantime just say "write error".
(skip): If a read fails, don't retry it later, so
that we report the proper errno.