aboutsummaryrefslogtreecommitdiffstats
path: root/common/t-timestuff.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/t-timestuff.c')
-rw-r--r--common/t-timestuff.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/t-timestuff.c b/common/t-timestuff.c
index ec55687c6..f39e3089d 100644
--- a/common/t-timestuff.c
+++ b/common/t-timestuff.c
@@ -112,7 +112,11 @@ test_timegm (void)
tbuf.tm_hour = tvalues[tidx].hour;
tbuf.tm_min = tvalues[tidx].min;
tbuf.tm_sec = tvalues[tidx].sec;
+#ifdef HAVE_TIMEGM
+ now = timegm (&tbuf);
+#else
now = mktime (&tbuf);
+#endif
}
if (now == (time_t)(-1))
fail (tidx);
@@ -122,7 +126,11 @@ test_timegm (void)
fail (tidx);
tbuf = *tp;
tbuf2 = tbuf;
+#ifdef HAVE_TIMEGM
atime = timegm (&tbuf);
+#else
+ atime = mktime (&tbuf);
+#endif
if (atime == (time_t)(-1))
fail (tidx);
if (atime != now)
@@ -146,6 +154,14 @@ main (int argc, char **argv)
(void)argc;
(void)argv;
+ /* If we do not have timegm, we use mktime. However, we need to use
+ UTC in this case so that the 20380118T235959 test does not fail
+ for other timezones. */
+#ifndef HAVE_TIMEGM
+ setenv ("TZ", "UTC", 1);
+ tzset ();
+#endif
+
test_timegm ();
return 0;