Blame lib/Archive/Zip/FileMember.pm
|
Packit |
0bf95d |
package Archive::Zip::FileMember;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
use vars qw( $VERSION @ISA );
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$VERSION = '1.60';
|
|
Packit |
0bf95d |
@ISA = qw ( Archive::Zip::Member );
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Archive::Zip qw(
|
|
Packit |
0bf95d |
:UTILITY_METHODS
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub externalFileName {
|
|
Packit |
0bf95d |
shift->{'externalFileName'};
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Return true if I depend on the named file
|
|
Packit |
0bf95d |
sub _usesFileNamed {
|
|
Packit |
0bf95d |
my $self = shift;
|
|
Packit |
0bf95d |
my $fileName = shift;
|
|
Packit |
0bf95d |
my $xfn = $self->externalFileName();
|
|
Packit |
0bf95d |
return undef if ref($xfn);
|
|
Packit |
0bf95d |
return $xfn eq $fileName;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub fh {
|
|
Packit |
0bf95d |
my $self = shift;
|
|
Packit |
0bf95d |
$self->_openFile()
|
|
Packit |
0bf95d |
if !defined($self->{'fh'}) || !$self->{'fh'}->opened();
|
|
Packit |
0bf95d |
return $self->{'fh'};
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# opens my file handle from my file name
|
|
Packit |
0bf95d |
sub _openFile {
|
|
Packit |
0bf95d |
my $self = shift;
|
|
Packit |
0bf95d |
my ($status, $fh) = _newFileHandle($self->externalFileName(), 'r');
|
|
Packit |
0bf95d |
if (!$status) {
|
|
Packit |
0bf95d |
_ioError("Can't open", $self->externalFileName());
|
|
Packit |
0bf95d |
return undef;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
$self->{'fh'} = $fh;
|
|
Packit |
0bf95d |
_binmode($fh);
|
|
Packit |
0bf95d |
return $fh;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Make sure I close my file handle
|
|
Packit |
0bf95d |
sub endRead {
|
|
Packit |
0bf95d |
my $self = shift;
|
|
Packit |
0bf95d |
undef $self->{'fh'}; # _closeFile();
|
|
Packit |
0bf95d |
return $self->SUPER::endRead(@_);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub _become {
|
|
Packit |
0bf95d |
my $self = shift;
|
|
Packit |
0bf95d |
my $newClass = shift;
|
|
Packit |
0bf95d |
return $self if ref($self) eq $newClass;
|
|
Packit |
0bf95d |
delete($self->{'externalFileName'});
|
|
Packit |
0bf95d |
delete($self->{'fh'});
|
|
Packit |
0bf95d |
return $self->SUPER::_become($newClass);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
1;
|