まつもと ゆきひろです

In message "[ruby-dev:21781] Re: IOError while building on Solaris with Sun cc"
    on 03/10/30, 桑村慎哉 <kuwa / labs.fujitsu.com> 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");