Namazu-devel-ja(旧)


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

Re: File-MMagic(OpenOfficeのfiletype)



臼田です

Yukio USUDA wrote:
> > > 2はOpenOfficeのためだけにmknmz内の判定フローを複雑にするのは気が
> > >  進まない。
> 
> 私ではOpenOfficeのみとりあえず対処する場当たりなものしか思いつきません
> 一般化するアイディアがあればぜひお願いします。

とりあえずのmknmz内のsub decide_typeの修正案です。
zip利用のアプリケーション対策のみしています。
3行追加しただけなので、一般化を考えなければ
これが一番シンプルな解決法なのかもしれません。

ついでに
http://www.namazu.org/ml/namazu-users-ja/msg03490.html
での仮対策も加えています。

これでよければ明日にでもcommitします。

(元にしているmknmzが手を加えたものなので行番号はずれています)
@@ -2435,15 +2439,21 @@
     util::dprint("decide_type: name: $name, cont: $cont\n");
     if ($cont =~ m!^text/plain! && $name =~ m!^text/plain!) {
        return $name;
-    } elsif ($cont =~ m!^application/octet-stream!) {
+    } elsif ($cont =~ m!^application/octet-stream! &&
+             $name !~ m!^text/!) {
        return $name;
     } elsif ($cont =~ m!^application/(excel|powerpoint|msword)! &&
             $name !~ m!^application/octet-stream!)  {
        # FIXME: Currently File::MMagic 1.02's checktype_data()
        # is unreliable for them.
        return $name;
+    } elsif ($cont =~ m!^application/x-zip! &&
+             $name =~ m!^application/!) {
+        # zip format is used other important applications e.g.
+        # OpenOffice.org, KOffice. It is necessary to add to
+        # check extention.
+        return $name;
     }

     return $cont;
 }


ooo.pl側は以下のようにします。

sub mediatype() {
    return ('application/vnd.sun.xml.writer',
            'application/vnd.sun.xml.calc',
            'application/vnd.sun.xml.impress',
            'application/vnd.sun.xml.draw');
}

sub add_magic ($) {
    my ($magic) = @_;
    $magic->addFileExts('\\.sxw', 'application/vnd.sun.xml.writer');
    $magic->addFileExts('\\.sxc', 'application/vnd.sun.xml.calc');
    $magic->addFileExts('\\.sxi', 'application/vnd.sun.xml.impress');
    $magic->addFileExts('\\.sxd', 'application/vnd.sun.xml.draw');
    return;
}

臼田幸生