common: Remove homedir arg from start_new_{dirmngr,gpg_agent}.
[gnupg.git] / common / t-timestuff.c
index ec55687..a80aaff 100644 (file)
@@ -1,9 +1,9 @@
 /* t-timestuff.c - Regression tests for time functions
  * Copyright (C) 2007 Free Software Foundation, Inc.
  *
- * This file is part of JNLIB, which is a subsystem of GnuPG.
+ * This file is part of GnuPG.
  *
- * JNLIB is free software; you can redistribute it and/or modify it
+ * GnuPG is free software; you can redistribute it and/or modify it
  * under the terms of either
  *
  *   - the GNU Lesser General Public License as published by the Free
@@ -18,7 +18,7 @@
  *
  * or both in parallel, as here.
  *
- * JNLIB is distributed in the hope that it will be useful, but
+ * GnuPG is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
@@ -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);
@@ -120,21 +124,28 @@ test_timegm (void)
       tp = gmtime (&now);
       if (!tp)
         fail (tidx);
-      tbuf = *tp;
-      tbuf2 = tbuf;
-      atime = timegm (&tbuf);
-      if (atime == (time_t)(-1))
-        fail (tidx);
-      if (atime != now)
-        fail (tidx);
-
-      tp = gmtime (&atime);
-      if (!tp)
-        fail (tidx);
-      if (cmp_time_s (tp, &tbuf))
-        fail (tidx);
-      if (cmp_time_s (tp, &tbuf2))
-        fail (tidx);
+      else
+        {
+          tbuf = *tp;
+          tbuf2 = tbuf;
+#ifdef HAVE_TIMEGM
+          atime = timegm (&tbuf);
+#else
+          atime = mktime (&tbuf);
+#endif
+          if (atime == (time_t)(-1))
+            fail (tidx);
+          else if (atime != now)
+            fail (tidx);
+
+          tp = gmtime (&atime);
+          if (!tp)
+            fail (tidx);
+          else if (cmp_time_s (tp, &tbuf))
+            fail (tidx);
+          else if (cmp_time_s (tp, &tbuf2))
+            fail (tidx);
+        }
     }
 }
 
@@ -146,6 +157,18 @@ 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
+# ifdef HAVE_SETENV
+  setenv ("TZ", "UTC", 1);
+#else
+  putenv (xstrdup ("TZ=UTC"));
+#endif
+  tzset ();
+#endif
+
   test_timegm ();
 
   return 0;