diff --git a/io.c b/io.c index 88c95a02c5..3476e1352c 100644 --- a/io.c +++ b/io.c @@ -167,6 +167,15 @@ rb_read_pending(fp) return READ_DATA_PENDING(fp); } +void +rb_read_check(fp) + FILE *fp; +{ + if (!READ_DATA_PENDING(fp)) { + rb_thread_wait_fd(fileno(fp)); + } +} + /* writing functions */ static VALUE io_write(io, str) diff --git a/rubyio.h b/rubyio.h index 014ca4acd7..b0d9cda3ec 100644 --- a/rubyio.h +++ b/rubyio.h @@ -58,5 +58,6 @@ void rb_io_synchronized _((OpenFile*)); void rb_io_check_closed _((OpenFile*)); void rb_eof_error _((void)); +void rb_read_check _((FILE*)); int rb_read_pending _((FILE*)); #endif