summaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-05-13 07:43:41 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-05-13 07:43:41 +0000
commitf9f8ce7aaec91b6ccc8287fb41e1bcd003d047ac (patch)
tree276d75db084c1327c8c2e6273edfb4f800173128 /io.c
parent95079dbe784b785a02e91147c2183431ef6ada51 (diff)
downloadruby-f9f8ce7aaec91b6ccc8287fb41e1bcd003d047ac.tar.gz
ruby-f9f8ce7aaec91b6ccc8287fb41e1bcd003d047ac.tar.xz
ruby-f9f8ce7aaec91b6ccc8287fb41e1bcd003d047ac.zip
update readpartial doc.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10149 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/io.c b/io.c
index 0900392fd..126ee5c52 100644
--- a/io.c
+++ b/io.c
@@ -1293,10 +1293,12 @@ io_getpartial(int argc, VALUE *argv, VALUE io)
/*
* call-seq:
- * ios.readpartial(maxlen[, outbuf]) => string, outbuf
+ * ios.readpartial(maxlen) => string
+ * ios.readpartial(maxlen, outbuf) => outbuf
*
- * Reads at most <i>maxlen</i> bytes from the I/O stream but
- * it blocks only if <em>ios</em> has no data immediately available.
+ * Reads at most <i>maxlen</i> bytes from the I/O stream.
+ * It blocks only if <em>ios</em> has no data immediately available.
+ * It doesn't block if some data available.
* If the optional <i>outbuf</i> argument is present,
* it must reference a String, which will receive the data.
* It raises <code>EOFError</code> on end of file.
@@ -1336,11 +1338,13 @@ io_getpartial(int argc, VALUE *argv, VALUE io)
* r.readpartial(4096) #=> "def\n" "" "ghi\n"
* r.readpartial(4096) #=> "ghi\n" "" ""
*
- * Note that readpartial is nonblocking-flag insensitive.
- * It blocks on the situation IO#sysread causes Errno::EAGAIN.
+ * Note that readpartial behaves similar to sysread.
+ * The differences are:
+ * * If the buffer is not empty, read from the buffer instead of "sysread for buffered IO (IOError)".
+ * * It doesn't cause Errno::EAGAIN and Errno::EINTR. When readpartial meets EAGAIN and EINTR by read system call, readpartial retry the system call.
*
- * Also note that readpartial behaves similar to sysread in blocking mode.
- * The behavior is identical when the buffer is empty.
+ * The later means that readpartial is nonblocking-flag insensitive.
+ * It blocks on the situation IO#sysread causes Errno::EAGAIN as if the fd is blocking mode.
*
*/