From: matz@... (Yukihiro Matsumoto) Date: 2003-10-30T18:31:46+09:00 Subject: [ruby-dev:21789] Re: IOError while building on Solaris with Sun cc まつもと ゆきひろです In message "[ruby-dev:21781] Re: IOError while building on Solaris with Sun cc" on 03/10/30, 桑村慎哉 writes: |1.8.0に、"[ruby-dev:21403] Building 1.8.0 on Solaris with Sun CC"のス |レッドのパッチを当てたものは動いています。 |正確なバージョンは | ruby 1.8.0 (2003-08-04) [sparc-solaris2.6] |です。 分かりました。RubyがSolaris用のREAD_DATA_PENDING()を知らない ために発生した現象です。 とりあえず以下のパッチを試してください。あと、よければ後で Solarisのstdioに関する情報をください。 --- io.c 5 Sep 2003 05:07:54 -0000 1.231 +++ io.c 30 Oct 2003 09:28:46 -0000 @@ -142,2 +142,6 @@ extern int ReadDataPending(); # define READ_DATA_PENDING(fp) (!feof(fp)) +# define READ_DATA_BUFFERED(fp) 0 +#endif +#ifndef READ_DATA_BUFFERED +# define READ_DATA_BUFFERED(fp) READ_DATA_PENDING(fp) #endif @@ -1512,3 +1514,3 @@ rb_io_sysseek(argc, argv, io) GetOpenFile(io, fptr); - if ((fptr->mode & FMODE_READABLE) && READ_DATA_PENDING(fptr->f)) { + if ((fptr->mode & FMODE_READABLE) && READ_DATA_BUFFERED(fptr->f)) { rb_raise(rb_eIOError, "sysseek for buffered IO"); @@ -1569,3 +1571,3 @@ rb_io_sysread(argc, argv, io) - if (READ_DATA_PENDING(fptr->f)) { + if (READ_DATA_BUFFERED(fptr->f)) { rb_raise(rb_eIOError, "sysread for buffered IO");