From: Masaki Suketa Date: 1997-09-22T10:10:33+09:00 Subject: [ruby-list:4474] ruby1.0(970919) for mswin32 助田です。ちょっと長いです。 ruby-list にしようか ruby-dev にしようか迷ったんですが... ruby 1.0 (970919)を コンパイルしようとしたら2点問題が ありました。(コンパイル環境は、Windows95 + VC++5.0) 1.miniruby.exe ができない。   _S_ISFIFOが見つからないといってコンパイルできません。 NT環境だとコンパイルできるんでしょうか? で、以下のパッチを win32/config.hに当てたら95でもコン   パイルできます。 (95だと_S_IFIFOはあるけど _S_ISFIFOは無いんです。) --- ruby-1.0-970919/win32/config.h Fri Aug 22 12:36:45 1997 +++ win0919/config.h Sat Sep 20 15:38:26 1997 @@ -53,3 +53,8 @@ #define S_IEXEC _S_IEXEC +#ifdef _S_ISFIFO #define S_ISFIFO _S_ISFIFO +#endif +#ifdef _S_IFIFO +#define S_IFIFO _S_IFIFO +#endif 2.RUBYLIBで指定したパスを認識しない。 ChangeLog の Tue Sep 16 17:54:25 1997 の   * ruby.c (ruby_prog_init): should not add path from environment   variable, if ruby is running under seuid. の修正が絡んでいるようです。   で mswin32だと getuid geteuid getgid getegid がすべて 0を返す   ようにnt.cで定義してます。(全てスーパーユーザー扱い) どう変更するのが1番いいのか迷っています。 1. getuid geteuid getgid getegid setuid setgid の動作をUNIXに 近くなるように修正する。(できるんだろうか?) 2. NT, Windows95 だったら無条件でOKにする。 3. スーパーユーザーだったらOKにする。   で、とりあえず、ruby.c の ruby_prog_init()関数の if (rb_safe_level() > 0) { を if (rb_safe_level() >= 0) { とすると、RUBYLIB認識してくれますが、どうするのが適当でしょうか? rb_safe_level と CGI と 実ユーザー、実効ユーザーとの関係をよく理解   してないし、NTのユーザー管理どうなってるか、よく知らないので質問し ました。 助田 雅紀(suke@tonen.co.jp)