Re: [BUG] minor: wrong handling of GIT_AUTHOR_DATE
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:45:10
Linus Torvalds [off-list ref] writes:
[ Those four deleted lines I removed just because the cases had already been handled, eg the ">1900" case was already handled when we checked for a four-digit year, and the >70 case was handled when we checked for exactly two digits ] Hmm?
quoted hunk
@@ -488,10 +504,6 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt if (num > 0 && num < 32) { tm->tm_mday = num; - } else if (num > 1900) { - tm->tm_year = num - 1900; - } else if (num > 70) { - tm->tm_year = num; } else if (num > 0 && num < 13) { tm->tm_mon = num-1; }
The comment above this part says we always favor mday over mon, but I wonder why this sequence is not like: if (tm->tm_mday is not set && num > 0 && num < 32) tm->tm_mday = num; else if (tm->tm_mon is not set && num > 0 && num < 13) tm->tm_mon = num - 1; Is this because we do not initialize tm fields to "unknown" in the beginning? I admit I haven't bothered to look at this part of the code for a looong time.