Namazu-devel-ja(旧)


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

bugs-ja#22 (バイナリファイルの判定ミス) への自己フォロー



多田@阪大です.

以前,gzip で圧縮されたバイナリファイルがあるとインデックスを作る際に
エラーが発生すると報告しましたが,非常に ad hoc なパッチで対応してみま
した.

#バグ追跡システムには私はリプライできないのでこちらに報告します.

decide_type を以下のように変更してみました.

--- mknmz.in	Thu Jun 15 23:30:01 2000
+++ mknmz.in.new	Mon Jun 26 21:03:47 2000
@@ -2363,6 +2363,9 @@
     util::dprint("decide_type: name: $name, cont: $cont\n");
     if ($cont =~ m!^text/plain! && $name =~ m!^text/plain!) {
 	return $name;
+    } elsif($name =~ m!^application/x-(bzip2|gzip|compress)! &&
+	    $cont =~ m!^application/octet-stream!) {
+	return $cont;
     } elsif ($cont =~ m!^application/octet-stream!) {
 	return $name;
     } elsif ($cont =~ m!^application/(excel|powerpoint|msword)! &&


それと MMagic ですが以下のように変更した方が良いのではないでしょうか.

--- MMagic.pm	Mon Jun 26 21:17:29 2000
+++ MMagic.pm.new	Mon Jun 26 21:18:57 2000
@@ -339,11 +339,12 @@
 		};
 
     $self->{FILEEXTS} = {
-	     'gz$' => 'application/x-gzip',
-	     'Z$' => 'application/x-compress',
-	     'txt$' => 'text/plain',
-	     'html$' => 'text/html',
-	     'htm$' => 'text/html',
+	     '\.bz2$' => 'application/x-bzip2',
+	     '\.gz$' => 'application/x-gzip',
+	     '\.Z$' => 'application/x-compress',
+	     '\.txt$' => 'text/plain',
+	     '\.html$' => 'text/html',
+	     '\.htm$' => 'text/html',
     };
     bless($self);
     return $self;

拡張子名の前のピリオドをつけないと,checktype_byfilename にある
if ($fname =~ /$regex/i) {
で大小文字を同一視することから gz$ と Z$ の区別がつかなくなります.

---
大阪大学大学院 知能・機能創成工学専攻 創発ロボット工学講座 D3
多田 泰徳    tada@xxxxxxxxxxxxxxxxxxxxxxxx