今日は Dir.glob などで SMB でマウントした時(CIFS というファイルシステム)でも OS X の HFS と同様 UTF-8 の decomposition が行われるのを自動変換するようにする変更などがありました。
headius: r49164 2015-01-07 05:56:49 +0900
UnboundMethod を & をつけてブロック引数として渡そうとすると TypeError になることや UnboundMethod を Module#define_method の第2引数に渡した時に継承関係の有無によって結果が異なることを確認するテストケースを追加しています。 JRuby でのテストを意識したものでしょうね。
svn: r49165 2015-01-07 05:56:58 +0900
version.h の日付更新。
nobu: r49166 2015-01-07 16:51:18 +0900
Dir.glob の UTF-8 の NFC と NFD(というか UTF-8-MAC?) の正規化についてのなにがしかの変更ですが、すぐ後で revert されているので詳細は割愛。
nobu: r49167 2015-01-07 18:52:03 +0900
r49166 を revert しています。
nobu: r49168 2015-01-07 18:52:53 +0900
ファイルシステムによって UTF-8 の NFC と NFD の正規化方式が異なる問題の対処で、HFS だけではなく CIFS (SMB でマウントした時)にも必要だったので、関数名やマクロ名を変更して fgetattrlist(2) を用いてファイルシステムを取得して HFS と CIFS の時に変換するようにしています。 [ruby-core:67381] [Bug #10704]
nobu: r49169 2015-01-07 19:18:45 +0900
Dir.new で dirname を RB_GC_GUARD() で最適化による GC マーク漏れから保護するようにしています。
nobu: r49170 2015-01-07 19:19:29 +0900
CIFS で(つまり Samba で)マウントしたファイルシステムに OS X でディレクトリへのシンボリックリンクを作成した時に、Windows 上でそのリンクを Dir.new で開けないのを修正しています。 [追記] ではなくて、逆に Windows で mklink /d で作ったディレクトリが OS X で開けなかったのだそうです。[/追記] errno==EIO を捕捉して getattrlist(2) でリンク先のディレクトリをあらためて opendir(3) するようにしています。
nobu: r49171 2015-01-07 19:29:49 +0900
getattrlist(2) の引数に渡すバッファのサイズを計算するのに RUP32() というマクロが利用可能だったのでそれを使うようにリファクタリングしています。