Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: zipフィルタ
寺西です。
# 結局、差分を作ってしまいました。
Tadamasa Teranishi wrote:
>
> > パスワード付き zip ファイルだと、mknmz の際にパスワードを聞いて
> > きます。
...
> この辺りを使うと PDF のように
> 'Unable to convert zip file (maybe copying protection)'
> と表示できるのではないかと思います。
パスワード付きの場合は、
'Unable to convert zip file (maybe copying protection)'
と表示し、skip する処理と、
> あと 1点。zip ファイルにコメントが付いている場合、これを要約に
> するか、あるいは要約の冒頭に使うのが良いのではないかと思います。
...
> また、このコメントも検索できる方が良いでしょう。
コメントを要約の冒頭に使うようにし、検索もできるように修正した
差分を以下にしめします。テストはあまりしていません。
# cvs diff zip.pl
Index: zip.pl
===================================================================
RCS file: /storage/cvsroot/namazu/filter/zip.pl,v
retrieving revision 1.1
diff -u -p -r1.1 zip.pl
--- zip.pl 27 Apr 2004 15:19:55 -0000 1.1
+++ zip.pl 27 Apr 2004 18:24:06 -0000
@@ -67,6 +67,7 @@ sub filter ($$$$$) {
{
my $fh = util::efopen("> $tmpfile");
print $fh $$contref;
+ util::fclose($fh);
}
my $tmpdir = util::tmpnam('NMZ.zip_dir');
@@ -75,10 +76,27 @@ sub filter ($$$$$) {
rm_r($tmpdir) if (-d $tmpdir);
mkdir($tmpdir);
util::vprint("Processing zip file ... (using '$unzippath')\n");
- system("$unzippath -qq -d $tmpdir $tmpfile");
+ system("$unzippath -P passwd -qq -d $tmpdir $tmpfile");
+ my $status = $?;
$$contref = "";
+ if ($status != 0) {
+ unlink($tmpfile);
+ rm_r($tmpdir);
+ return 'Unable to convert zip file (maybe copying protection)';
+ }
+
+ my $tmpfile2 = util::tmpnam('NMZ.zip2');
+ system("$unzippath -z -qq $tmpfile > $tmpfile2");
+ $status = $?;
+ if ($status == 0) {
+ my $summary = util::readfile("$tmpfile2");
+ codeconv::toeuc(\$summary);
+ $$contref .= $summary;
+ }
+ unlink($tmpfile2);
+
my $sub = sub {
my $tmpfile = "$File::Find::dir/$_";
if (-f $tmpfile) {
@@ -94,6 +112,7 @@ sub filter ($$$$$) {
}
};
find ($sub, $tmpdir);
+ unlink($tmpfile);
rm_r($tmpdir);
return undef;
}
--
=====================================================================
寺西 忠勝(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