Filename | /usr/lib/perl5/site_perl/5.14/Archive/Zip/NewFileMember.pm |
Statements | Executed 9 statements in 1.12ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 221µs | 232µs | BEGIN@3 | Archive::Zip::NewFileMember::
1 | 1 | 1 | 26µs | 26µs | BEGIN@6 | Archive::Zip::NewFileMember::
1 | 1 | 1 | 15µs | 582µs | BEGIN@11 | Archive::Zip::NewFileMember::
1 | 1 | 1 | 15µs | 102µs | BEGIN@4 | Archive::Zip::NewFileMember::
0 | 0 | 0 | 0s | 0s | _newFromFileNamed | Archive::Zip::NewFileMember::
0 | 0 | 0 | 0s | 0s | _readRawChunk | Archive::Zip::NewFileMember::
0 | 0 | 0 | 0s | 0s | extractToFileNamed | Archive::Zip::NewFileMember::
0 | 0 | 0 | 0s | 0s | rewindData | Archive::Zip::NewFileMember::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Archive::Zip::NewFileMember; | ||||
2 | |||||
3 | 2 | 76µs | 2 | 244µs | # spent 232µs (221+12) within Archive::Zip::NewFileMember::BEGIN@3 which was called:
# once (221µs+12µs) by installer::archivefiles::BEGIN@30 at line 3 # spent 232µs making 1 call to Archive::Zip::NewFileMember::BEGIN@3
# spent 12µs making 1 call to strict::import |
4 | 2 | 93µs | 2 | 190µs | # spent 102µs (15+88) within Archive::Zip::NewFileMember::BEGIN@4 which was called:
# once (15µs+88µs) by installer::archivefiles::BEGIN@30 at line 4 # spent 102µs making 1 call to Archive::Zip::NewFileMember::BEGIN@4
# spent 88µs making 1 call to vars::import |
5 | |||||
6 | # spent 26µs within Archive::Zip::NewFileMember::BEGIN@6 which was called:
# once (26µs+0s) by installer::archivefiles::BEGIN@30 at line 9 | ||||
7 | 2 | 27µs | $VERSION = '1.30'; | ||
8 | @ISA = qw ( Archive::Zip::FileMember ); | ||||
9 | 1 | 60µs | 1 | 26µs | } # spent 26µs making 1 call to Archive::Zip::NewFileMember::BEGIN@6 |
10 | |||||
11 | 1 | 567µs | # spent 582µs (15+567) within Archive::Zip::NewFileMember::BEGIN@11 which was called:
# once (15µs+567µs) by installer::archivefiles::BEGIN@30 at line 15 # spent 567µs making 1 call to Exporter::import | ||
12 | :CONSTANTS | ||||
13 | :ERROR_CODES | ||||
14 | :UTILITY_METHODS | ||||
15 | 2 | 854µs | 1 | 582µs | ); # spent 582µs making 1 call to Archive::Zip::NewFileMember::BEGIN@11 |
16 | |||||
17 | # Given a file name, set up for eventual writing. | ||||
18 | sub _newFromFileNamed { | ||||
19 | my $class = shift; | ||||
20 | my $fileName = shift; # local FS format | ||||
21 | my $newName = shift; | ||||
22 | $newName = _asZipDirName($fileName) unless defined($newName); | ||||
23 | return undef unless ( stat($fileName) && -r _ && !-d _ ); | ||||
24 | my $self = $class->new(@_); | ||||
25 | $self->{'fileName'} = $newName; | ||||
26 | $self->{'externalFileName'} = $fileName; | ||||
27 | $self->{'compressionMethod'} = COMPRESSION_STORED; | ||||
28 | my @stat = stat(_); | ||||
29 | $self->{'compressedSize'} = $self->{'uncompressedSize'} = $stat[7]; | ||||
30 | $self->desiredCompressionMethod( | ||||
31 | ( $self->compressedSize() > 0 ) | ||||
32 | ? COMPRESSION_DEFLATED | ||||
33 | : COMPRESSION_STORED | ||||
34 | ); | ||||
35 | $self->unixFileAttributes( $stat[2] ); | ||||
36 | $self->setLastModFileDateTimeFromUnix( $stat[9] ); | ||||
37 | $self->isTextFile( -T _ ); | ||||
38 | return $self; | ||||
39 | } | ||||
40 | |||||
41 | sub rewindData { | ||||
42 | my $self = shift; | ||||
43 | |||||
44 | my $status = $self->SUPER::rewindData(@_); | ||||
45 | return $status unless $status == AZ_OK; | ||||
46 | |||||
47 | return AZ_IO_ERROR unless $self->fh(); | ||||
48 | $self->fh()->clearerr(); | ||||
49 | $self->fh()->seek( 0, IO::Seekable::SEEK_SET ) | ||||
50 | or return _ioError( "rewinding", $self->externalFileName() ); | ||||
51 | return AZ_OK; | ||||
52 | } | ||||
53 | |||||
54 | # Return bytes read. Note that first parameter is a ref to a buffer. | ||||
55 | # my $data; | ||||
56 | # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); | ||||
57 | sub _readRawChunk { | ||||
58 | my ( $self, $dataRef, $chunkSize ) = @_; | ||||
59 | return ( 0, AZ_OK ) unless $chunkSize; | ||||
60 | my $bytesRead = $self->fh()->read( $$dataRef, $chunkSize ) | ||||
61 | or return ( 0, _ioError("reading data") ); | ||||
62 | return ( $bytesRead, AZ_OK ); | ||||
63 | } | ||||
64 | |||||
65 | # If I already exist, extraction is a no-op. | ||||
66 | sub extractToFileNamed { | ||||
67 | my $self = shift; | ||||
68 | my $name = shift; # local FS name | ||||
69 | if ( File::Spec->rel2abs($name) eq | ||||
70 | File::Spec->rel2abs( $self->externalFileName() ) and -r $name ) | ||||
71 | { | ||||
72 | return AZ_OK; | ||||
73 | } | ||||
74 | else { | ||||
75 | return $self->SUPER::extractToFileNamed( $name, @_ ); | ||||
76 | } | ||||
77 | } | ||||
78 | |||||
79 | 1 | 8µs | 1; |