Bug #676
closed引数の有無によるIO#readの挙動の違い
Description
=begin
IO#read に引数を渡すかどうかで、挙動が異なる場合があるようです。
たとえば mingw 上では以下のようになりました。
$ ruby -ve '
[[], [1000]].each do |argv|
r, w = IO.pipe
w.print "\n"
w.close
p r.read(*argv)
end
'
ruby 1.9.0 (2008-10-22 revision 19888) [i386-mingw32]
"\n"
"\r\n"
=end
Updated by matz (Yukihiro Matsumoto) over 15 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:36866] [Bug #676] 引数の有無によるIO#readの挙動の違い"
on Wed, 22 Oct 2008 22:10:17 +0900, _ wanabe redmine@ruby-lang.org writes:
|IO#read に引数を渡すかどうかで、挙動が異なる場合があるようです。
これは仕様です。readに引数を与えた場合は長さをバイトで指定し
ている関係上、変換が(エンコーディング変換も改行変換も)発生し
ません。
「\rが増えてるじゃないか」という指摘があるかもしれませんが、
これはcygwinでpipeに書き込んだ時に改行変換が発生してます。
=end
Updated by matz (Yukihiro Matsumoto) over 15 years ago
- Status changed from Open to Rejected
=begin
=end
Updated by usa (Usaku NAKAMURA) over 15 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:36867] Re: [Bug #676] 引数の有無によるIO#readの挙動の違い"
on Oct.22,2008 22:22:01, matz@ruby-lang.org wrote:
|IO#read に引数を渡すかどうかで、挙動が異なる場合があるようです。
これは仕様です。readに引数を与えた場合は長さをバイトで指定し
ている関係上、変換が(エンコーディング変換も改行変換も)発生し
ません。
他にこのような挙動を示すIOのメソッドは何がありますか?
とりあえず、readpartialとeach_byteが該当しそうなことは気づき
ましたが... getbyteもかな。
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by matz (Yukihiro Matsumoto) over 15 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:36973] Re: [Bug #676] 引数の有無によるIO#readの挙動の違い"
on Tue, 28 Oct 2008 16:00:28 +0900, "U.Nakamura" usa@garbagecollect.jp writes:
|> これは仕様です。readに引数を与えた場合は長さをバイトで指定し
|> ている関係上、変換が(エンコーディング変換も改行変換も)発生し
|> ません。
|
|他にこのような挙動を示すIOのメソッドは何がありますか?
|とりあえず、readpartialとeach_byteが該当しそうなことは気づき
|ましたが... getbyteもかな。
ざっと調べた限り、変換が伴わないメソッドはそれで全部のようで
すね。
=end