[PATCH 01/10] Export parse_date_basic() to convert a date string to timestamp

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jonathan Nieder
Date: Monday, August 9, 2010 - 3:01 pm

approxidate() is not appropriate for reading machine-written dates
because it guesses instead of erroring out on malformed dates.
parse_date() is less convenient since it returns its output as a
string.  So export the underlying function that writes a timestamp.

While at it, change the return value to match the usual convention:
return 0 for success and -1 for failure.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
As before, I think this improves code clarity, independently of
its use for svn-fe.  So I would not be unhappy if it is applied
as a separate topic.

No change from last round.

 cache.h |    1 +
 date.c  |   14 ++++++--------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/cache.h b/cache.h
index c9fa3df..68258be 100644
--- a/cache.h
+++ b/cache.h
@@ -811,6 +811,7 @@ const char *show_date_relative(unsigned long time, int tz,
 			       char *timebuf,
 			       size_t timebuf_size);
 int parse_date(const char *date, char *buf, int bufsize);
+int parse_date_basic(const char *date, unsigned long *timestamp, int *offset);
 void datestamp(char *buf, int bufsize);
 #define approxidate(s) approxidate_careful((s), NULL)
 unsigned long approxidate_careful(const char *, int *);
diff --git a/date.c b/date.c
index 3c981f7..00f9eb5 100644
--- a/date.c
+++ b/date.c
@@ -586,7 +586,7 @@ static int date_string(unsigned long date, int offset, char *buf, int len)
 
 /* 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. */
-int parse_date_toffset(const char *date, unsigned long *timestamp, int *offset)
+int parse_date_basic(const char *date, unsigned long *timestamp, int *offset)
 {
 	struct tm tm;
 	int tm_gmt;
@@ -642,17 +642,16 @@ int parse_date_toffset(const char *date, unsigned long *timestamp, int *offset)
 
 	if (!tm_gmt)
 		*timestamp -= *offset * 60;
-	return 1; /* success */
+	return 0; /* success */
 }
 
 int parse_date(const char *date, char *result, int maxlen)
 {
 	unsigned long timestamp;
 	int offset;
-	if (parse_date_toffset(date, &timestamp, &offset) > 0)
-		return date_string(timestamp, offset, result, maxlen);
-	else
+	if (parse_date_basic(date, &timestamp, &offset))
 		return -1;
+	return date_string(timestamp, offset, result, maxlen);
 }
 
 enum date_mode parse_date_format(const char *format)
@@ -1004,9 +1003,8 @@ unsigned long approxidate_relative(const char *date, const struct timeval *tv)
 	int offset;
 	int errors = 0;
 
-	if (parse_date_toffset(date, &timestamp, &offset) > 0)
+	if (!parse_date_basic(date, &timestamp, &offset))
 		return timestamp;
-
 	return approxidate_str(date, tv, &errors);
 }
 
@@ -1019,7 +1017,7 @@ unsigned long approxidate_careful(const char *date, int *error_ret)
 	if (!error_ret)
 		error_ret = &dummy;
 
-	if (parse_date_toffset(date, &timestamp, &offset) > 0) {
+	if (!parse_date_basic(date, &timestamp, &offset)) {
 		*error_ret = 0;
 		return timestamp;
 	}
-- 
1.7.2.1.544.ga752d.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/8] Resurrect rr/svn-export, Ramkumar Ramachandra, (Thu Jul 15, 9:22 am)
[PATCH 1/8] Export parse_date_basic() to convert a date st ..., Ramkumar Ramachandra, (Thu Jul 15, 9:22 am)
[PATCH 2/8] Introduce vcs-svn lib, Ramkumar Ramachandra, (Thu Jul 15, 9:22 am)
[PATCH 3/8] Add memory pool library, Ramkumar Ramachandra, (Thu Jul 15, 9:22 am)
[PATCH 4/8] Add treap implementation, Ramkumar Ramachandra, (Thu Jul 15, 9:23 am)
[PATCH 5/8] Add string-specific memory pool, Ramkumar Ramachandra, (Thu Jul 15, 9:23 am)
[PATCH 6/8] Add stream helper library, Ramkumar Ramachandra, (Thu Jul 15, 9:23 am)
[PATCH 7/8] Add infrastructure to write revisions in fast- ..., Ramkumar Ramachandra, (Thu Jul 15, 9:23 am)
[PATCH 8/8] Add SVN dump parser, Ramkumar Ramachandra, (Thu Jul 15, 9:23 am)
Re: [PATCH 2/8] Introduce vcs-svn lib, Jonathan Nieder, (Thu Jul 15, 10:46 am)
Re: [PATCH 3/8] Add memory pool library, Jonathan Nieder, (Thu Jul 15, 11:57 am)
Re: [PATCH 4/8] Add treap implementation, Jonathan Nieder, (Thu Jul 15, 12:09 pm)
Re: [PATCH 3/8] Add memory pool library, Ramkumar Ramachandra, (Thu Jul 15, 12:12 pm)
Re: [PATCH 2/8] Introduce vcs-svn lib, Ramkumar Ramachandra, (Thu Jul 15, 12:15 pm)
Re: [PATCH 4/8] Add treap implementation, Ramkumar Ramachandra, (Thu Jul 15, 12:18 pm)
Re: [PATCH 6/8] Add stream helper library, Jonathan Nieder, (Thu Jul 15, 12:19 pm)
Re: [PATCH 8/8] Add SVN dump parser, Jonathan Nieder, (Thu Jul 15, 12:52 pm)
Re: [PATCH 8/8] Add SVN dump parser, Jonathan Nieder, (Thu Jul 15, 1:04 pm)
Re: [PATCH 0/8] Resurrect rr/svn-export, Jonathan Nieder, (Fri Jul 16, 3:13 am)
[PATCH 3/9] Add memory pool library, Jonathan Nieder, (Fri Jul 16, 3:16 am)
[PATCH 4/9] Add treap implementation, Jonathan Nieder, (Fri Jul 16, 3:23 am)
Re: [PATCH 4/9] Add treap implementation, Jonathan Nieder, (Fri Jul 16, 11:26 am)
[PATCH 0/10] rr/svn-export reroll, Jonathan Nieder, (Mon Aug 9, 2:57 pm)
[PATCH 01/10] Export parse_date_basic() to convert a date ..., Jonathan Nieder, (Mon Aug 9, 3:01 pm)
[PATCH 02/10] Introduce vcs-svn lib, Jonathan Nieder, (Mon Aug 9, 3:04 pm)
[PATCH 03/10] Add memory pool library, Jonathan Nieder, (Mon Aug 9, 3:11 pm)
[PATCH 04/10] Add treap implementation, Jonathan Nieder, (Mon Aug 9, 3:17 pm)
[PATCH 05/10] Add string-specific memory pool, Jonathan Nieder, (Mon Aug 9, 3:34 pm)
[PATCH 06/10] Add stream helper library, Jonathan Nieder, (Mon Aug 9, 3:39 pm)
[PATCH 08/10] SVN dump parser, Jonathan Nieder, (Mon Aug 9, 3:55 pm)
PATCH 09/10] Update svn-fe manual, Jonathan Nieder, (Mon Aug 9, 3:55 pm)
Re: [PATCH 0/10] rr/svn-export reroll, Ramkumar Ramachandra, (Tue Aug 10, 5:53 am)
Re: [PATCH 0/10] rr/svn-export reroll, Jonathan Nieder, (Tue Aug 10, 6:53 pm)
Re: [PATCH 05/10] Add string-specific memory pool, Junio C Hamano, (Thu Aug 12, 10:22 am)
Re: [PATCH 04/10] Add treap implementation, Junio C Hamano, (Thu Aug 12, 10:22 am)
Re: [PATCH 08/10] SVN dump parser, Junio C Hamano, (Thu Aug 12, 10:22 am)
Re: [PATCH 05/10] Add string-specific memory pool, Jonathan Nieder, (Thu Aug 12, 2:30 pm)
Re: [PATCH 04/10] Add treap implementation, Jonathan Nieder, (Thu Aug 12, 3:02 pm)
Re: [PATCH 04/10] Add treap implementation, Jonathan Nieder, (Thu Aug 12, 3:11 pm)
Re: [PATCH 04/10] Add treap implementation, Junio C Hamano, (Thu Aug 12, 3:44 pm)
[PATCH/WIP 00/16] svn delta applier, Jonathan Nieder, (Sun Oct 10, 7:34 pm)
[PATCH 01/16] vcs-svn: Eliminate global byte_buffer[] array, Jonathan Nieder, (Sun Oct 10, 7:37 pm)
[PATCH 03/16] vcs-svn: Collect line_buffer data in a struct, Jonathan Nieder, (Sun Oct 10, 7:39 pm)
[PATCH 07/16] vcs-svn: Add binary-safe read() function, Jonathan Nieder, (Sun Oct 10, 7:47 pm)
[PATCH 10/16] vcs-svn: Allow character-oriented input, Jonathan Nieder, (Sun Oct 10, 7:52 pm)
[PATCH 13/16] vcs-svn: Learn to check for SVN\0 magic, Jonathan Nieder, (Sun Oct 10, 7:58 pm)
[PATCH 14/16] compat: helper for detecting unsigned overflow, Jonathan Nieder, (Sun Oct 10, 7:59 pm)
[PATCH/RFC 16'/16] vcs-svn: Add svn delta parser, Jonathan Nieder, (Sun Oct 10, 9:01 pm)
[PATCH/RFC 0/11] Building up the delta parser, Jonathan Nieder, (Wed Oct 13, 2:17 am)
[PATCH 02/11] vcs-svn: Skeleton of an svn delta parser, Jonathan Nieder, (Wed Oct 13, 2:21 am)
[PATCH 04/11] vcs-svn: Read inline data from deltas, Jonathan Nieder, (Wed Oct 13, 2:35 am)
[PATCH 05/11] vcs-svn: Read instructions from deltas, Jonathan Nieder, (Wed Oct 13, 2:38 am)
[PATCH 07/11] vcs-svn: Check declared number of output bytes, Jonathan Nieder, (Wed Oct 13, 2:41 am)
[PATCH 09/11] vcs-svn: Let deltas use data from postimage, Jonathan Nieder, (Wed Oct 13, 2:50 am)
[PATCH 11/11] vcs-svn: Allow deltas to copy from preimage, Jonathan Nieder, (Wed Oct 13, 2:58 am)
[PATCH 11/11] vcs-svn: Allow deltas to copy from preimage, Jonathan Nieder, (Wed Oct 13, 3:00 am)
Re: [PATCH/RFC 0/11] Building up the delta parser, Ramkumar Ramachandra, (Mon Oct 18, 10:00 am)
Re: [PATCH/RFC 0/11] Building up the delta parser, Jonathan Nieder, (Mon Oct 18, 10:03 am)