File Coverage

blib/lib/IO/Uncompress/Adapter/Inflate.pm
Criterion Covered Total %
statement 55 60 91.6
branch 12 14 85.7
condition 12 12 100.0
subroutine 15 17 88.2
pod 0 12 0.0
total 94 115 81.7


line stmt bran cond sub pod time code
1             package IO::Uncompress::Adapter::Inflate;
2              
3 96     96   542 use strict;
  96         135  
  96         2930  
4 96     96   372 use warnings;
  96         128  
  96         3606  
5 96     96   342 use bytes;
  96         144  
  96         2245  
6              
7 96     96   2906 use IO::Compress::Base::Common 2.223 qw(:Status);
  96         1806  
  96         12771  
8 96     96   35708 use Compress::Raw::Zlib 2.222 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
  96         185040  
  96         60107  
9              
10             our ($VERSION);
11             $VERSION = '2.223';
12              
13              
14              
15             sub mkUncompObject
16             {
17 3538   100 3538 0 7283 my $crc32 = shift || 1;
18 3538   100     7085 my $adler32 = shift || 1;
19 3538   100     7007 my $scan = shift || 0;
20              
21 3538         4905 my $inflate ;
22             my $status ;
23              
24 3538 100       5198 if ($scan)
25             {
26 69         194 ($inflate, $status) = Compress::Raw::Zlib::InflateScan->new(
27             #LimitOutput => 1,
28             CRC32 => $crc32,
29             ADLER32 => $adler32,
30             WindowBits => - MAX_WBITS );
31             }
32             else
33             {
34 3469         9984 ($inflate, $status) = Compress::Raw::Zlib::Inflate->new(
35             AppendOutput => 1,
36             LimitOutput => 1,
37             CRC32 => $crc32,
38             ADLER32 => $adler32,
39             WindowBits => - MAX_WBITS );
40             }
41              
42 3538 50       1349430 return (undef, "Could not create Inflation object: $status", $status)
43             if $status != Z_OK ;
44              
45 3538         25644 return bless {'Inf' => $inflate,
46             'CompSize' => 0,
47             'UnCompSize' => 0,
48             'Error' => '',
49             'ConsumesInput' => 1,
50             } ;
51              
52             }
53              
54             sub uncompr
55             {
56 5762     5762 0 6897 my $self = shift ;
57 5762         5990 my $from = shift ;
58 5762         6152 my $to = shift ;
59 5762         6698 my $eof = shift ;
60              
61 5762         7807 my $inf = $self->{Inf};
62              
63 5762         68048 my $status = $inf->inflate($from, $to, $eof);
64 5762         13488 $self->{ErrorNo} = $status;
65 5762 100 100     13477 if ($status != Z_OK && $status != Z_STREAM_END && $status != Z_BUF_ERROR)
      100        
66             {
67 1174         10952 $self->{Error} = "Inflation Error: $status";
68 1174         2823 return STATUS_ERROR;
69             }
70              
71 4588 100       30719 return STATUS_OK if $status == Z_BUF_ERROR ; # ???
72 4321 100       12630 return STATUS_OK if $status == Z_OK ;
73 3726 50       10076 return STATUS_ENDSTREAM if $status == Z_STREAM_END ;
74 0         0 return STATUS_ERROR ;
75             }
76              
77             sub reset
78             {
79 2630     2630 0 9105 my $self = shift ;
80 2630         10209 $self->{Inf}->inflateReset();
81              
82 2630         4305 return STATUS_OK ;
83             }
84              
85             #sub count
86             #{
87             # my $self = shift ;
88             # $self->{Inf}->inflateCount();
89             #}
90              
91             sub crc32
92             {
93 1618     1618 0 1728 my $self = shift ;
94 1618         5366 $self->{Inf}->crc32();
95             }
96              
97             sub compressedBytes
98             {
99 0     0 0 0 my $self = shift ;
100 0         0 $self->{Inf}->compressedBytes();
101             }
102              
103             sub uncompressedBytes
104             {
105 0     0 0 0 my $self = shift ;
106 0         0 $self->{Inf}->uncompressedBytes();
107             }
108              
109             sub adler32
110             {
111 490     490 0 550 my $self = shift ;
112 490         1699 $self->{Inf}->adler32();
113             }
114              
115             sub sync
116             {
117 1184     1184 0 1170 my $self = shift ;
118 1184 100       2412 ( $self->{Inf}->inflateSync(@_) == Z_OK)
119             ? STATUS_OK
120             : STATUS_ERROR ;
121             }
122              
123              
124             sub getLastBlockOffset
125             {
126 60     60 0 67 my $self = shift ;
127 60         194 $self->{Inf}->getLastBlockOffset();
128             }
129              
130             sub getEndOffset
131             {
132 60     60 0 67 my $self = shift ;
133 60         167 $self->{Inf}->getEndOffset();
134             }
135              
136             sub resetLastBlockByte
137             {
138 60     60 0 73 my $self = shift ;
139 60         186 $self->{Inf}->resetLastBlockByte(@_);
140             }
141              
142             sub createDeflateStream
143             {
144 60     60 0 84 my $self = shift ;
145 60         164 my $deflate = $self->{Inf}->createDeflateStream(@_);
146 60         26734 return bless {'Def' => $deflate,
147             'CompSize' => 0,
148             'UnCompSize' => 0,
149             'Error' => '',
150             }, 'IO::Compress::Adapter::Deflate';
151             }
152              
153             1;
154              
155              
156             __END__