1 package IO::Uncompress::Adapter::Inflate;
7 use IO::Compress::Base::Common 2.044 qw(:Status);
8 use Compress::Raw::Zlib 2.044 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
17 my $crc32 = shift || 1;
18 my $adler32 = shift || 1;
19 my $scan = shift || 0;
26 ($inflate, $status) = new Compress::Raw::Zlib::InflateScan
30 WindowBits => - MAX_WBITS ;
34 ($inflate, $status) = new Compress::Raw::Zlib::Inflate
39 WindowBits => - MAX_WBITS ;
42 return (undef, "Could not create Inflation object: $status", $status)
45 return bless {'Inf' => $inflate,
61 my $inf = $self->{Inf};
63 my $status = $inf->inflate($from, $to, $eof);
64 $self->{ErrorNo} = $status;
66 if ($status != Z_OK && $status != Z_STREAM_END && $status != Z_BUF_ERROR)
68 $self->{Error} = "Inflation Error: $status";
72 return STATUS_OK if $status == Z_BUF_ERROR ; # ???
73 return STATUS_OK if $status == Z_OK ;
74 return STATUS_ENDSTREAM if $status == Z_STREAM_END ;
81 $self->{Inf}->inflateReset();
89 # $self->{Inf}->inflateCount();
95 $self->{Inf}->crc32();
101 $self->{Inf}->compressedBytes();
104 sub uncompressedBytes
107 $self->{Inf}->uncompressedBytes();
113 $self->{Inf}->adler32();
119 ( $self->{Inf}->inflateSync(@_) == Z_OK)
125 sub getLastBlockOffset
128 $self->{Inf}->getLastBlockOffset();
134 $self->{Inf}->getEndOffset();
137 sub resetLastBlockByte
140 $self->{Inf}->resetLastBlockByte(@_);
143 sub createDeflateStream
146 my $deflate = $self->{Inf}->createDeflateStream(@_);
147 return bless {'Def' => $deflate,
151 }, 'IO::Compress::Adapter::Deflate';