# HG changeset patch # User asl # Date 1076948745 0 # Node ID 6324598456d04820a655c8ea733744f0dbd3abd9 # Parent 3c206814d8667973867759a14fa05c4e039e9781 * src/io.cxx (readwritev): For EWOULDBLOCK and EAGAIN return the number of bytes written if any have been written. diff --git a/packages/io/fileio/current/ChangeLog b/packages/io/fileio/current/ChangeLog --- a/packages/io/fileio/current/ChangeLog +++ b/packages/io/fileio/current/ChangeLog @@ -1,3 +1,8 @@ +2004-02-16 Andrew Lunn + + * src/io.cxx (readwritev): For EWOULDBLOCK and EAGAIN return + the number of bytes written if any have been written. + 2004-01-07 Jonathan Larmour * src/select.cxx: No need to make pselect() dependent on diff --git a/packages/io/fileio/current/src/io.cxx b/packages/io/fileio/current/src/io.cxx --- 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); }