Hatena::ブログ(Diary)

GANAwareはてな版 RSSフィード

2011-11-02

win-ssh-agent 1.07

win-ssh-agent を使用すると、cygwin の openssh の ssh-agent をよりスマートに利用できるようになります

通常 ssh-agent を利用するためには、ssh-agent を起動したシェル (例: bash) からその他のプログラムを起動する必要があります。これは、ssh-agent が設定する環境変数 SSH_AUTH_SOCK を他のソフトウェアから参照できなければならないためです。

win-ssh-agent は、ssh-agent が設定する環境変数を全てのプログラムが参照できるようにしますので、特定のシェルから他のプログラムを起動する必要がなくなります

詳しくは README-ja.txt (README.txt)を参照してください。

ダウンロード:

2011/11/02 1.07:

2011-10-14

win-ssh-askpass 1.06

(2011-11-02 追記) 最新版はこちら ⇒ win-ssh-agent 1.07 - GANAwareはてな版

win-ssh-agent は X 用の ssh-askpass と同様の機能提供ます。詳しくは README-ja.txt (README.txt)を参照してください。

ダウンロード:

2011/10/14 1.06:

2011-09-13

Win32 Subversion 1.5.0 からは APR-iconv は不要

Win32 Subversion は 1.5.0 以降は APR-iconv を必要としないので、APR_ICONV_PATH を設定する必要はありません。バイナリパッケージをダウンロードする時に Win32Svn (32-bit client, server and bindings, MSI and ZIPs; maintained by David Darj) を選択しインストールした場合 APR_ICONV_PATH が環境変数に設定されますが、これは不要です(メールフォームからフィードバックしておきました)。

Win32 Subversion が APR-iconv に依存しないようにしようという話は "SVN Win32 Developers -- need some help""[PATCH] Remove APR ICONV dependency on Windows" あたりのスレッドで議論され、r865724 で対策コードが commit されました。

ということで、対策コードは 1.5.0 から含まれるようになりました。


(2011-09-14 追記) David Darj から返事が来て、1.7.0 のリリースからは APR-iconv を含めないようにするとのことです。

2010-09-24

NFD → NFC

nfd2c-0.1.zip

OSXでUSBメモリ上のNFDファイル名のファイルへアクセス不能 - GANAwareはてな版」という問題をなんとかするために、ディレクトリを再帰的に辿り NFD なファイルを発見するプログラムを C# で書いてみました。

Usage: nfd2c [OPTIONS]... DIRECTORIES...:

  • -R : ディレクトリを再帰的に辿る
  • -r : NFD なファイル名を発見したら NFC へリネームする
  • -d DEST_DIR : NFD なファイル名を持つファイルを見つけたら、DEST_DIR へ NFC 名でコピーする

例:

C:\> nfd2c.exe -R -d D:\copied\ .

2010-09-03

OSXでUSBメモリ上のNFDファイル名のファイルへアクセス不能

はじめに

USB メモリ (FAT32) 上に Windows 上で作成した Unicode の NFD のファイル名を持つファイルは、OSX からはアクセスできません*1。以下では現象の説明と原因の推測を行います

発端

Windows 用の iTunes は、少なくとも v7.0.2 のころは My Music\iTunes\iTunes Music\ 以下のファイルのファイル名を NFD で保存するようになっていたようです。

つまり、

ダ.m4a

というファイルが存在する場合、そのファイル名の Unicode

U+30bf(タ) U+3099(゛) U+002e(.) U+006d(m) U+0034(4) U+0061(a)

となります

このファイルを Explorer で名前変更しようとすると、「ダ」のところでカーソルが 2 つ動きますし、「ダ」の後ろで Back Space を押すと「タ」へ文字が変わるという挙動を見せます

このファイルを FAT32 でフォーマットされた USB メモリへコピーし、OSX で開こうとしたところ、 Finder や ls でファイル名をリストアップすることはできるものの、ファイルを読み取ることはできませんでした。ファイルサイズすら不明です。

逆に OSX → Windows では?

OSX 側で「ダ.m4a」というファイルを USB メモリ (FAT32) 上に作成し、Windows で開く場合は問題なく動作します。ファイル名は、

U+30c0(ダ) U+002e(.) U+006d(m) U+0034(4) U+0061(a)

であり、NFC となっています

推測

以下は推測ですが、OSX では FAT32 へアクセスするときにファイル名を変更するんだと思います*2

  • FAT32 からファイル名を readdir() する NFC から NFD へ変換
  • FAT32 上のファイルを open() するときファイル名を NFD から NFC へ変換

ここでポイントとなるのは、元々ファイル名が NFD で保存されている場合は readdir() 時の NFC → NFD 変換の影響をうけず、あいかわらず NFD のままだということです。

それなのに、open() するときに NFD → NFC 変換が行われるせいで、そんなファイルは見つからないということになります

まとめ

OSX とファイルを交換する場合、FAT32 上で NFD なファイル名をもつファイルを作成してはいけません。また、OSX がファイル名を NFD で取り扱うという性質上この問題は将来的にも解決される見込みはないと思われます

Windows 上で NFD で作成したファイルをどうしても FAT32 経由で OSX へコピーする必要がある場合、以下のような作業が必要になります

  • ファイル名を NFD から NFC へ変換するようなソフトを Windows 上で動作させてから OSX でアクセスする
  • 適切なアーカイバでアーカイブしてからコピーする
    • たとえば、cygwin 1.7 以降で LANG=ja_JP.utf-8 に設定した上で tar で固める

参考文献

*1:調査は Windows XP と Snow Leopard で行いました

*2:OSX でのファイル名の NFC → NFD 変換がどのレイヤーで行われているのか詳しく知らないので推測です