(AM_FUNC_MKTIME): Run tests for each of a few values
authorJim Meyering <jim@meyering.net>
Thu, 23 Jan 1997 02:16:20 +0000 (02:16 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 23 Jan 1997 02:16:20 +0000 (02:16 +0000)
for the TZ environment variable.  Andre Novaes Cunha provided the
hairy TZ setting that exercized the Solaris tzset bug.

m4/mktime.m4

index c0fcf19..4be030a 100644 (file)
@@ -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)