Joliet

Jolietの仕様はWikipedia経由でここに見つかりました。
http://bmrc.berkeley.edu/people/chaffee/jolspec.html


ISO 9660ではISO 2022のエスケープシーケンスをサポートしていて、エスケープシーケンスに応じてボリューム情報やパス情報を持つことができます。
Jolietはボリューム情報に独自のエスケープシーケンスを設定することで、あたかも未知の文字セット用のものであるかのように見せています。
このようなJolietのボリューム情報では、ISO 9660と比べ、

  • ファイル名などの文字列がUCS-2(のコードポイントをビッグエンディアンで出力したもの)
  • ファイル名の比較ルールが単純化されている

などの違いがあります。


ファイル名がUCS-2で格納されているため、Boost 1.34以降のwpathを使いたいところですが、1.34のリリースがまだなので、我慢してナロー文字列に変換することにします。
ナロー文字列への変換は、ctypeやcodecvtはMinGW(リリース版)で動かず、wcstombs()はCygwinで動かないようなので、

  • Windows(Cygwinを含む)ではWideCharToMultiByte()
  • それ以外はwcstombs()

でいこうと思います。


実装はまだで、今日の修正点は上記とあまり関係ない修正です。