まつもと ゆきひろです
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");