1124524Sume#define _GNU_SOURCE 266776Skris#include "time_impl.h" 355163Sshin#include <errno.h> 455163Sshin 555163Sshinextern const char __gmt[]; 662632Skris 755163Sshintime_t timegm(struct tm *tm) 855163Sshin{ 955163Sshin struct tm new; 1055163Sshin long long t = __tm_to_secs(tm); 1155163Sshin if (__secs_to_tm(t, &new) < 0) { 1255163Sshin errno = EOVERFLOW; 1355163Sshin return -1; 1455163Sshin } 1555163Sshin *tm = new; 1655163Sshin tm->tm_isdst = 0; 1755163Sshin tm->__tm_gmtoff = 0; 1862632Skris tm->__tm_zone = __gmt; 1955163Sshin return t; 2055163Sshin} 2155163Sshin