From: "U.Nakamura" Date: 2003-01-09T19:21:20+09:00 Subject: [ruby-dev:19338] Re: [BUG] errno == 0 こんにちは、なかむら(う)です。 In message "[ruby-dev:19336] Re: [BUG] errno == 0" on Jan.09,2003 18:52:40, wrote: | > 1.6のio.cですが、FMODE_WBUF を立てる場所がないので W -> R は | > ダメでした。 | > # commitされるまで試してなかったのがバレバレ | | 入れ忘れてました。 確認しました。mswin32ではOKです。 | > rb_io_check_writable()で立てちゃだめなのかなぁ。 | > だめだから1.8はこうなってるんですよね... | | ダメってわけじゃなくて、getc()が方々で使われてるのとは違って | WBUFのほうは立てる場所が限られてたもので。 あ、なるべく余計なseek(flush)は避けたくて、writeだと場所が少 ないからそれぞれの場所でフラグを立てたけど、readだと場所が多 すぎるからrb_io_check_readable()に入れたってことですかね。 | しかし、これはひょっとしてFMODE_SYNCだとseekされてないんじゃな | いでしょうか。フラグを流用した無理が出たような。別のフラグを使 | うべきか、それともFMODE_SYNCだったらついでにseekするか。 1.8はOK... ですよね?(自信なし) 1.6も1.8のようにio_fflush()でFMODE_WBUFを立てればいいんじゃ ないでしょうか。 もっとも、 * R -> W の時は必ずseekされるからOK。 * W -> R の時は、FMODE_SYNCだとseekされないけど、flushされる からこれはこれでOK。 というようにも思います。ANSI C的には。 # ただ、bccの場合はW -> Rもflushじゃだめなんじゃないか疑惑が # あるので、結局なんとかしないといけないのかも。 # 後で確認してみます。 それでは。 -- U.Nakamura