xref: /freebsd/contrib/ldns/compat/timegm.c (revision cfe30d02adda7c3b5c76156ac52d50d8cab325d9)
1*7b5038d7SDag-Erling Smørgrav #ifdef HAVE_CONFIG_H
2*7b5038d7SDag-Erling Smørgrav #include <ldns/config.h>
3*7b5038d7SDag-Erling Smørgrav #endif
4*7b5038d7SDag-Erling Smørgrav 
5*7b5038d7SDag-Erling Smørgrav #include <stdio.h>
6*7b5038d7SDag-Erling Smørgrav 
7*7b5038d7SDag-Erling Smørgrav #ifdef HAVE_STDLIB_H
8*7b5038d7SDag-Erling Smørgrav #include <stdlib.h>
9*7b5038d7SDag-Erling Smørgrav #endif
10*7b5038d7SDag-Erling Smørgrav 
11*7b5038d7SDag-Erling Smørgrav #include <time.h>
12*7b5038d7SDag-Erling Smørgrav 
13*7b5038d7SDag-Erling Smørgrav time_t
timegm(struct tm * tm)14*7b5038d7SDag-Erling Smørgrav timegm (struct tm *tm) {
15*7b5038d7SDag-Erling Smørgrav 	time_t ret;
16*7b5038d7SDag-Erling Smørgrav 	char *tz;
17*7b5038d7SDag-Erling Smørgrav 
18*7b5038d7SDag-Erling Smørgrav 	tz = getenv("TZ");
19*7b5038d7SDag-Erling Smørgrav 	putenv((char*)"TZ=");
20*7b5038d7SDag-Erling Smørgrav 	tzset();
21*7b5038d7SDag-Erling Smørgrav 	ret = mktime(tm);
22*7b5038d7SDag-Erling Smørgrav 	if (tz) {
23*7b5038d7SDag-Erling Smørgrav 		char buf[256];
24*7b5038d7SDag-Erling Smørgrav 		snprintf(buf, sizeof(buf), "TZ=%s", tz);
25*7b5038d7SDag-Erling Smørgrav 		putenv(tz);
26*7b5038d7SDag-Erling Smørgrav 	}
27*7b5038d7SDag-Erling Smørgrav 	else
28*7b5038d7SDag-Erling Smørgrav 		putenv((char*)"TZ");
29*7b5038d7SDag-Erling Smørgrav 	tzset();
30*7b5038d7SDag-Erling Smørgrav 	return ret;
31*7b5038d7SDag-Erling Smørgrav }
32