File Coverage

blib/lib/Archive/Zip/FileMember.pm
Criterion Covered Total %
statement 35 37 94.6
branch 5 8 62.5
condition 2 3 66.7
subroutine 10 10 100.0
pod 3 3 100.0
total 55 61 90.2


line stmt bran cond sub pod time code
1             package Archive::Zip::FileMember;
2              
3 6     6   80 use strict;
  6         57  
  6         95  
4 6     6   122 use vars qw( $VERSION @ISA );
  6         58  
  6         99  
5              
6             BEGIN {
7 6     6   83     $VERSION = '1.18';
8 6         77     @ISA = qw ( Archive::Zip::Member );
9             }
10              
11 6         149 use Archive::Zip qw(
12             :UTILITY_METHODS
13 6     6   143 );
  6         55  
14              
15             sub externalFileName {
16 103     103 1 2412     shift->{'externalFileName'};
17             }
18              
19             # Return true if I depend on the named file
20             sub _usesFileNamed {
21 28     28   242     my $self = shift;
22 28         304     my $fileName = shift;
23 28         354     my $xfn = $self->externalFileName();
24 28 50       266     return undef if ref($xfn);
25 28         365     return $xfn eq $fileName;
26             }
27              
28             sub fh {
29 312     312 1 3868     my $self = shift;
30 312 100 66     5527     $self->_openFile()
31                   if !defined( $self->{'fh'} ) || !$self->{'fh'}->opened();
32 312         9412     return $self->{'fh'};
33             }
34              
35             # opens my file handle from my file name
36             sub _openFile {
37 46     46   2032     my $self = shift;
38 46         709     my ( $status, $fh ) = _newFileHandle( $self->externalFileName(), 'r' );
39 46 50       558     if ( !$status ) {
40 0         0         _ioError( "Can't open", $self->externalFileName() );
41 0         0         return undef;
42                 }
43 46         463     $self->{'fh'} = $fh;
44 46         536     _binmode($fh);
45 46         1384     return $fh;
46             }
47              
48             # Make sure I close my file handle
49             sub endRead {
50 105     105 1 1069     my $self = shift;
51 105         983     undef $self->{'fh'}; # _closeFile();
52 105         3575     return $self->SUPER::endRead(@_);
53             }
54              
55             sub _become {
56 3     3   83     my $self = shift;
57 3         47     my $newClass = shift;
58 3 50       34     return $self if ref($self) eq $newClass;
59 3         118     delete( $self->{'externalFileName'} );
60 3         117     delete( $self->{'fh'} );
61 3         229     return $self->SUPER::_become($newClass);
62             }
63              
64             1;
65