our
(
$VERSION
);
$VERSION
=
'2.213'
;
sub
mkUncompObject
{
my
$crc32
=
shift
|| 1;
my
$adler32
=
shift
|| 1;
my
$scan
=
shift
|| 0;
my
$inflate
;
my
$status
;
if
(
$scan
)
{
(
$inflate
,
$status
) = Compress::Raw::Zlib::InflateScan->new(
CRC32
=>
$crc32
,
ADLER32
=>
$adler32
,
WindowBits
=> - MAX_WBITS );
}
else
{
(
$inflate
,
$status
) = Compress::Raw::Zlib::Inflate->new(
AppendOutput
=> 1,
LimitOutput
=> 1,
CRC32
=>
$crc32
,
ADLER32
=>
$adler32
,
WindowBits
=> - MAX_WBITS );
}
return
(
undef
,
"Could not create Inflation object: $status"
,
$status
)
if
$status
!= Z_OK ;
return
bless
{
'Inf'
=>
$inflate
,
'CompSize'
=> 0,
'UnCompSize'
=> 0,
'Error'
=>
''
,
'ConsumesInput'
=> 1,
} ;
}
sub
uncompr
{
my
$self
=
shift
;
my
$from
=
shift
;
my
$to
=
shift
;
my
$eof
=
shift
;
my
$inf
=
$self
->{Inf};
my
$status
=
$inf
->inflate(
$from
,
$to
,
$eof
);
$self
->{ErrorNo} =
$status
;
if
(
$status
!= Z_OK &&
$status
!= Z_STREAM_END &&
$status
!= Z_BUF_ERROR)
{
$self
->{Error} =
"Inflation Error: $status"
;
return
STATUS_ERROR;
}
return
STATUS_OK
if
$status
== Z_BUF_ERROR ;
return
STATUS_OK
if
$status
== Z_OK ;
return
STATUS_ENDSTREAM
if
$status
== Z_STREAM_END ;
return
STATUS_ERROR ;
}
sub
reset
{
my
$self
=
shift
;
$self
->{Inf}->inflateReset();
return
STATUS_OK ;
}
sub
crc32
{
my
$self
=
shift
;
$self
->{Inf}->crc32();
}
sub
compressedBytes
{
my
$self
=
shift
;
$self
->{Inf}->compressedBytes();
}
sub
uncompressedBytes
{
my
$self
=
shift
;
$self
->{Inf}->uncompressedBytes();
}
sub
adler32
{
my
$self
=
shift
;
$self
->{Inf}->adler32();
}
sub
sync
{
my
$self
=
shift
;
(
$self
->{Inf}->inflateSync(
@_
) == Z_OK)
? STATUS_OK
: STATUS_ERROR ;
}
sub
getLastBlockOffset
{
my
$self
=
shift
;
$self
->{Inf}->getLastBlockOffset();
}
sub
getEndOffset
{
my
$self
=
shift
;
$self
->{Inf}->getEndOffset();
}
sub
resetLastBlockByte
{
my
$self
=
shift
;
$self
->{Inf}->resetLastBlockByte(
@_
);
}
sub
createDeflateStream
{
my
$self
=
shift
;
my
$deflate
=
$self
->{Inf}->createDeflateStream(
@_
);
return
bless
{
'Def'
=>
$deflate
,
'CompSize'
=> 0,
'UnCompSize'
=> 0,
'Error'
=>
''
,
},
'IO::Compress::Adapter::Deflate'
;
}
1;