From: Linus Torvalds Date: Sat, 30 Apr 2005 23:18:41 +0000 (-0700) Subject: date.c: fix printout of timezone offsets that aren't exact hours X-Git-Tag: v0.99~681 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=7f26664f1f03571cf3bde2fb3d321b9933690638;p=git.git date.c: fix printout of timezone offsets that aren't exact hours We'd get the sign wrong for the minutes part of a negative offset. --- diff --git a/date.c b/date.c index d3bae906..77a7958d 100644 --- a/date.c +++ b/date.c @@ -250,7 +250,7 @@ static int match_tz(char *date, int *offp) void parse_date(char *date, char *result, int maxlen) { struct tm tm; - int offset; + int offset, sign; time_t then; memset(&tm, 0, sizeof(tm)); @@ -293,7 +293,13 @@ void parse_date(char *date, char *result, int maxlen) then -= offset * 60; - snprintf(result, maxlen, "%lu %+03d%02d", then, offset/60, offset % 60); + sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + + snprintf(result, maxlen, "%lu %c%02d%02d", then, sign, offset/60, offset % 60); } void datestamp(char *buf, int bufsize)