| line | true | false | branch | 
 
| 67 | 0 | 70 | ref $_[0] eq 'HASH' ? : | 
 
| 68 | 4 | 66 | if ($fileName) | 
 
| 70 | 4 | 0 | $status == 0 ? : | 
 
| 96 | 0 | 246 | ref $_[0] eq 'HASH' ? : | 
 
| 98 | 166 | 3815 | if $member->fileName eq $fileName | 
 
| 105 | 0 | 16 | ref $_[0] eq 'HASH' ? : | 
 
| 116 | 4 | 911 | if (@_) | 
 
| 118 | 0 | 4 | ref $_[0] eq 'HASH' ? : | 
 
| 158 | 0 | 116 | if (@_) | 
 
| 159 | 0 | 0 | ref $_[0] eq 'HASH' ? : | 
 
| 176 | 0 | 10 | ref $_[0] eq 'HASH' ? : | 
 
| 177 | 0 | 10 | unless ref $member | 
 
| 178 | 0 | 10 | unless $member | 
 
| 188 | 0 | 9 | if (ref $_[0] eq 'HASH') { } | 
 
| 195 | 0 | 9 | unless ref $oldMember | 
 
| 196 | 0 | 9 | unless $oldMember | 
 
| 197 | 0 | 9 | unless $newMember | 
 
| 199 | 9 | 235 | $_ == $oldMember ? : | 
 
| 208 | 0 | 51 | if (ref $_[0] eq 'HASH') { } | 
 
| 215 | 21 | 30 | unless ref $member | 
 
| 216 | 0 | 51 | unless $member | 
 
| 219 | 11 | 40 | if (defined $name) { } | 
 
| 224 | 1 | 39 | if ((my $ret = _extractionNameIsSafe($name)) != 0) | 
 
| 230 | 6 | 44 | if ($dirName and not -d $dirName) | 
 
| 232 | 0 | 6 | unless -d $dirName | 
 
| 245 | 0 | 0 | if (ref $_[0] eq 'HASH') { } | 
 
| 252 | 0 | 0 | unless ref $member | 
 
| 253 | 0 | 0 | unless $member | 
 
| 255 | 0 | 0 | if $member->isDirectory | 
 
| 256 | 0 | 0 | unless ($name) | 
 
| 259 | 0 | 0 | if ((my $ret = _extractionNameIsSafe($name)) != 0) | 
 
| 270 | 0 | 233 | ref $_[0] eq 'HASH' ? : | 
 
| 271 | 233 | 0 | if $newMember | 
 
| 272 | 2 | 231 | if ($newMember and $newMember->{'bitFlag'} & 2048 and not utf8::is_utf8($newMember->{'fileName'})) | 
 
| 283 | 0 | 163 | if (ref $_[0] eq 'HASH') { } | 
 
| 291 | 0 | 0 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) | 
 
| 297 | 0 | 163 | if ($self->{'storeSymbolicLink'} and -l $fileName) { } | 
 
| 315 | 0 | 13 | if (ref $_[0] eq 'HASH') { } | 
 
| 333 | 0 | 11 | if (ref $_[0] eq 'HASH') { } | 
 
| 340 | 0 | 0 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) | 
 
| 345 | 0 | 11 | if ($self->{'storeSymbolicLink'} and -l $name) { } | 
 
| 347 | 0 | 0 | if $newName | 
 
| 366 | 0 | 2 | if (ref $_[0] eq 'HASH') { } | 
 
| 374 | 0 | 0 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) | 
 
| 379 | 2 | 0 | if ($newName) { } | 
 
| 384 | 1 | 1 | if (-f $name) { } | 
 
|  | 1 | 0 | elsif (-d $name) { } | 
 
| 397 | 0 | 3 | if (ref $_[0] eq 'HASH') { } | 
 
| 405 | 3 | 0 | if ($status == 0) | 
 
| 406 | 0 | 3 | unless defined $member | 
 
| 408 | 0 | 3 | if ($status == 0 and not ref $member) | 
 
| 411 | 0 | 0 | unless defined $member | 
 
| 413 | 3 | 0 | if ($status == 0) | 
 
| 419 | 0 | 3 | wantarray ? : | 
 
| 426 | 0 | 76 | ref $_[0] eq 'HASH' ? : | 
 
| 428 | 0 | 218 | if ($member->_usesFileNamed($fileName)) | 
 
| 435 | 0 | 76 | unless $status | 
 
| 449 | 0 | 116 | if (ref $_[0] eq 'HASH') { } | 
 
| 452 | 0 | 0 | exists $_[0]{'seek'} ? : | 
 
| 455 | 76 | 40 | @_ ? : | 
 
| 458 | 0 | 116 | unless $fh | 
 
| 459 | 0 | 116 | unless $fh->opened | 
 
| 463 | 76 | 40 | $fhIsSeekable ? : | 
 
| 464 | 0 | 116 | if $offset < 0 | 
 
| 513 | 0 | 409 | if $status != 0 | 
 
| 539 | 0 | 0 | ref $_[0] eq 'HASH' ? : | 
 
| 540 | 0 | 0 | unless defined $zipName | 
 
| 543 | 0 | 0 | unless $fh | 
 
| 551 | 0 | 0 | if ($status != 0) | 
 
| 560 | 0 | 0 | if (-f $zipName and not rename($zipName, $backupName)) | 
 
| 567 | 0 | 0 | unless (File::Copy::move($tempName, $zipName) or File::Copy::copy($tempName, $zipName)) | 
 
| 576 | 0 | 0 | if (-f $backupName and not unlink($backupName)) | 
 
| 616 | 25 | 67 | if ($membersZip64 or $eocdDataZip64 or $self->desiredZip64Mode == 1) | 
 
| 622 | 3 | 46 | if $versionMadeBy == 0 | 
 
| 623 | 3 | 46 | if $versionNeededToExtract < 45 | 
 
| 625 | 0 | 49 | unless $self->_print($fh, "PK\cF\cF") | 
 
| 641 | 0 | 49 | unless $self->_print($fh, $record) | 
 
| 644 | 0 | 49 | unless $self->_print($fh, "PK\cF\a") | 
 
| 653 | 0 | 49 | unless $self->_print($fh, $locator) | 
 
| 657 | 0 | 116 | unless $self->_print($fh, "PK\cE\cF") | 
 
| 660 | 0 | 116 | $numberOfCentralDirectoriesOnThisDisk > 65535 ? : | 
 
|  | 0 | 116 | $numberOfCentralDirectories > 65535 ? : | 
 
|  | 0 | 116 | $centralDirectorySize > 4294967295 ? : | 
 
|  | 0 | 116 | $centralDirectoryOffsetWRTStartingDiskNumber > 4294967295 ? : | 
 
| 674 | 0 | 116 | unless $self->_print($fh, $header) | 
 
| 676 | 0 | 116 | if ($zipfileCommentLength) | 
 
| 677 | 0 | 0 | unless $self->_print($fh, $self->zipfileComment) | 
 
| 694 | 0 | 116 | if (ref $_[0] eq 'HASH') { } | 
 
| 701 | 0 | 116 | if (defined $offset) { } | 
 
| 703 | 0 | 0 | unless $fh->seek($offset, 0) | 
 
| 713 | 0 | 409 | if $status != 0 | 
 
| 724 | 0 | 47 | ref $_[0] eq 'HASH' ? : | 
 
| 725 | 0 | 47 | unless $fileName | 
 
| 727 | 0 | 47 | unless $status | 
 
| 730 | 0 | 47 | if $status != 0 | 
 
| 741 | 0 | 47 | if (ref $_[0] eq 'HASH') { } | 
 
| 748 | 0 | 47 | unless defined $fileName | 
 
| 749 | 0 | 47 | unless $fh | 
 
| 750 | 0 | 47 | unless $fh->opened | 
 
| 756 | 0 | 47 | unless _isSeekable($fh) | 
 
| 762 | 0 | 47 | if $status != 0 | 
 
| 766 | 0 | 47 | if $status != 0 | 
 
| 770 | 0 | 47 | unless $fh->seek($eocdPosition - $self->centralDirectorySize, 0) | 
 
| 785 | 0 | 117 | if $status != 0 | 
 
| 786 | 95 | 22 | if (not $zip64) { } | 
 
| 787 | 40 | 55 | if $signature == 101010256 | 
 
| 790 | 7 | 15 | if $signature == 101075792 | 
 
| 793 | 0 | 70 | if $status != 0 | 
 
| 795 | 0 | 70 | if $status != 0 | 
 
| 797 | 13 | 57 | if ($newMember->isDirectory) | 
 
| 800 | 0 | 13 | unless $newMember->_ISA('Archive::Zip::DirectoryMember') | 
 
| 804 | 10 | 60 | if ($newMember->{'bitFlag'} & 2048 and not utf8::is_utf8($newMember->{'fileName'})) | 
 
| 857 | 0 | 47 | if ($eocdPosition < 20) | 
 
| 862 | 0 | 47 | unless $fh->seek(-20, 1) | 
 
| 875 | 0 | 47 | if $status == 4 | 
 
| 876 | 0 | 47 | if ($status == 3) | 
 
| 877 | 0 | 0 | unless $fh->seek($eocdPosition, 0) | 
 
| 885 | 0 | 47 | if ($bytesRead != 16) | 
 
| 890 | 24 | 23 | if ($zip64EOCDPosition > $zip64EOCDLocatorPosition - 52 - 4) | 
 
| 897 | 0 | 23 | unless $fh->seek($zip64EOCDPosition, 0) | 
 
| 904 | 0 | 23 | if $status == 4 | 
 
| 905 | 0 | 23 | if ($status == 3) | 
 
| 906 | 0 | 0 | unless $fh->seek($eocdPosition, 0) | 
 
| 915 | 0 | 23 | if ($bytesRead != 52) | 
 
| 923 | 16 | 7 | if ($zip64EOCDPosition + 12 + $zip64EODCRecordSize != $zip64EOCDLocatorPosition) | 
 
| 924 | 0 | 16 | unless $fh->seek($eocdPosition, 0) | 
 
| 944 | 0 | 7 | unless $fh->seek($eocdPosition, 0) | 
 
| 949 | 0 | 47 | unless $fh->seek(4, 1) | 
 
| 954 | 0 | 47 | if ($bytesRead != 18) | 
 
| 959 | 40 | 7 | if (not $self->{'zip64'}) { } | 
 
| 970 | 0 | 40 | if ($self->{'diskNumber'} == 65535 or $self->{'diskNumberWithStartOfCentralDirectory'} == 65535 or $self->{'numberOfCentralDirectoriesOnThisDisk'} == 65535 or $self->{'numberOfCentralDirectories'} == 65535 or $self->{'centralDirectorySize'} == 4294967295 or $self->{'centralDirectoryOffsetWRTStartingDiskNumber'} == 4294967295) | 
 
| 996 | 0 | 47 | if ($zipfileCommentLength) | 
 
| 999 | 0 | 0 | if ($bytesRead != $zipfileCommentLength) | 
 
| 1005 | 40 | 7 | if (not $self->{'zip64'}) { } | 
 
| 1008 | 40 | 0 | wantarray ? : | 
 
| 1014 | 7 | 0 | wantarray ? : | 
 
| 1026 | 0 | 47 | unless $fh->seek(0, 2) | 
 
| 1030 | 0 | 47 | if ($fileLength < 22) | 
 
| 1038 | 38 | 9 | if $seekOffset > $fileLength | 
 
| 1039 | 0 | 47 | unless $fh->seek(-$seekOffset, 2) | 
 
| 1042 | 0 | 47 | if ($bytesRead != $seekOffset) | 
 
| 1047 | 0 | 0 | if $pos >= 0 or $seekOffset == $fileLength or $seekOffset >= $Archive::Zip::ChunkSize | 
 
| 1052 | 47 | 0 | if ($pos >= 0) { } | 
 
| 1053 | 0 | 47 | unless $fh->seek($pos - $seekOffset, 1) | 
 
| 1075 | 0 | 7 | if (ref $_[0] eq 'HASH') { } | 
 
| 1084 | 0 | 7 | unless defined $root | 
 
| 1086 | 0 | 7 | unless defined $dest | 
 
| 1088 | 2 | 5 | unless defined $pred | 
 
| 1093 | 0 | 7 | unless $startDir | 
 
| 1102 | 0 | 650 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) { } | 
 
| 1103 | 0 | 0 | if &$pred | 
 
| 1106 | 156 | 494 | if &$pred | 
 
| 1111 | 0 | 0 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) | 
 
| 1118 | 2 | 5 | $rootZipName eq './' ? : | 
 
| 1124 | 0 | 156 | if ($^O eq 'MSWin32' and $Archive::Zip::UNICODE) { } | 
 
| 1132 | 3 | 153 | if ($archiveName eq $rootZipName) { } | 
 
| 1134 | 0 | 156 | if $archiveName =~ m[^\.?/?$] | 
 
| 1135 | 4 | 152 | $isDir ? : | 
 
| 1141 | 0 | 156 | unless $member | 
 
| 1150 | 0 | 0 | if (ref $_[0] eq 'HASH') { } | 
 
| 1160 | 0 | 0 | unless defined $root | 
 
| 1162 | 0 | 0 | unless defined $dest | 
 
| 1163 | 0 | 0 | unless defined $pattern | 
 
| 1166 | 0 | 0 | if /$pattern/ | 
 
|  | 0 | 0 | if /$pattern/ | 
 
|  | 0 | 0 | $pred ? : | 
 
| 1181 | 2 | 81 | if (grep(('..' eq $_), @directories)) | 
 
| 1190 | 0 | 479 | if (-l $path) | 
 
| 1194 | 69 | 410 | unless (-e $path) | 
 
| 1210 | 0 | 4 | if (ref $_[0] eq 'HASH') { } | 
 
| 1218 | 2 | 2 | unless defined $root | 
 
| 1219 | 3 | 1 | if (defined $dest) { } | 
 
| 1220 | 3 | 0 | unless ($dest =~ m[/$]) | 
 
| 1235 | 1 | 42 | if ((my $ret = _extractionNameIsSafe($fileName)) != 0) | 
 
| 1238 | 0 | 42 | if $status != 0 | 
 
| 1250 | 0 | 157 | if (ref $_[0] eq 'HASH') { } | 
 
| 1257 | 0 | 157 | unless (defined $fileName) | 
 
| 1263 | 0 | 157 | unless (@newStat) | 
 
| 1272 | 0 | 157 | if (ref $oldMember) { } | 
 
| 1280 | 0 | 111 | unless (defined $oldMember and $oldMember->lastModTime == $newStat[9] and $oldMember->isDirectory == $isDir and $isDir || $oldMember->uncompressedSize == $newStat[7]) | 
 
| 1286 | 8 | 38 | $isDir ? : | 
 
| 1291 | 0 | 46 | unless (defined $newMember) | 
 
| 1297 | 6 | 40 | if (defined $oldMember) { } | 
 
| 1321 | 0 | 4 | if (ref $_[0] eq 'HASH') { } | 
 
| 1331 | 0 | 4 | unless defined $root | 
 
| 1333 | 0 | 4 | unless defined $dest | 
 
| 1335 | 4 | 0 | unless defined $pred | 
 
| 1339 | 0 | 4 | $rootZipName eq './' ? : | 
 
| 1344 | 0 | 4 | unless $startDir | 
 
| 1353 | 157 | 0 | if &$pred | 
 
| 1369 | 4 | 153 | if ($memberName eq $rootZipName) { } | 
 
| 1371 | 0 | 157 | if $memberName =~ m[^\.?/?$] | 
 
| 1376 | 0 | 157 | unless ref $changedMember | 
 
| 1382 | 1 | 3 | if ($mirror) | 
 
| 1385 | 1 | 39 | unless $done{$member->fileName} |