submitted upstream Author: Bernhard M. Wiedemann Date: 2018-03-18 Subject: fix calls of timelocal to work after 2019 because year 70 then starts to mean 2070 https://bugzilla.opensuse.org/show_bug.cgi?id=1102840 trackerbug: build fails at some time https://rt.perl.org/Ticket/Display.html?id=132896 perl Net::NNTP https://rt.perl.org/Ticket/Display.html?id=132898 perl Net::FTP => https://rt.cpan.org/Public/Bug/Display.html?id=124534 https://rt.perl.org/Ticket/Display.html?id=132897 perl doc Index: perl-5.26.1/cpan/Time-Local/t/Local.t =================================================================== --- perl-5.26.1.orig/cpan/Time-Local/t/Local.t +++ perl-5.26.1/cpan/Time-Local/t/Local.t @@ -85,6 +85,7 @@ my $epoch_is_64 for ( @time, @neg_time ) { my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; + my $year_in = $year; $year -= 1900; $mon--; @@ -96,7 +97,6 @@ SKIP: { # Test timelocal() { - my $year_in = $year < 70 ? $year + 1900 : $year; my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year_in ); my ( $s, $m, $h, $D, $M, $Y ) = localtime($time); @@ -111,7 +111,6 @@ SKIP: { # Test timegm() { - my $year_in = $year < 70 ? $year + 1900 : $year; my $time = timegm( $sec, $min, $hour, $mday, $mon, $year_in ); my ( $s, $m, $h, $D, $M, $Y ) = gmtime($time); @@ -128,7 +127,6 @@ SKIP: { for (@bad_time) { my ( $year, $mon, $mday, $hour, $min, $sec ) = @$_; - $year -= 1900; $mon--; eval { timegm( $sec, $min, $hour, $mday, $mon, $year ) }; @@ -138,19 +136,19 @@ for (@bad_time) { { is( - timelocal( 0, 0, 1, 1, 0, 90 ) - timelocal( 0, 0, 0, 1, 0, 90 ), 3600, + timelocal( 0, 0, 1, 1, 0, 1990 ) - timelocal( 0, 0, 0, 1, 0, 1990 ), 3600, 'one hour difference between two calls to timelocal' ); is( - timelocal( 1, 2, 3, 1, 0, 100 ) - timelocal( 1, 2, 3, 31, 11, 99 ), + timelocal( 1, 2, 3, 1, 0, 2000 ) - timelocal( 1, 2, 3, 31, 11, 1999 ), 24 * 3600, 'one day difference between two calls to timelocal' ); # Diff beween Jan 1, 1980 and Mar 1, 1980 = (31 + 29 = 60 days) is( - timegm( 0, 0, 0, 1, 2, 80 ) - timegm( 0, 0, 0, 1, 0, 80 ), + timegm( 0, 0, 0, 1, 2, 1980 ) - timegm( 0, 0, 0, 1, 0, 1980 ), 60 * 24 * 3600, '60 day difference between two calls to timegm' ); Index: perl-5.26.1/cpan/libnet/lib/Net/FTP.pm =================================================================== --- perl-5.26.1.orig/cpan/libnet/lib/Net/FTP.pm +++ perl-5.26.1/cpan/libnet/lib/Net/FTP.pm @@ -264,7 +264,7 @@ sub mdtm { $ftp->_MDTM($file) && $ftp->message =~ /((\d\d)(\d\d\d?))(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ - ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? $3 : ($1 - 1900)) + ? timegm($8, $7, $6, $5, $4 - 1, $2 eq '19' ? ($3 + 1900) : $1) : undef; } Index: perl-5.26.1/cpan/libnet/lib/Net/NNTP.pm =================================================================== --- perl-5.26.1.orig/cpan/libnet/lib/Net/NNTP.pm +++ perl-5.26.1/cpan/libnet/lib/Net/NNTP.pm @@ -598,7 +598,7 @@ sub date { $nntp->_DATE && $nntp->message =~ /(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ - ? timegm($6, $5, $4, $3, $2 - 1, $1 - 1900) + ? timegm($6, $5, $4, $3, $2 - 1, $1) : undef; } Index: perl-5.26.1/pod/perlport.pod =================================================================== --- perl-5.26.1.orig/pod/perlport.pod +++ perl-5.26.1/pod/perlport.pod @@ -670,7 +670,7 @@ When calculating specific times, such as it may be appropriate to calculate an offset for the epoch. use Time::Local qw(timegm); - my $offset = timegm(0, 0, 0, 1, 0, 70); + my $offset = timegm(0, 0, 0, 1, 0, 1970); The value for C<$offset> in Unix will be C<0>, but in Mac OS Classic will be some large number. C<$offset> can then be added to a Unix time