| #define _GNU_SOURCE | |
| #include "time_impl.h" | |
| #include <errno.h> | |
| extern const char __gmt[]; | |
| time_t timegm(struct tm* tm) { | |
| struct tm new; | |
| long long t = __tm_to_secs(tm); | |
| if (__secs_to_tm(t, &new) < 0) { | |
| errno = EOVERFLOW; | |
| return -1; | |
| } | |
| *tm = new; | |
| tm->tm_isdst = 0; | |
| tm->__tm_gmtoff = 0; | |
| tm->__tm_zone = __gmt; | |
| return t; | |
| } |