From: siena@... (Siena. / SHINAGAWA, Norihide) Date: 2004-01-21T15:19:17+09:00 Subject: [ruby-dev:22653] Re: patches for i386-os2-emx Siena. です。 》[ruby-dev:21945] OS/2 での Dir.pwd, Dir.chdir の複数ドライブ対応 》* test/fileutils/test_*.rb で、実行前の現行ディレクトリと 》 $TMPDIR が異なるドライブにある時、現行ディレクトリの中を 》 全て削除してしまう問題が併発していた [ruby-list:38973] 》 》[ruby-dev:22237], [ruby-dev:22241] 》link() が存在しない環境で File.link が例外を上げるように変更 》* OS/2 では link() が何もしないで無条件に失敗するように実装されていた この二つは、近いうちにコミットしたいと思います。 》[ruby-dev:22115] 多バイト文字の長さを正しく判定しない可能性を回避 》* Ruby は setlocale() しないので C ロケールで実行されている 》* 多バイト文字の最大長 (MB_CUR_MAX) は C ロケールでは 1 》* setlocale() する拡張ライブラリからの影響を受ける可能性がある 》* ついでに、EMX では ja_JP ロケールに setlocale() できない? これは、mblen() に MB_CUR_MAX を渡している箇所を適当に大きな値に 置き換えるだけのものですが、コミットしてみても良いでしょうか。 C ロケールでは高々 1 バイトしか見ないため、多バイト文字を渡すと 正しい多バイト文字でないと見做されて -1 が帰って来るので。 今まで問題になっていない (少なくとも気が付いていない) とはいえ、 ちょっと不安があります。 そもそも、ロケールを特定しないで mblen() が正しく機能できる 保証もないわけですが、それはまた別に検討すべきなのだと思います。 とはいえ、ロケールを指定する以外の方法は思い付かないのですが。 よろしくお願い致します。 --- Siena.