Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Re: mknmz で .gz 	ファイルを処理中にコアダンプ
- From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu)
- Date: Fri, 6 Oct 2000 15:01:09 JST
- X-ml-name: namazu-users-ja
- X-mail-count: 01034
<39D5CDB0.15141482@xxxxxxxxx>の記事において
teranisi@xxxxxxxxxさんは書きました。
>> IRIX 5.3 の環境で、大きな .gz ファイルを mknmz で
>> 処理すると、コアダンプすることがわかりました。
  この件なのですが、どれくらいのサイズで core dump しますか?
  filter/gzip.pl から Compress::Zlib で展開する処理のみを取りだしたス
クリプトを作って試してみましたが、とりあえず 5MB 程度のファイルは問題
なく展開できました。
# Compress::Zlib 1.05 です。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)
# check-zlib.pl
use Compress::Zlib;
my $content;
while (<>) {
    $content .= $_;
}
my $contref = \$content;
    my $offset = 0;
    $offset += 3;
    my $flags = unpack('C', substr($$contref, $offset, 1));
    $offset += 1;
    $offset += 6;
    $$contref = substr($$contref, $offset);
    $$contref = substr($$contref, 2) if ($flags & 0x04);
    $$contref =~ s/^[^\0]*\0// if ($flags & 0x08);
    $$contref =~ s/^[^\0]*\0// if ($flags & 0x10);
    $$contref = substr($$contref, 2) if ($flags & 0x02);
    my $zl = inflateInit(-WindowBits => - MAX_WBITS());
    my ($inf, $stat) = $zl->inflate($$contref);
    if ($stat == Z_OK() or $stat == Z_STREAM_END()) {
	$$contref = $inf;
    } else {
	$$contref = '';
	return 'Bad compressed data.';
    }
print $content;
exit 0;