From 2a39064c65e70a3e763c4dff5553cd2af3d10211 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 19 Sep 2005 15:53:50 -0700 Subject: [PATCH] Return proper error valud from "parse_date()" Right now we don't return any error value at all from parse_date(), and if we can't parse it, we just silently leave the result buffer unchanged. That's fine for the current user, which will always default to the current date, but it's a crappy interface, and we might well be better off with an error message rather than just the default date. So let's change the thing to return a negative value if an error occurs, and the length of the result otherwise (snprintf behaviour: if the buffer is too small, it returns how big it _would_ have been). [ I started looking at this in case we could support date-based revision names. Looks ugly. Would have to parse relative dates.. ] Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- date.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'date.c') diff --git a/date.c b/date.c index b46f2ce34..8d7b2eb99 100644 --- a/date.c +++ b/date.c @@ -388,7 +388,7 @@ static int match_tz(const char *date, int *offp) /* Gr. strptime is crap for this; it doesn't have a way to require RFC2822 (i.e. English) day/month names, and it doesn't work correctly with %z. */ -void parse_date(const char *date, char *result, int maxlen) +int parse_date(const char *date, char *result, int maxlen) { struct tm tm; int offset, sign, tm_gmt; @@ -431,7 +431,7 @@ void parse_date(const char *date, char *result, int maxlen) offset = (then - mktime(&tm)) / 60; if (then == -1) - return; + return -1; if (!tm_gmt) then -= offset * 60; @@ -442,7 +442,7 @@ void parse_date(const char *date, char *result, int maxlen) sign = '-'; } - snprintf(result, maxlen, "%lu %c%02d%02d", then, sign, offset/60, offset % 60); + return snprintf(result, maxlen, "%lu %c%02d%02d", then, sign, offset/60, offset % 60); } void datestamp(char *buf, int bufsize) -- cgit v1.2.1