diff: --full-index
[gitweb.git] / date.c
diff --git a/date.c b/date.c
index b46f2ce344d53585901820b39dffc8cb4c631364..63f5a0919768112c0d3301e7afaa59edcce7da36 100644 (file)
--- a/date.c
+++ b/date.c
@@ -4,7 +4,6 @@
  * Copyright (C) Linus Torvalds, 2005
  */
 
-#include <ctype.h>
 #include <time.h>
 
 #include "cache.h"
@@ -386,12 +385,23 @@ static int match_tz(const char *date, int *offp)
        return end - date;
 }
 
+static int date_string(unsigned long date, int offset, char *buf, int len)
+{
+       int sign = '+';
+
+       if (offset < 0) {
+               offset = -offset;
+               sign = '-';
+       }
+       return snprintf(buf, len, "%lu %c%02d%02d", date, sign, offset / 60, offset % 60);
+}
+
 /* 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;
+       int offset, tm_gmt;
        time_t then;
 
        memset(&tm, 0, sizeof(tm));
@@ -431,18 +441,11 @@ 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;
-
-       sign = '+';
-       if (offset < 0) {
-               offset = -offset;
-               sign = '-';
-       }
-
-       snprintf(result, maxlen, "%lu %c%02d%02d", then, sign, offset/60, offset % 60);
+       return date_string(then, offset, result, maxlen);
 }
 
 void datestamp(char *buf, int bufsize)
@@ -455,5 +458,5 @@ void datestamp(char *buf, int bufsize)
        offset = my_mktime(localtime(&now)) - now;
        offset /= 60;
 
-       snprintf(buf, bufsize, "%lu %+05d", now, offset/60*100 + offset%60);
+       date_string(now, offset, buf, bufsize);
 }