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;
}
臼田幸生