From cfea8e077b9a8956080688ab40e9efd812c2a0c5 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 5 Mar 2006 14:48:01 -0800 Subject: [PATCH] blame and annotate: show localtime with timezone. Earlier they showed gmtime and timezone, which was inconsistent with the way our commits and tags are pretty-printed. Signed-off-by: Junio C Hamano --- blame.c | 15 ++++++++++++--- git-annotate.perl | 8 +++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/blame.c b/blame.c index b551dd5aa3..ffc1f52add 100644 --- a/blame.c +++ b/blame.c @@ -550,13 +550,22 @@ static void get_commit_info(struct commit* commit, struct commit_info* ret) *tmp = 0; } -char* format_time(unsigned long time, const char* tz) +static const char* format_time(unsigned long time, const char* tz_str) { static char time_buf[128]; time_t t = time; + int minutes, tz; + struct tm *tm; - strftime(time_buf, sizeof(time_buf), "%Y-%m-%d %H:%M:%S ", gmtime(&t)); - strcat(time_buf, tz); + tz = atoi(tz_str); + minutes = tz < 0 ? -tz : tz; + minutes = (minutes / 100)*60 + (minutes % 100); + minutes = tz < 0 ? -minutes : minutes; + t = time + minutes * 60; + tm = gmtime(&t); + + strftime(time_buf, sizeof(time_buf), "%Y-%m-%d %H:%M:%S ", tm); + strcat(time_buf, tz_str); return time_buf; } diff --git a/git-annotate.perl b/git-annotate.perl index d93ee19c7e..b113def97b 100755 --- a/git-annotate.perl +++ b/git-annotate.perl @@ -418,7 +418,13 @@ sub format_date { return $_[0]; } my ($timestamp, $timezone) = split(' ', $_[0]); - return strftime("%Y-%m-%d %H:%M:%S " . $timezone, gmtime($timestamp)); + my $minutes = abs($timezone); + $minutes = int($minutes / 100) * 60 + ($minutes % 100); + if ($timezone < 0) { + $minutes = -$minutes; + } + my $t = $timestamp + $minutes * 60; + return strftime("%Y-%m-%d %H:%M:%S " . $timezone, gmtime($t)); } # Copied from git-send-email.perl - We need a Git.pm module..