[Gauche-devel-jp] パス名での不完全文字列の扱い

アーカイブの一覧に戻る

koga kazuo kogak****@gmail*****
2008年 6月 25日 (水) 22:06:57 JST


こんにちは。古賀ともうします。

file.utilにあるdirectory-list, directory-list2関数なの 
ですが、
goshのネイティブエンコードで不正になるバイト列のパス名が
存在するとエラーになってしまいます。

たとえばgoshがUTF-8を使用し、しかしファイルシステムは 
EUC-JPといった
場合です。
string-appendで不完全文字列のまま結合してsys-readdirな 
どすれば問題無い
ので、理由を追ってみました。

それで、directory-listの中で得られたエントリをsort 
しているため、ここで
完全文字列と不完全文字列の比較が発生してエラーになっているよ 
うです。
提案なのですがdirectory-listのsort関数を外部から 
与えられるように、または
ソートしない指示をオプション指定できるようにできないでしょうか。

同じくbuild-pathについても不完全文字列を与えるとエラー 
になってしまいます。
こっちは中でrelative-path?の判定をするときに正規表現と 
のマッチでエラーが
発生しています。
ここは、不完全文字列の場合はバイト列として先頭バイトがスラッ 
シュでないかどうか
見てくれるとありがたいのに、と思いました。

パス名のエンコードの不一致だけでなく単にパス名のバイト列が壊 
れていて
不完全文字列になった場合にも同様に意図せずエラーになるので、 
不完全文字列の
場合もエラーにせず処理を継続しやすい方法が欲しいと思ったしだ 
いです。

ただ気楽にプログラムしているときは、パス名は完全文字列として 
普通に操作したい
ですし、しかしstatする段ではバイト列として正確な情報を 
保持しておきたいので、
人間用の表示の顔とOS用の顔を持ったパス名オブジェクトであってく 
れたらいいのかな
などとつらつら考えていました。

パス名の文字コードの処理で皆さんハマったりはしていないので 
しょうか。




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る