[strip-nondeterminism] 02/05: zip.pm: Calculate the target canonical time in just one place.
Chris Lamb
chris at chris-lamb.co.uk
Tue Oct 3 13:56:15 UTC 2017
This is an automated email from the git hooks/post-receive script.
lamby pushed a commit to branch master
in repository strip-nondeterminism.
commit 99af63bec965d924275d53f4db90f9853e4db8a7
Author: Chris Lamb <lamby at debian.org>
Date: Tue Oct 3 14:47:32 2017 +0100
zip.pm: Calculate the target canonical time in just one place.
---
lib/File/StripNondeterminism/handlers/zip.pm | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/lib/File/StripNondeterminism/handlers/zip.pm b/lib/File/StripNondeterminism/handlers/zip.pm
index 626569f..7c2cc4d 100644
--- a/lib/File/StripNondeterminism/handlers/zip.pm
+++ b/lib/File/StripNondeterminism/handlers/zip.pm
@@ -91,11 +91,11 @@ sub unixtime_to_winnt($) {
return $unixtime + $secondsdiff;
}
-sub normalize_extra_fields($$) {
+sub normalize_extra_fields($$$) {
# See http://sources.debian.net/src/zip/3.0-6/proginfo/extrafld.txt for extra field documentation
# $header_type is CENTRAL_HEADER or LOCAL_HEADER.
# WARNING: some fields have a different format depending on the header type
- my ($field, $header_type) = @_;
+ my ($canonical_time, $field, $header_type) = @_;
my $result = "";
my $pos = 0;
@@ -110,8 +110,7 @@ sub normalize_extra_fields($$) {
# len determines how many timestamps this field contains
# this works for both the central header and local header version
for (my $i = 1; $i < $len; $i += 4) {
- $result .= pack("V",
- $File::StripNondeterminism::canonical_time // SAFE_EPOCH);
+ $result .= pack("V", $canonical_time);
}
} elsif ($id == 0x000a) {
# first 4 bytes are reserved
@@ -192,14 +191,14 @@ sub normalize {
and not($options{archive_filter}->($zip))) {
return 0;
}
+ my $canonical_time = $File::StripNondeterminism::canonical_time;
my @filenames = sort $filename_cmp $zip->memberNames();
for my $filename (@filenames) {
my $member = $zip->removeMember($filename);
$zip->addMember($member);
$options{member_normalizer}->($member)
if exists $options{member_normalizer};
- $member->setLastModFileDateTimeFromUnix(
- $File::StripNondeterminism::canonical_time // SAFE_EPOCH);
+ $member->setLastModFileDateTimeFromUnix($canonical_time);
if ($member->fileAttributeFormat() == FA_UNIX) {
$member->unixFileAttributes(
($member->unixFileAttributes() & oct(100))
@@ -207,9 +206,9 @@ sub normalize {
: oct(644));
}
$member->cdExtraField(
- normalize_extra_fields($member->cdExtraField(), CENTRAL_HEADER));
+ normalize_extra_fields($canonical_time, $member->cdExtraField(), CENTRAL_HEADER));
$member->localExtraField(
- normalize_extra_fields($member->localExtraField(), LOCAL_HEADER));
+ normalize_extra_fields($canonical_time, $member->localExtraField(), LOCAL_HEADER));
}
my $old_perms = (stat($zip_filename))[2] & oct(7777);
$zip->overwrite();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/strip-nondeterminism.git
More information about the Reproducible-commits
mailing list