Project

General

Profile

Bug #676

引数の有無によるIO#readの挙動の違い

Added by wanabe (_ wanabe) over 10 years ago. Updated almost 8 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:36866]

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

History

#1

Updated by matz (Yukihiro Matsumoto) over 10 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

#2

Updated by matz (Yukihiro Matsumoto) over 10 years ago

  • Status changed from Open to Rejected

=begin

=end

#3

Updated by usa (Usaku NAKAMURA) over 10 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

#4

Updated by matz (Yukihiro Matsumoto) over 10 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

Also available in: Atom PDF