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);
 }