Clean up approxidate() in preparation for fixes
authorLinus Torvalds <torvalds@osdl.org>
Thu, 28 Sep 2006 19:12:28 +0000 (12:12 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 29 Sep 2006 01:23:25 +0000 (18:23 -0700)
Our approxidate cannot handle simple times like "5 PM yesterday", and to
fix that, we will need to add some logic for number handling. This just
splits that out into a function of its own (the same way the _real_ date
parsing works).

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
date.c
diff --git a/date.c b/date.c
index e387dcd3976d8e12afdce5d7600ca0022f4ca835..4ff6604a09045789ca6abcdc0396fdc4467e1101 100644 (file)
--- a/date.c
+++ b/date.c
@@ -712,6 +712,15 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, int *num)
        return end;
 }
 
+static const char *approxidate_digit(const char *date, struct tm *tm, int *num)
+{
+       char *end;
+       unsigned long number = strtoul(date, &end, 10);
+
+       *num = number;
+       return end;
+}
+
 unsigned long approxidate(const char *date)
 {
        int number = 0;
@@ -731,9 +740,7 @@ unsigned long approxidate(const char *date)
                        break;
                date++;
                if (isdigit(c)) {
-                       char *end;
-                       number = strtoul(date-1, &end, 10);
-                       date = end;
+                       date = approxidate_digit(date-1, &tm, &number);
                        continue;
                }
                if (isalpha(c))