From: Jeff King Date: Mon, 31 Aug 2009 02:31:42 +0000 (-0400) Subject: fix approxidate parsing of relative months and years X-Git-Tag: v1.6.5-rc0~16^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=931e8e27d94dbc24abc9c969ae0b414e0361abff;p=git.git fix approxidate parsing of relative months and years These were broken by b5373e9. The problem is that the code marks the month and year with "-1" for "we don't know it yet", but the month and year code paths were not adjusted to fill in the current time before doing their calculations (whereas other units follow a different code path and are fine). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff --git a/date.c b/date.c index 8e57e5eb8..e9ee4aa74 100644 --- a/date.c +++ b/date.c @@ -857,7 +857,9 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm } if (match_string(date, "months") >= 5) { - int n = tm->tm_mon - *num; + int n; + update_tm(tm, now, 0); /* fill in date fields if needed */ + n = tm->tm_mon - *num; *num = 0; while (n < 0) { n += 12; @@ -868,6 +870,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm } if (match_string(date, "years") >= 4) { + update_tm(tm, now, 0); /* fill in date fields if needed */ tm->tm_year -= *num; *num = 0; return end; diff --git a/t/t0006-date.sh b/t/t0006-date.sh index 02cd5659f..a4d8fa8fa 100755 --- a/t/t0006-date.sh +++ b/t/t0006-date.sh @@ -53,8 +53,8 @@ check_approxidate 10.minutes.ago '2009-08-30 19:10:00' check_approxidate yesterday '2009-08-29 19:20:00' check_approxidate 3.days.ago '2009-08-27 19:20:00' check_approxidate 3.weeks.ago '2009-08-09 19:20:00' -check_approxidate 3.months.ago '2009-05-30 19:20:00' failure -check_approxidate 2.years.3.months.ago '2007-05-30 19:20:00' failure +check_approxidate 3.months.ago '2009-05-30 19:20:00' +check_approxidate 2.years.3.months.ago '2007-05-30 19:20:00' check_approxidate '6am yesterday' '2009-08-29 06:00:00' check_approxidate '6pm yesterday' '2009-08-29 18:00:00'