From: Yusuke ENDOH Date: 2010-02-10T23:20:11+09:00 Subject: [ruby-dev:40379] rubyspec: File.new raises an Errno::EINVAL error with File::APPEND FAILED たぶん akr さん 遠藤です。 foo.txt というファイルが存在する状況で、 File.new("foo.txt", File::APPEND) や File.new("foo.txt", File::RDONLY|File::APPEND) を実行すると、1.8 では Errno::EINVAL が投げられていたのが 1.9 では エラーにならなくなっています。 1.9 が IO の内部表現に FILE 構造体を使わなくなった影響かと予想する のですが、正しいでしょうか。 その場合、仕様変更ということでいいでしょうか。 1.8 のコードを全く見ないで言ってるので関係なかったらすみません。 なんとなく SUSv3 を見てみたところ、 http://www.opengroup.org/onlinepubs/009695399/functions/open.html O_APPEND は (write の前に) file offset を終端に持ってくるというだけ で、O_RDONLY と組み合わせてはいけないようなことは書かれていないので 1.9 が正しい気がします (FILE 構造体をバックエンドにしていると難しい のかもしれませんが) 。 -- Yusuke ENDOH