summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b039189)
raw | patch | inline | side by side (parent: b039189)
author | Linus Torvalds <torvalds@osdl.org> | |
Mon, 19 Sep 2005 22:53:50 +0000 (15:53 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Tue, 20 Sep 2005 22:07:54 +0000 (15:07 -0700) |
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>
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>
cache.h | patch | blob | history | |
date.c | patch | blob | history |
index 7f209794ba8a6734d130a014e7c7d10dae781989..e589918320f35970711c2a3609f54739a9269168 100644 (file)
--- a/cache.h
+++ b/cache.h
unsigned char *sha1_ret);
const char *show_date(unsigned long time, int timezone);
-void parse_date(const char *date, char *buf, int bufsize);
+int parse_date(const char *date, char *buf, int bufsize);
void datestamp(char *buf, int bufsize);
extern int setup_ident(void);
index b46f2ce344d53585901820b39dffc8cb4c631364..8d7b2eb99fffde3c8b62a497bbaf14cb9f8a8ab1 100644 (file)
--- a/date.c
+++ b/date.c
/* 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;
offset = (then - mktime(&tm)) / 60;
if (then == -1)
- return;
+ return -1;
if (!tm_gmt)
then -= offset * 60;
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)