Jeff King [off-list ref] writes:
quoted hunk
diff --git a/test-date.c b/test-date.c
index a9e705f..ac6854a 100644
--- a/test-date.c
+++ b/test-date.c
@@ -21,12 +21,15 @@ static void parse_dates(char **argv, struct timeval *now)
for (; *argv; argv++) {
char result[100];
time_t t;
+ int tz;
result[0] = 0;
parse_date(*argv, result, sizeof(result));
- t = strtoul(result, NULL, 0);
- printf("%s -> %s\n", *argv,
- t ? show_date(t, 0, DATE_ISO8601) : "bad");
+ if (sscanf(result, "%ld %d", &t, &tz) == 2)
Gah...
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 *'
On Tue, Jul 06, 2010 at 12:01:35AM -0700, Junio C Hamano wrote:
quoted
time_t t;
+ int tz;
[...]
quoted
+ if (sscanf(result, "%ld %d", &t, &tz) == 2)
Gah...
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:
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
as show_date takes an unsigned long anyway.
-Peff
On Tue, Jul 06, 2010 at 03:28:49AM -0400, Jeff King wrote:
quoted
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 <redacted>
---
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
Jeff King [off-list ref] writes:
On Tue, Jul 06, 2010 at 03:28:49AM -0400, Jeff King wrote:
quoted
quoted
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:
Thanks.