Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (proposal) uncompressing documents before indexing (namazu-bugs-ja#113
- From: zunda@xxxxxxx
- Date: Fri, 15 Mar 2002 03:56:03 +0900 (JST)
- X-ml-name: namazu-devel-ja
- X-mail-count: 02420
Namazu projectの皆さま、野首さま、
man pageのメディアタイプの認識について、早速の回答をいただきありがとう
ございました。残念ながら、File-MMagicの差分を確認できませんでした。当方
のMUA(無料のメールアドレスにて大変失礼しております) の問題かもしれませ
ん。
さて、先日お伝えした、pltotrf.1.bz2 のインデックスの作成時にmknmzが異常
終了してしまう問題についてです。実は、pltotf.1.bz2 はログに残っていた、
インデックスを作成した最後のファイルで、実際にエラーを出していたのは、
この次にインデックスされる、pmake.1.bz2 でした。まずは、訂正とお詫びを
いたします。大変もうしわけありませんでした。
さて、このファイルは、普通に man pmake しても横5桁程度にしか整形されず、
man pageとしておかしなものです。このファイルについて、mknmz --debug して
みますと、bzip2.plの後に、
@@ Processing man file ... (using '/usr/bin/groff -man -Tascii')
というメッセージが出ましたので、これに倣い、mknmz、man.pl、util.pl から
以下のようなスクリプト test.pl を作り、実行してみました。
% (echo '.l1 100i'; bunzip2 -c /usr/share/man/man1/pmake.1.bz2) | ./test.pl
この結果、mknmz時に出るのと同じく、
<standard input>:15: warning: `DT,' not defined (probable missing space after `DT')
<standard input>:563: warning: can't break line
<standard input>:563: warning: can't break line
<standard input>:563: warning: can't break line
…中略…
<standard input>:823: warning: can't break line
<standard input>:823: warning: can't break line
<standard input>:824: fatal error: input stack limit exceeded (probable infinite
loop)
というエラーメッセージの後、スクリプトが止まります。なお、例えば、
% (echo '.l1 100i'; bunzip2 -c /usr/share/man/man1/pltotf.1.bz2) | ./test.pl
を実行した際には、test.pl の最後の DONE!! が表示され、この行まで処理が
進んでいることがわかりました。
perlのバージョンは、v5.6.0、glibcは、2.2.4 です。他に必要な情報がありま
したらお知らせください。野首さまには、別便にて、pmake.1.bz2 をお送りいた
します。
当方のうっかりミスで、余計なお手数をおかけしました。どうもすみませんでした。
ずんだあん
--- test.pl ---
#!/usr/bin/perl5 -w
use IO::File;
sub efopen ($) {
my ($fname) = @_;
my $fh = fopen($fname) || cdie("$fname: $!\n");
return $fh;
}
sub fopen ($) {
my ($fname) = @_;
my $fh = new IO::File;
if ($fh->open($fname)) {
binmode($fh);
} else {
$fh = undef;
}
return $fh;
}
$$cont = "";
while (<>) {$$cont .= $_;}
$roffpath = "/usr/bin/groff";
$roffargs = "-man -Tascii";
$tmpfile = "/tmp/namazucheck/tmpfile";
my $fh = efopen("|$roffpath -man $roffargs > $tmpfile");
print $fh ".ll 100i\n";
print $fh $$cont;
print "DONE!!\n";