From: Tanaka Akira Date: 2010-02-11T19:33:05+09:00 Subject: [ruby-dev:40397] Re: rubyspec: File.new raises an Errno::EINVAL error with File::APPEND FAILED 2010年2月10日23:20 Yusuke ENDOH : > > を実行すると、1.8 では Errno::EINVAL が投げられていたのが 1.9 では > エラーにならなくなっています。 > > 1.9 が IO の内部表現に FILE 構造体を使わなくなった影響かと予想する > のですが、正しいでしょうか。 > その場合、仕様変更ということでいいでしょうか。 > 1.8 のコードを全く見ないで言ってるので関係なかったらすみません。 1.8.8 では fdopen(fd, "a") が EINVAL になっていますね。 1.8.1 以前は EINVAL にならないのですが、これは fdopen(fd, "r") と なっているからのようです。 > O_APPEND は (write の前に) file offset を終端に持ってくるというだけ > で、O_RDONLY と組み合わせてはいけないようなことは書かれていないので > 1.9 が正しい気がします (FILE 構造体をバックエンドにしていると難しい > のかもしれませんが) 。 1.8.2 から 1.8.8 が間違っている、というのが素直な気がします。 あと、fd から O_APPEND かどうか調べられない環境では現状の 1.8 でも EINVAL にはなっていない気がしますね。Windows とか? -- [田中 哲][たなか あきら][Tanaka Akira]