From: "H.Yamamoto" Date: 2004-01-27T21:04:33+09:00 Subject: [ruby-dev:22712] Re: can't require 山本です。WinCVS + byacc + sed をインストールして、ビルドできるようになりました。 >なかだです。 > >At Tue, 27 Jan 2004 13:45:46 +0900, >H.Yamamoto wrote: >> もうひとつ質問なのですが、例外を送出しようと rb_glob2 の先頭で >> >> if (flags & FNM_CASEFOLD) >> rb_raise(rb_eArgError, "File::FNM_CASEFOLD cannot be used with Dir.glob"); >> >> と記述すると、Cross Thread Violation といったエラーが gc? で発生しました。 > >ruby_thidを初期化する前に、win32/win32.c:cmdglob()の中で >rb_globi()を呼んでいるからでしょう。make_cmdvector()を分けるべ >きかな? 今のところは rb_glob2()を DOSISH では flags |= FNM_CASEFOLD 非 DOSISH では flags &= ~FNM_CASEFOLD とするつもりなので、DOSISH環境では、単にrb_glob2()で目的が果たせると思います。 rb_globi()でgrepしたところ、 util.c (__DJGPP__) win32/win32.c (_WIN32) の二箇所で使われているだけなので、__DJGPP__ が DOSISH なら、rb_globi()は削れそうです。 DOSISHでも実際のエントリ名が取得できるようになると、それに対する File::FNM_CASEFOLD が 意味をもってくる可能性もあるんですが、今のところは上のようにしようかと思っています。