Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: lha フィルタ



寺西です。

Yukio USUDA wrote:
> 
> mknmz -O で出力先を絶対パスにしたときはうまくいくのですが
> 出力先を相対パスにすると zip.plから呼ばれたpowerpoint.plの途中で
> エラーがでます。

きちんと調べていませんが、おそらく File::Find の問題でしょう。
ファイルを探索中、カレントディレクトリが移動してしまうので、
出力先を相対パスで指定するとまずくなるのではないかと思います。

たぶん sub ではファイルリストの一覧を @files にでも入れて、
find 終了後に @files に入ったリスト一覧を処理すれば良いのでは
ないでしょうか?

こんな感じで。(このコードはテストしていません。テンポラリファイル
も削除していないので、多少手を加える必要はあるかと思います。)

    my @files = ();
    my $sub = sub {
        my $tmpfile = "$File::Find::dir/$_";
        if (-f $tmpfile) {
            push @files, $tmpfile;
         }
    };
    find ($sub, $tmpdir);
    foreach my $tmpfile (@files) {
            my $fh = util::efopen("$tmpfile");
            my $con = util::readfile($fh);
            my $err = lha::nesting_filter($tmpfile, \$con,
$weighted_str);
            if (defined $err) {
                util::dprint("filter/lha.pl gets error message
\"$err\"");
            }
            $$contref .= $con . " ";
            util::fclose($fh);
    }
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E