[#13087] importing forwardable — "Akinori MUSHA" <knu@...>

 石塚さんの forwardable.rb を標準添付ライブラリにするべく、

11 messages 2001/05/02

[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>

岡田です。

18 messages 2001/05/13
[#13171] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Sun, 13 May 2001 14:11:18 +0900,

[#13176] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13177] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Mon, 14 May 2001 00:24:45 +0900,

[#13187] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>

 ruby-dev に移ります。

26 messages 2001/05/15
[#13208] Re: [ruby-list:29672] Re: Enumerator — matz@... (Yukihiro Matsumoto) 2001/05/15

まつもと ゆきひろです

[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>

 もう一度、 Enumerable/Enumerator についてみなさんのご意見を

29 messages 2001/05/20
[#13260] Re: Enumerator -- Round 2 — matz@... (Yukihiro Matsumoto) 2001/05/20

まつもと ゆきひろです

[#13265] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 06:04:32 +0900,

[#13268] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/21

原です。

[#13270] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 15:00:11 +0900,

[#13289] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13290] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 19:02:10 +0900,

[#13291] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13293] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 20:57:02 +0900,

[#13305] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/24

原です。

[#13322] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 15:44:14 +0900,

[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>

ruby 1.7のext/dbmですが、

16 messages 2001/05/21
[#13280] Re: ext/dbm in ruby 1.7 — matz@... (Yukihiro Matsumoto) 2001/05/21

まつもと ゆきひろです

[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>

安井です。

18 messages 2001/05/22
[#13294] Re: Integer("X") rescue -1 が parse error — matz@... (Yukihiro Matsumoto) 2001/05/22

まつもと ゆきひろです

[#13295] Re: Integer("X") rescue -1 が parse error — "Akinori MUSHA" <knu@...> 2001/05/23

At Wed, 23 May 2001 08:59:50 +0900,

[#13300] 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — matz@... (Yukihiro Matsumoto) 2001/05/24

[#13304] Re: 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 14:15:04 +0900,

[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2001/05/31
[#13435] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/01

なかだです。

[#13442] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/01

こんにちは、なかむら(う)です。

[#13446] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/02

こんにちは、なかむら(う)です。

[#13450] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/04

なかだです。

[ruby-dev:13393] Re: clearerr(3)

From: "Akinori MUSHA" <knu@...>
Date: 2001-05-29 05:51:37 UTC
List: ruby-dev #13393
 IO#clearerr を導入する場合、 error? (ferror() 相当) も一緒が
いいでしょうね。(添付)

 ところで、 IO#eof? は stdio の feof() そのものではなく、状態を
変化させるんですね。EOF フラグがセットされていない場合は getc()
して EOF が返るかどうかを調べています。ということは、もし EOF
フラグがクリアされていても、実際にバッファが空で読めない場合は
フラグに関係なく真が返り EOF フラグも再びセットされます。

 その辺を含め、どのメソッドが自動で clearerr するかという情報は
ちゃんとドキュメントする必要がありますね。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"

Index: io.c
===================================================================
RCS file: /src/ruby/io.c,v
retrieving revision 1.85
diff -u -r1.85 io.c
--- io.c	2001/05/16 09:05:50	1.85
+++ io.c	2001/05/29 05:33:21
@@ -409,6 +409,28 @@
 }
 
 static VALUE
+rb_io_error(io)
+     VALUE io;
+{
+    OpenFile *fptr;
+
+    GetOpenFile(io, fptr);
+    return ferror(fptr->f) ? Qtrue : Qfalse;
+}
+
+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;
 {
@@ -3353,6 +3375,32 @@
 }
 
 static VALUE
+argf_error(io)
+     VALUE io;
+{
+    if (!next_argv()) {
+	rb_raise(rb_eArgError, "no stream to check error indicator");
+    }
+    if (TYPE(current_file) != T_FILE) {
+	return argf_forward();
+    }
+    return rb_io_error(current_file);
+}
+
+static VALUE
+argf_clearerr(io)
+     VALUE io;
+{
+    if (!next_argv()) {
+	rb_raise(rb_eArgError, "no stream to clear error indicator");
+    }
+    if (TYPE(current_file) != T_FILE) {
+	return argf_forward();
+    }
+    return rb_io_clearerr(current_file);
+}
+
+static VALUE
 argf_each_line(argc, argv)
     int argc;
     VALUE *argv;
@@ -3537,6 +3585,8 @@
     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, "error?", rb_io_error, 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);
@@ -3592,6 +3642,8 @@
     rb_define_singleton_method(argf, "pos=", argf_set_pos, 1);
     rb_define_singleton_method(argf, "eof", argf_eof, 0);
     rb_define_singleton_method(argf, "eof?", argf_eof, 0);
+    rb_define_singleton_method(argf, "error?", argf_error, 0);
+    rb_define_singleton_method(argf, "clearerr", argf_clearerr, 0);
     rb_define_singleton_method(argf, "binmode", argf_binmode, 0);
 
     rb_define_singleton_method(argf, "to_s", argf_filename, 0);

In This Thread