Re: [PATCH 1/2] t0006: test timezone parsing
- From
Jeff King <peff@peff.net>
- Date
- Jul 6, 2010, 07:54 UTC
- Message-ID
- <20100706075433.GD3567@sigill.intra.peff.net>
- In-Reply-To
- <20100706072849.GA3567@sigill.intra.peff.net>
On Tue, Jul 06, 2010 at 03:28:49AM -0400, Jeff King wrote:
Show 8 quoted lines
> > On FreeBSD 8.0, we now see this. > > > > cc1: warnings being treated as errors > > test-date.c: In function 'parse_dates': > > test-date.c:28: warning: format '%ld' expects type 'long int *', but argument 3 has type 'time_t *' > > Meh. I was worried about that when I used sscanf. I think we can just do > this:
Oh, I see this is already on maint. :) So here is my fixup in a nicer form:
-- >8 -- Subject: [PATCH] test-date: fix sscanf type conversion
Reading into a time_t isn't portable, since we don't know the exact type. Instead, use an unsigned long, which is what show_date wants, anyway.
Signed-off-by: Jeff King <peff@peff.net> --- test-date.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test-date.c b/test-date.c index ac6854a..6bcd5b0 100644 --- a/test-date.c +++ b/test-date.c @@ -20,12 +20,12 @@ static void parse_dates(char **argv, struct timeval *now) { for (; *argv; argv++) { char result[100]; - time_t t; + unsigned long t; int tz; result[0] = 0; parse_date(*argv, result, sizeof(result)); - if (sscanf(result, "%ld %d", &t, &tz) == 2) + if (sscanf(result, "%lu %d", &t, &tz) == 2) printf("%s -> %s\n", *argv, show_date(t, tz, DATE_ISO8601)); else
-- 1.7.2.rc1.214.g5a9d0