From: nobu.nakada@... Date: 2004-06-21T14:09:36+09:00 Subject: [ruby-dev:23733] Re: error at TestDRbMServer (test/drb) なかだです。 At Mon, 21 Jun 2004 12:00:48 +0900, H.Yamamoto wrote in [ruby-dev:23729]: > >rb_w32_fdopen()をwin32/win32.cに自前で実装するのが筋かなあ、 > >とも思います。 > >ランタイムのソースを見られるなら互換性も取りやすいでしょう。 > > FILE の配列やストリームのロックといった、内部実装を流用できるなら > 簡単なんですけど、そうでない場合はそれらを自前で用意しなくてはならないので、 > fcloseall とか、fopen とか、fclose といった関数を全部実装する必要があって > 大変そうです。 たぶん、こんな風なことじゃないかと思います。 #ifdef __BORLANDC__ #undef fdopen FILE * rb_w32_fdopen(int fd, const char *mode) { FILE *fp; int e = errno; errno = 0; if (!(fp = fdopen(fd, mode)) && (errno == 0)) { if (_get_osfhandle(fd) == INVALID_HANDLE_VALUE) { e = EBADF; } else { e = EMFILE; } } errno = e; return fp; } #endif > たぶん、内部実装に依存したコードはライセンス違反なんじゃないかと・・・ バグ回避のコードをライセンスで禁止できるとは思えないんですが、 具体的にどういう条項に引っかかりそうなんでしょうか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦