Mercurial > ecos
changeset 1494:6324598456d0
* src/io.cxx (readwritev): For EWOULDBLOCK and EAGAIN return
the number of bytes written if any have been written.
| author | asl |
|---|---|
| date | Mon, 16 Feb 2004 16:25:45 +0000 |
| parents | 3c206814d866 |
| children | 5907174bce78 |
| files | packages/io/fileio/current/ChangeLog packages/io/fileio/current/src/io.cxx |
| diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/io/fileio/current/ChangeLog +++ b/packages/io/fileio/current/ChangeLog @@ -1,3 +1,8 @@ +2004-02-16 Andrew Lunn <andrew.lunn@ascom.ch> + + * src/io.cxx (readwritev): For EWOULDBLOCK and EAGAIN return + the number of bytes written if any have been written. + 2004-01-07 Jonathan Larmour <jifl@eCosCentric.com> * src/select.cxx: No need to make pselect() dependent on
--- a/packages/io/fileio/current/src/io.cxx +++ b/packages/io/fileio/current/src/io.cxx @@ -143,7 +143,12 @@ readwritev( int fd, const cyg_iovec *_io CYG_CANCELLATION_POINT; if( ret != 0 ) - FILEIO_RETURN(ret); + { + if ((ret == EWOULDBLOCK || ret == EAGAIN) && cnt) + FILEIO_RETURN_VALUE(cnt); + else + FILEIO_RETURN(ret); + } FILEIO_RETURN_VALUE(cnt); }
