From: Jeff King Date: Fri, 28 Aug 2009 19:15:21 GMT Subject: Re: [PATCH] Round-down years in "years+months" relative date view Message-ID: <20090828191521.GA12292@coredump.intra.peff.net> In-Reply-To: <20090828190319.GA9233@blimp.localdomain> On Fri, Aug 28, 2009 at 09:03:19PM +0200, Alex Riesen wrote: > +unsigned long approxidate(const char *date) > +{ > + struct timeval tv; > + gettimeofday(&tv, NULL); > + return approxidate_relative(date, &tv); > +} This now always calls gettimeofday, whereas the original approxidate only did if parse_date failed. I think you could also make this patch much smaller by just wrapping the whole function and using a '0' sentinel for "you need to fill in the time." Like: --- diff --git a/date.c b/date.c index 409a17d..b084d19 100644 --- a/date.c +++ b/date.c @@ -86,6 +86,14 @@ static int local_tzoffset(unsigned long time) const char *show_date(unsigned long time, int tz, enum date_mode mode) { + struct timeval now; + now.tv_sec = 0; + show_date_at_time(time, tz, mode, &now); +} + +const char *show_date_at_time(unsigned long time, int tz, enum date_mode mode, + struct timeval now) +{ struct tm *tm; static char timebuf[200]; @@ -96,8 +104,8 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode) if (mode == DATE_RELATIVE) { unsigned long diff; - struct timeval now; - gettimeofday(&now, NULL); + if (!now.tv_sec) + gettimeofday(&now, NULL); if (now.tv_sec < time) return "in the future"; diff = now.tv_sec - time; On the other hand, refactoring the relative date code into its own function is probably a good thing in the long run. -Peff