X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/b9bbb6c8bd8630fe4321045ce57174c4890bfa46..f622e663e7fcfb9ad92651e1a277d325dd939e5c:/lib/xgetdate.c diff --git a/lib/xgetdate.c b/lib/xgetdate.c index 9d8b492..81472f1 100644 --- a/lib/xgetdate.c +++ b/lib/xgetdate.c @@ -1,7 +1,11 @@ -/* Derived from getdate.c in glibc 2.3.6. This is pretty much +/** @file lib/xgetdate.c + * @brief Date parsing + * + * Derived from getdate.c in glibc 2.3.6. This is pretty much * standard getdate() except that you supply the template in an * argument, rather than messing around with environment variables and - * files. */ + * files. + */ /* Convert a string representation of time to a time value. Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc. @@ -31,6 +35,7 @@ #include #include "dateparse.h" +#include "strptime.h" #define TM_YEAR_BASE 1900 @@ -114,23 +119,23 @@ xgetdate_r (const char *string, struct tm *tp, const char *const *template) { const char *line; - size_t len; char *result = NULL; time_t timer; struct tm tm; int mday_ok = 0; line = NULL; - len = 0; while((line = *template++)) { /* Do the conversion. */ tp->tm_year = tp->tm_mon = tp->tm_mday = tp->tm_wday = INT_MIN; tp->tm_hour = tp->tm_sec = tp->tm_min = INT_MIN; tp->tm_isdst = -1; +#if !_WIN32 tp->tm_gmtoff = 0; tp->tm_zone = NULL; - result = strptime (string, line, tp); +#endif + result = my_strptime (string, line, tp); if (result && *result == '\0') break; } @@ -140,7 +145,11 @@ xgetdate_r (const char *string, struct tm *tp, /* Get current time. */ time (&timer); - localtime_r (&timer, &tm); +#if _WIN32 + localtime_s(&tm, &timer); +#else + localtime_r(&timer, &tm); +#endif /* If only the weekday is given, today is assumed if the given day is equal to the current day and next week if it is less. */