diff options
Diffstat (limited to 'libbb/time.c')
-rw-r--r-- | libbb/time.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libbb/time.c b/libbb/time.c index f09ef5d52..e7c9fa65e 100644 --- a/libbb/time.c +++ b/libbb/time.c | |||
@@ -44,12 +44,21 @@ int FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm) | |||
44 | save = *ptm; | 44 | save = *ptm; |
45 | fmt = fmt_str; | 45 | fmt = fmt_str; |
46 | while (*fmt) { | 46 | while (*fmt) { |
47 | #if ENABLE_PLATFORM_MINGW32 && ENABLE_FEATURE_TIMEZONE | ||
48 | long gmtoff; | ||
49 | endp = mingw_strptime(date_str, fmt, ptm, &gmtoff); | ||
50 | #else | ||
47 | endp = strptime(date_str, fmt, ptm); | 51 | endp = strptime(date_str, fmt, ptm); |
52 | #endif | ||
48 | if (endp && *endp == '\0') { | 53 | if (endp && *endp == '\0') { |
49 | # if ENABLE_FEATURE_TIMEZONE | 54 | # if ENABLE_FEATURE_TIMEZONE |
50 | if (strchr(fmt, 'z')) { | 55 | if (strchr(fmt, 'z')) { |
51 | /* we have timezone offset: obtain Unix time_t */ | 56 | /* we have timezone offset: obtain Unix time_t */ |
57 | #if ENABLE_PLATFORM_MINGW32 | ||
58 | ptm->tm_sec -= gmtoff; | ||
59 | #else | ||
52 | ptm->tm_sec -= ptm->tm_gmtoff; | 60 | ptm->tm_sec -= ptm->tm_gmtoff; |
61 | #endif | ||
53 | ptm->tm_isdst = 0; | 62 | ptm->tm_isdst = 0; |
54 | t = timegm(ptm); | 63 | t = timegm(ptm); |
55 | if (t == (time_t)-1) | 64 | if (t == (time_t)-1) |