ruby-trunk-changes r49164 - r49171

今日は 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-8NFC と 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-8NFC と 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() というマクロが利用可能だったのでそれを使うようにリファクタリングしています。