[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>

あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、

12 messages 1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...> 1999/07/15

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>

[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.5 is out, check out:

59 messages 1999/07/15
[#7318] Re: Ruby 1.3.5 — WATANABE Hirofumi <watanabe@...> 1999/07/15

わたなべです.

[#7326] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/15

青山です。

[#7331] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/16

まつもと ゆきひろです

[#7340] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/16

青山です。

[#7368] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7373] Re: Ruby 1.3.5 — Shin-ichiro Hara <sinara@...> 1999/07/19

原です。

[#7374] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7382] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/19

青山です。

[#7386] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/21

まつもと ゆきひろです

[#7388] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/21

青山です。

[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>

早坂@会津大学です。

10 messages 1999/07/21

[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>

わたなべです.

21 messages 1999/07/29
[#7467] Re: [PATCH] for djgpp — Katsuyuki Komatsu <komatsu@...> 1999/07/29

小松です。

[ruby-dev:7397] Re: Ruby 1.3.5

From: Wakou Aoyama <wakou@...>
Date: 1999-07-22 16:31:46 UTC
List: ruby-dev #7397
青山です。

Fri, Jul 23, 1999 at 12:03:35AM +0900 において
Wakou Aoyama さん曰く:

> read() や read(n) はエラーをトラップしてしまっているので表面化しません
> が、上記の「読み込み終了」にあたる部分は、本当は EOFError が発生した場
> 合です。
> 
> $ /usr/src/ruby/ruby -e 'io = open("0"); p io.stat.size
> p io.eof?
> p io.sysread(1024)
> p io.eof?
> '
> 0
> false
> /tmp/rbXBKqfG:3:in `sysread': End of file reached (EOFError)
>         from /tmp/rbXBKqfG:3

失礼しました。これは例が悪かったです。IO#sysread は read を使っていて、
IO#read は fread を使っていました。

そして、fread は EOF を検知しないようです。feof を使う必要があると書い
てありますね。man fread

という事は、

> > (1) "", ""
> > (2) "", nil
> > 
> > のどっちにするかですね。つまり
> > 
> > (1a) read() は read(n) と全く違うものと思う
> > (2a) read() は read(n) と類似と思う
> > 
> > の違いです。私は (1a) を推しています。0バイトファイルに対して
> > 1回目の read() が "" であるのに read(0) は nil なので、read()
> > と read(n) が類似とはいえないから、というのが一つの論拠です。

実は read(n) も (1) なんですね。

そして、

> 単に EOF で nil を返します。ではなく、1バイトも得られず EOFError が発
> 生した場合には nil を返します。とか。実装もこうなっているわけですし。

これも間違いで、より単純に1バイトも得られなかった場合には nil なんで
すね。EOFError とは無関係。

すると、read(n) も含めて (1)、(2) 共に選択肢としてあり得るという事のよ
うです。


-- 
青山 和光 Wakou Aoyama <wakou@fsinet.or.jp>

In This Thread