[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23182] Re: test/scanf/test_scanf.rbで[BUG]

From: matz@... (Yukihiro Matsumoto)
Date: 2004-03-09 04:04:16 UTC
List: ruby-dev #23182
まつもと ゆきひろです

In message "[ruby-dev:23181] test/scanf/test_scanf.rbで[BUG]"
    on 04/03/09, "U.Nakamura" <usa@garbagecollect.jp> writes:

|しばらく前から、mswin32版でtest/scanf/test_scanf.rbが
|  [BUG] rb_sys_fail(iotest.dat) - errno == 0
|で落ちてしまうのでいろいろ調べていましたが、ANSI(ISO/JIS) Cの
|範囲においては、
|
|(1) lib/scanf.rb内のIO#soak_up_spacesで、パターンによっては複
|    数回ungetc(3)が呼び出されるが、そもそも間にfseek,fsetpos,
|    rewideを挟まずに複数回ungetcを呼び出した場合は成功するこ
|    とは保証されておらず、
|(2) また、ungetc(3)がerrnoをセットするという規定はない(しても
|    いいけどする必要はない)
|
|というわけで、scanf.rbのIO#soak_up_spacesがこのままでいいかど
|うか、という問題と、io.cのrb_io_ungetcの中でrb_sys_failを呼ん
|でいる部分をどうするか、という問題があります。

なるほど。前者はdblackに話すしかないですが、ungetcについては
rb_sys_fail()を呼ぶのでなくIOErrorを出すようにしましょう。

--- io.c	2 Mar 2004 07:30:34 -0000	1.262
+++ io.c	9 Mar 2004 04:04:05 -0000
@@ -1698,4 +1698,5 @@ rb_io_ungetc(io, c)
 
-    if (ungetc(cc, fptr->f) == EOF && cc != EOF)
-	rb_sys_fail(fptr->path);
+    if (ungetc(cc, fptr->f) == EOF && cc != EOF) {
+	rb_raise(rb_eIOError, "ungetc failed");
+    }
     return Qnil;

In This Thread

Prev Next