* ext/io/nonblock/nonblock.c (io_nonblock_set): return whether
nonblock flag was changed.
* ext/io/nonblock/nonblock.c (rb_io_nonblock_block): nothing to
restore but just yield unless nonblock flag is changed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
function to support nonblock-mode of pipes.
* win32/win32.c (rb_w32_read): nonblock-mode pipe returns ERROR_NO_DATA
if there is no data, but also returns it if remote-end is closed.
* win32/win32.c (rb_w32_write): if cannot to write any data, it may be
blocking.
* io.c (rb_io_set_nonblock): use rb_w32_set_nonblock for Windows.
* ext/io/nonblock/nonblock.c (rb_io_nonblock_set): use ruby's API when
setting nonblock-mode.
* test/ruby/test_io.rb: test nonblock pipes on Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
we're not changing the O_NONBLOCK bit. F_SETFL is an expensive
operation since it needs to affect all processes with the same
file object.
The patch is written by Eric Wong. [ruby-core:35556]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e