File Coverage

lib/Archive/Lha/Stream/Base.pm
Criterion Covered Total %
statement 33 36 91.6
branch 4 6 66.6
condition 1 3 33.3
subroutine 8 11 72.7
pod 8 8 100.0
total 54 64 84.3


line stmt bran cond sub pod time code
1             package Archive::Lha::Stream::Base;
2            
3 17     17   147 use strict;
  17         39  
  17         660  
4 17     17   104 use warnings;
  17         64  
  17         863  
5 17     17   102 use Carp;
  17         28  
  17         11538  
6            
7             sub new {
8 24     24 1 21188 my $class = shift;
9 24         75 my $self = bless {}, $class;
10 24         164 $self->open(@_);
11 24         105 $self;
12             }
13            
14 0     0 1 0 sub open { croak "override" }
15            
16 0     0 1 0 sub close { return }
17            
18             sub search_header {
19 317     317 1 12622 my $self = shift;
20            
21 317         455 my $str = '';
22 317         393 my $count = 0;
23 317         879 my $pos = $self->tell;
24 317         883 until ( $self->eof ) {
25 316         1030 $str .= $self->read(1024);
26 316         2109 my ($method, $level) = $str =~ /.{2}\-(lh[0-9a-z]|lzs|lz[45]|pm[012])\-.{13}(.)/s;
27 316 100       848 if ( defined $level ) {
28 296         511 $level = ord( $level );
29 296 50 33     1369 if ( $method && $level =~ /^(?:[0-2])$/) {
30 296         856 $self->seek( $pos );
31 296         1229 return $level;
32             }
33             }
34 20         67 $str = substr( $str, -21 );
35 20 50       96 last if ++$count > 63; # further check would be fruitless
36             }
37 21         106 return;
38             }
39            
40             sub eof {
41 20     20 1 31 my $self = shift;
42            
43 20         75 $self->{pos} >= $self->{length};
44             }
45            
46             sub seek {
47 36     36 1 83 my ($self, $offset) = @_;
48 36         89 $self->{pos} = $offset;
49             }
50            
51 28     28 1 69 sub tell { shift->{pos} }
52            
53 0     0 1   sub read { croak "override" }
54            
55             1;
56            
57             __END__