summaryrefslogtreecommitdiff
path: root/date.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-09-19 15:53:50 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-20 15:07:54 -0700
commit2a39064c65e70a3e763c4dff5553cd2af3d10211 (patch)
tree315300157ae438680e1b118eee72e792cc2285d8 /date.c
parentb0391890d25d9e7ca8f7df2199292df68ead8093 (diff)
downloadgit-2a39064c65e70a3e763c4dff5553cd2af3d10211.tar.gz
[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 <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'date.c')
-rw-r--r--date.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/date.c b/date.c
index b46f2ce344..8d7b2eb99f 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)