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.
maint
Linus Torvalds 2005-04-30 16:18:41 -07:00
parent 92e2311b6c
commit 7f26664f1f
1 changed files with 8 additions and 2 deletions

10
date.c
View File

@ -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)