[Namazu-win32-users-ja 1240] Re: mknmzの処理が中断する

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2010年 8月 27日 (金) 20:42:21 JST


寺西です。

# 全文引用しないように。

Toru Ishizuka wrote:
> 
>  の環境で、再度実行しましたが、結果変わらずでした。

変わるとは思っていませんが、最新バージョンにアップデートしていただか
ないと話は進みません。

# やっとスタート地点に立っただけです。

>  コードを追ってみたのですが、
> 
>  mknmzの1449行目で実行している(File::Find::)find()が正
> 常に動作しておりませんでした。
>  具体的にはfind()の第一引数に渡しているサブルーチン
> wanted_closure()に渡されるパス名がおかしくなり、無限に
> wanted_closure()が呼ばれ続け無限ループになっています。

一言で言えば、ActivePerl の問題ってことになってしまいます。

>  例えば
> 
>  C:\dir1\dir2\dir3

この通りのパス名なら正しく動作するはずですが、日本語等を含む
パス名なので、ダメなんでしょう。

具体的にダメなパス名は何でしょう。

>  find()のみのサンプルコードを書いて実行しましたが、それ
> でも再現しましたので、mknmzの問題というよりはfind()関数
> の問題のようです。

ですね。
ActivePerl が日本語に対応していないので、仕方ないです。

# まぁ、Shift_JIS 系をパス名に使う OS が悪いって気もするけど。

他にも File::Copy とかで同じような問題があります。
 
>  このような事象に対してパッチ等がありましたらご教授いた
> だきたく。

ファイルリストを作って -F で渡すという手もあるかと思います。
その場合は確か File::Find を使わないで処理が走ると思うので、
大丈夫ではないかと思います。

以上、よろしくお願いします。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E


Namazu-win32-users-ja メーリングリストの案内