On 05/17/2011 05:11 AM, Pádraig Brady wrote:
> I was just testing a framebuffer device here and
> noticed that there were 2 errors printed by `tr`
> 
> $ tr '\0' $(($RANDOM % 256)) </dev/zero >/dev/full
> tr: write error: No space left on device
> tr: write error
> 
> I was then wondering it there was some other
> error with the device rather than just filling it.
> But the latter error is just closeout() noticing
> the original write error, and diagnosing just
> in case the original writer did not.
> 
> So 3 options.
> 
> 1. leave as is
> 2. assume all writers will diagnose,
> so don't diagnose previous errors in closeout()
> 3. make it configurable (with close_stdout_set_ignore_previous())

4. any client that diagnoses its own errors before calling closeout()
should also call clearerr()

5. fix the clients to quit diagnosing an error when close_stdout will
also diagnose it

That is, I think that tr.c could be simplified to quit checking fwrite
failures, and rely on close_stdout to do the check instead.

-- 
Eric Blake   [email protected]    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to