Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/usr.bin/make
In article <20130126205325.GD28257%snowdrop.l8s.co.uk@localhost>,
David Laight <david%l8s.co.uk@localhost> wrote:
>I'd have been tempted to do:
>
>int stupid_glibc_wont_let_us_ignore_the_result_of_write(int fd, const
>void *buf, size_t len)
>{
> return write(fd, buf, len);
>}
It is the linux headers :-)
>I'm not sure, but I think that read/write can only return EAGAIN if they
>are blocking, have transferred no data, and take a signal that is
>restartable.
The other way around O_NONBLOCK reads and writes can return EAGAIN on
non-files.
>If they have transferred some data they they have to return a partial count.
But if they are empty(read) or full(write) and non-blocking they have to
return EAGAIN (or the old EWOULDBLOCK).
>So if you care about the result you have to do far more than loop
>for EAGAIN - adding such a loop is a bogus fix.
If they are non blocking it is correct; if they are blocking it is a noop.
>Not much point writing an error is you'vejust failed to write to stderr!
correct.
christos
Home |
Main Index |
Thread Index |
Old Index