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