diff options
Diffstat (limited to 'src/time/timegm.c')
-rw-r--r-- | src/time/timegm.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/time/timegm.c b/src/time/timegm.c index 6d08917e..7148fca3 100644 --- a/src/time/timegm.c +++ b/src/time/timegm.c @@ -1,9 +1,18 @@ #define _GNU_SOURCE -#include <time.h> - -#include "__time.h" +#include "time_impl.h" +#include <errno.h> time_t timegm(struct tm *tm) { - return __tm_to_time(tm); + struct tm new; + long long t = __tm_to_secs(tm); + if (__secs_to_tm(t, &new) < 0) { + errno = EINVAL; + return -1; + } + *tm = new; + tm->tm_isdst = 0; + tm->__tm_gmtoff = 0; + tm->__tm_zone = "GMT"; + return t; } |