summaryrefslogtreecommitdiff
path: root/sideband.c
diff options
context:
space:
mode:
authorLibravatar Ben Walton <bdwalton@gmail.com>2013-02-09 21:46:57 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-02-09 14:34:18 -0800
commit75f7b5dfc47a9c764207559934b1c550423a243a (patch)
tree41db96b6cb984dd374666fb31cff3b363ae12a83 /sideband.c
parentMove Git::SVN::get_tz to Git::get_tz_offset (diff)
downloadtgif-75f7b5dfc47a9c764207559934b1c550423a243a.tar.xz
perl/Git.pm: fix get_tz_offset to properly handle DST boundary cases
When passed a local time that was on the boundary of a DST change, get_tz_offset returned a GMT offset that was incorrect (off by one hour). This is because the time was converted to GMT and then back to a time stamp via timelocal() which cannot disambiguate boundary cases as noted in its documentation. Modify this algorithm, using an approach suggested in http://article.gmane.org/gmane.comp.version-control.git/213871 to first convert the timestamp in question to two broken down forms with localtime() and gmtime(), and then compute what timestamps these two broken down forms would represent in GMT (i.e. a timezone that does not have DST issues) by applying timegm() on them. The difference between the resulting timestamps is the timezone offset. This avoids the ambigious conversion and allows a correct time to be returned on every occassion. Signed-off-by: Ben Walton <bdwalton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sideband.c')
0 files changed, 0 insertions, 0 deletions