file.utilの日本語ファイル名の扱い
;; pathに不完全文字列になるエントリがあるとエラー
(directory-list path)
;; 低レベルならエラーになる処理は含まれない
(sys-readdir path)
Gaucheのfile.utilは0.8.14の現時点では、パスがASCII以外でエンコードされているケースを考慮してないので、CP932などでエンコードされたパスを処理する場合、エラーになることがある。具体的には、パスにGaucheの内部エンコードで許されないバイト表現が含まれる場合。パスは不完全文字列として処理されるけど、不完全文字列には許されない処理をfile.utilの各関数内部でしているため、エラーになる。
他の人が原因を見つけてそうだな、と思いながらも、コードを読んで原因を見つけたところで、やっぱり他の人が原因を見つけていたのを知った。Gauche-devel-jpメーリングリストの「パス名での不完全文字列の扱い」というメールに詳しい。徒労だ。
0 件のコメント:
コメントを投稿