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