Merge branch 'bw/perl-timegm-timelocal-fix'
authorJunio C Hamano <gitster@pobox.com>
Tue, 6 Mar 2018 22:54:08 +0000 (14:54 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Mar 2018 22:54:08 +0000 (14:54 -0800)
Y2k20 fix ;-) for our perl scripts.

* bw/perl-timegm-timelocal-fix:
perl: call timegm and timelocal with 4-digit year

1  2 
perl/Git.pm
diff --combined perl/Git.pm
index 9d60d7948b22254e6f61cc0d984b4ef40f27bc4f,df62518c710cd608487ccbcdd00067ba377accff..a7440a1f096aa193a21688414669300425146382
@@@ -101,7 -101,7 +101,7 @@@ increase notwithstanding)
  
  
  use Carp qw(carp croak); # but croak is bad - throw instead
 -use Error qw(:try);
 +use Git::Error qw(:try);
  use Cwd qw(abs_path cwd);
  use IPC::Open2 qw(open2);
  use Fcntl qw(SEEK_SET SEEK_CUR);
@@@ -534,7 -534,9 +534,9 @@@ If TIME is not supplied, the current lo
  sub get_tz_offset {
        # some systems don't handle or mishandle %z, so be creative.
        my $t = shift || time;
-       my $gm = timegm(localtime($t));
+       my @t = localtime($t);
+       $t[5] += 1900;
+       my $gm = timegm(@t);
        my $sign = qw( + + - )[ $gm <=> $t ];
        return sprintf("%s%02d%02d", $sign, (gmtime(abs($t - $gm)))[2,1]);
  }
@@@ -880,6 -882,77 +882,6 @@@ sub ident_person 
        return "$ident[0] <$ident[1]>";
  }
  
 -=item parse_mailboxes
 -
 -Return an array of mailboxes extracted from a string.
 -
 -=cut
 -
 -# Very close to Mail::Address's parser, but we still have minor
 -# differences in some cases (see t9000 for examples).
 -sub parse_mailboxes {
 -      my $re_comment = qr/\((?:[^)]*)\)/;
 -      my $re_quote = qr/"(?:[^\"\\]|\\.)*"/;
 -      my $re_word = qr/(?:[^]["\s()<>:;@\\,.]|\\.)+/;
 -
 -      # divide the string in tokens of the above form
 -      my $re_token = qr/(?:$re_quote|$re_word|$re_comment|\S)/;
 -      my @tokens = map { $_ =~ /\s*($re_token)\s*/g } @_;
 -      my $end_of_addr_seen = 0;
 -
 -      # add a delimiter to simplify treatment for the last mailbox
 -      push @tokens, ",";
 -
 -      my (@addr_list, @phrase, @address, @comment, @buffer) = ();
 -      foreach my $token (@tokens) {
 -              if ($token =~ /^[,;]$/) {
 -                      # if buffer still contains undeterminated strings
 -                      # append it at the end of @address or @phrase
 -                      if ($end_of_addr_seen) {
 -                              push @phrase, @buffer;
 -                      } else {
 -                              push @address, @buffer;
 -                      }
 -
 -                      my $str_phrase = join ' ', @phrase;
 -                      my $str_address = join '', @address;
 -                      my $str_comment = join ' ', @comment;
 -
 -                      # quote are necessary if phrase contains
 -                      # special characters
 -                      if ($str_phrase =~ /[][()<>:;@\\,.\000-\037\177]/) {
 -                              $str_phrase =~ s/(^|[^\\])"/$1/g;
 -                              $str_phrase = qq["$str_phrase"];
 -                      }
 -
 -                      # add "<>" around the address if necessary
 -                      if ($str_address ne "" && $str_phrase ne "") {
 -                              $str_address = qq[<$str_address>];
 -                      }
 -
 -                      my $str_mailbox = "$str_phrase $str_address $str_comment";
 -                      $str_mailbox =~ s/^\s*|\s*$//g;
 -                      push @addr_list, $str_mailbox if ($str_mailbox);
 -
 -                      @phrase = @address = @comment = @buffer = ();
 -                      $end_of_addr_seen = 0;
 -              } elsif ($token =~ /^\(/) {
 -                      push @comment, $token;
 -              } elsif ($token eq "<") {
 -                      push @phrase, (splice @address), (splice @buffer);
 -              } elsif ($token eq ">") {
 -                      $end_of_addr_seen = 1;
 -                      push @address, (splice @buffer);
 -              } elsif ($token eq "@" && !$end_of_addr_seen) {
 -                      push @address, (splice @buffer), "@";
 -              } else {
 -                      push @buffer, $token;
 -              }
 -      }
 -
 -      return @addr_list;
 -}
 -
  =item hash_object ( TYPE, FILENAME )
  
  Compute the SHA1 object id of the given C<FILENAME> considering it is