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

Back to archive index

Shiro Kawai shiro****@lava*****
2008年 6月 26日 (木) 05:02:27 JST


私自身が日本語パス名を扱うことが滅多にないのでこの問題に
当たったことはないのですが、確かに不便ですね。
根本的には、sortやregexpを不完全文字列に対して寛容にする
方がいいかなと思っています。うっかり不完全文字列をregexpに
渡して悲しい思いをすることはあるので。

--shiro


From: koga kazuo <kogak****@gmail*****>
Subject: [Gauche-devel-jp] パス名での不完全文字列の扱い
Date: Wed, 25 Jun 2008 22:06:57 +0900

> こんにちは。古賀ともうします。
> 
> 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 mailing list
> Gauch****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp
> 




Gauche-devel-jp メーリングリストの案内
Back to archive index