summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1997-01-23 02:16:20 +0000
committerJim Meyering <jim@meyering.net>1997-01-23 02:16:20 +0000
commit63571532a24c71840f033a320bedf65a47e7e762 (patch)
treee48a3abc0a1c2803ff9ab47079d8111932444f86
parent82b01ee905a74b38b729beccd8c85afd0cc3fa83 (diff)
downloadcoreutils-63571532a24c71840f033a320bedf65a47e7e762.tar.xz
(AM_FUNC_MKTIME): Run tests for each of a few values
for the TZ environment variable. Andre Novaes Cunha provided the hairy TZ setting that exercized the Solaris tzset bug.
-rw-r--r--m4/mktime.m431
1 files changed, 25 insertions, 6 deletions
diff --git a/m4/mktime.m4 b/m4/mktime.m4
index c0fcf198b..4be030aa1 100644
--- a/m4/mktime.m4
+++ b/m4/mktime.m4
@@ -1,3 +1,5 @@
+#serial 2
+
dnl From Jim Meyering.
dnl FIXME: this should migrate into libit.
@@ -5,7 +7,9 @@ AC_DEFUN(AM_FUNC_MKTIME,
[AC_REQUIRE([AC_HEADER_TIME])dnl
AC_CHECK_HEADERS(sys/time.h)
AC_CACHE_CHECK([for working mktime], am_cv_func_working_mktime,
- [AC_TRY_RUN([/* Test program from Paul Eggert (eggert@twinsun.com)
+ [AC_TRY_RUN(
+changequote(<<, >>)dnl
+<</* Test program from Paul Eggert (eggert@twinsun.com)
and Tony Leneis (tony@plaza.ds.adp.com). */
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
@@ -20,6 +24,12 @@ AC_DEFUN(AM_FUNC_MKTIME,
static time_t time_t_max;
+/* Values we'll use to set the TZ environment variable. */
+static const char *const tz_strings[] = {
+ NULL, "GMT0", "JST-9", "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
+};
+#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
static void
mktime_test (now)
time_t now;
@@ -35,17 +45,26 @@ int
main ()
{
time_t t, delta;
+ int i;
+
for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
continue;
time_t_max--;
delta = time_t_max / 997; /* a suitable prime number */
- for (t = 0; t <= time_t_max - delta; t += delta)
- mktime_test (t);
- mktime_test ((time_t) 60 * 60);
- mktime_test ((time_t) 60 * 60 * 24);
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+ putenv (tz_strings[i]);
+
+ for (t = 0; t <= time_t_max - delta; t += delta)
+ mktime_test (t);
+ mktime_test ((time_t) 60 * 60);
+ mktime_test ((time_t) 60 * 60 * 24);
+ }
exit (0);
}
- ],
+ >>,
+changequote([, ])dnl
am_cv_func_working_mktime=yes, am_cv_func_working_mktime=no,
dnl When crosscompiling, assume mktime is missing or broken.
am_cv_func_working_mktime=no)