Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mknmz がcoreを吐いて終了する。
- From: Yukio USUDA <usuda@xxxxxxxxxx>
- Date: Fri, 22 Aug 2003 13:02:17 +0900
- X-ml-name: namazu-users-ja
- X-mail-count: 03490
- References: <3F4508CE.B36433AD@asahi-net.or.jp>
臼田です
Tadamasa Teranishi wrote:
> 昔、別件でまとめていた判定ルーチンの流れです。(多少間違いが
> あるかもしれません。)
mknmzから該当する部分を引用しますと
sub decide_type ($$) {
my ($name, $cont) = @_;
return $name if (!defined $cont || $name eq $cont);
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!) {
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;
}
return $cont;
}
となっているので
> 6. $mtype_c が未定義か、$mtype_c と $mtype_n が同じなら $mtype_n
> $mtype_c, $mtype_n が text/plain なら text/plain
> $mtype_c が application/octet-stream なら application/octet-stream
は
$mtype_c が application/octet-stream なら $mtype_n
でしょう。
ここが今回の問題のもとと思われるので
$mtype_c が application/octet-stream で
$mtype_nが text/plainでなければ$mtype_n
$mtype_nがtext/plainであればapplication/octet-stream
としておけば少し安全になるのでしょう。
(妥協した解決法ですが)
> // $mtype_c が application/(excel|powerpoint|msword) で
> // $mtype_n が application/octet-stream なら $mtype_n
は
// $mtype_c が application/(excel|powerpoint|msword) で
// $mtype_n が application/octet-stream でないなら $mtype_n
だろうと思います。
臼田幸生