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 >