ごとうゆうぞうです。

In message <E143VCd-0001y1-00 / ev.netlab.zetabits.co.jp>,
 `matz / zetabits.com (Yukihiro Matsumoto)' wrote:
> そう信じてました。どういう原理で動いてるんでしょう?
> でも、追求する元気はなかったりして。
> # かなり消耗しているらしい。

追求しようと思ったのですが、ひとまず手元の NetBSD では
clearerr しないと動きませんでした。
IO#clearerr があったほうが嬉しいように思います。

--- io.c.orig	Mon Nov 27 18:23:21 2000
+++ io.c	Wed Dec  6 14:29:01 2000
@@ -395,6 +395,16 @@
 }
 
 static VALUE
+rb_io_clearerr(io)
+    VALUE io;
+{
+    OpenFile *fptr;
+    GetOpenFile(io, fptr);
+    clearerr(fptr->f);
+    return Qnil;
+}
+
+static VALUE
 rb_io_sync(io)
     VALUE io;
 {
@@ -3417,6 +3427,7 @@
     rb_define_method(rb_cIO, "pos=", rb_io_set_pos, 1);
     rb_define_method(rb_cIO, "eof", rb_io_eof, 0);
     rb_define_method(rb_cIO, "eof?", rb_io_eof, 0);
+    rb_define_method(rb_cIO, "clearerr", rb_io_clearerr, 0);
 
     rb_define_method(rb_cIO, "close", rb_io_close_m, 0);
     rb_define_method(rb_cIO, "closed?", rb_io_closed, 0);

--
ごとうゆうぞう