Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(proposal) uncompressing documents before indexing (namazu-bugs-ja#113)
- From: zunda@xxxxxxx
- Date: Tue, 5 Mar 2002 17:37:59 +0900 (JST)
- X-ml-name: namazu-devel-ja
- X-mail-count: 02391
Full_Name: zunda
Version: namazu-2.0.10
OS: Kondara 2.1RC2
Submission from: (NULL) (130.183.134.190)
はじめまして、ずんだあんと申します。諸事情により、ハンドルネームでの投
稿をご了承いただければ、うれしく思います。
さて、最近、ローカルにインストールされているman pageのインデックスを作
る必要があり、mknmzを利用させていただいているのですが、
・メディアタイプに、text/x-roffを指定しないとプレインテキストとして認識
されてしまうman pageがある。また、フィルタが落ちてしまう場合もある。
・mknmz時にメディアタイプをtext/x-roffを指定してしまうと、gzipやbzip2さ
れているman pageが解凍されないまま、text/x-roffとして処理されてしまい、
これらのファイルのインデックスがうまく作れない。
という問題につきあたりました。
とりあえずの対策として、mknmz時に、まず、 MMagicで自動的にメディアタイプ
を認識させ、もし、そのメディアタイプのフィルタが、recursive に 1 を返す
ようなら、まずはそのフィルタを通してから、更に次のフィルタを通すように、
mknmzを変更してみました。この結果、 bzip2.pl、compress.pl、gzip.pl が使
える場合には、まずこれを使ってから、更に、コマンドラインで指定されたメディ
アタイプに対応したフィルタを通すようになります。
手元では期待通りに動いているようですので、以下にパッチを添付いたします。
もし、JitterBugの制限で全文が投稿されていないようでしたら、下記URLに同じ
ものを置いてありますので、お手数ですが、ご覧ください。
http://www.kondara.org/~zunda/SOURCES/namazu-2.0.10-recursive_filter.patch
*** namazu-2.0.10/scripts/mknmz.in.orig Mon Mar 4 17:01:56 2002
--- namazu-2.0.10/scripts/mknmz.in Mon Mar 4 17:02:53 2002
***************
*** 740,771 ****
my $mtype;
my $called_dt = 0;
while (1) {
! if (defined $MediaType) {
! $mtype = $MediaType;
} else {
! my $mtype_n;
! if ($shelter_cfile ne "") {
! $mtype_n = $Magic->checktype_byfilename($shelter_cfile);
! } else {
! $mtype_n = $Magic->checktype_byfilename($cfile);
! }
! my $mtype_c = $Magic->checktype_data($$contref);
! my $mtype_m;
! $mtype_m = $Magic->checktype_magic($$contref)
! if ((! defined $mtype_c) ||
! $mtype_c =~
! /^(text\/html|text\/plain|application\/octet-stream)$/);
! $mtype_c = $mtype_m
! if (defined $mtype_m &&
! $mtype_m !~
! /^(text\/html|text\/plain|application\/octet-stream)$/);
! $mtype_c = 'text/plain' unless defined $mtype_c;
! if ($called_dt) {
! $mtype = $mtype_c;
! } else {
! $mtype = decide_type($mtype_n, $mtype_c);
! $called_dt = 1;
! }
}
util::dprint(_("Detected type: ")."$mtype\n");
--- 740,775 ----
my $mtype;
my $called_dt = 0;
while (1) {
! # At first, let MMagic detect the media type
! my $mtype_n;
! if ($shelter_cfile ne "") {
! $mtype_n = $Magic->checktype_byfilename($shelter_cfile);
! } else {
! $mtype_n = $Magic->checktype_byfilename($cfile);
! }
! my $mtype_c = $Magic->checktype_data($$contref);
! my $mtype_m;
! $mtype_m = $Magic->checktype_magic($$contref)
! if ((! defined $mtype_c) ||
! $mtype_c =~
! /^(text\/html|text\/plain|application\/octet-stream)$/);
! $mtype_c = $mtype_m
! if (defined $mtype_m &&
! $mtype_m !~
! /^(text\/html|text\/plain|application\/octet-stream)$/);
! $mtype_c = 'text/plain' unless defined $mtype_c;
! if ($called_dt) {
! $mtype = $mtype_c;
} else {
! $mtype = decide_type($mtype_n, $mtype_c);
! $called_dt = 1;
! }
!
! # If it is a recursive filter, let's use the detected media type
! # before applying command line specified media type because the
! # document is probably compressed
! if ((! $var::RECURSIVE_ACTIONS{$mtype}) && (defined $MediaType)) {
! $mtype = $MediaType;
}
util::dprint(_("Detected type: ")."$mtype\n");