about summary refs log tree commit diff
path: root/time/tst-mktime.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2004-11-01 00:21:39 +0000
committerRoland McGrath <roland@gnu.org>2004-11-01 00:21:39 +0000
commite507cc567353fd77b00604fdfa405d4adc64ed18 (patch)
tree18dc8504781a232f37b213371dfb69cf5ccb4b80 /time/tst-mktime.c
parent27b1a5c23501fac604335a8827690e12d4b8498e (diff)
downloadglibc-e507cc567353fd77b00604fdfa405d4adc64ed18.tar.gz
glibc-e507cc567353fd77b00604fdfa405d4adc64ed18.tar.xz
glibc-e507cc567353fd77b00604fdfa405d4adc64ed18.zip
[BZ #473, BZ #487]
2004-10-27  Derek R. Price  <derek@ximbiot.com>
	[BZ #487] This change is imported from gnulib.
	* time/mktime.c (not_equal_tm) [DEBUG]: Remove redundant check.

2004-10-24  Paul Eggert  <eggert@cs.ucla.edu>

	[BZ #473]
	* time/tst-mktime.c (main): Don't assume that mktime fails
	when given time stamps before 1970.  It returns negative
	time_t values instead, for compatibility with BSD.

	* time/tst-mktime2.c: New file.
	* time/Makefile (tests): Add it.

	[BZ #473] Import from gnulib.  Revamp to avoid several problems near
	time_t extrema, and on hosts with 64-bit time_t and 32-bit int.
	This fixes Debian bug 177940.
	* time/mktime.c (TIME_T_MIDPOINT): New macro.
	(ydhms_diff): Renamed from ydhms_tm_diff, with a new signature,
	which avoids overflow problems on hosts with 64-bit time_t and
	32-bit int.  All callers changed.  Now an inline function.
	Verify at compile-time that long int is wide enough to avoid
	these overflow problems.
	(guess_time_tm): New function.
	(__mktime_internal): Use it.  Avoid overflow when computing yday on
	hosts with 64-bit long and 32-bit int.  Remove tests for 69;
	no longer needed.  Use if rather than #ifdef for LEAP_SECONDS_POSSIBLE
	so that the code is checked by more compilers.
	Do not rely on floating point to probe: stick to integer arithmetic,
	to avoid potential porting problems.
	Repair potential overflow correctly in the Southern Hemisphere.
	(localtime_offset): Add a FIXME for the case where time_t is unsigned.
Diffstat (limited to 'time/tst-mktime.c')
-rw-r--r--time/tst-mktime.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/time/tst-mktime.c b/time/tst-mktime.c
index 8bc7631461..416a85616c 100644
--- a/time/tst-mktime.c
+++ b/time/tst-mktime.c
@@ -55,9 +55,11 @@ main (void)
 
       setenv ("TZ", "CET-1", 1);
       t = mktime (&time_str);
-      if (t != (time_t) -1)
+#define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60)
+      if (t != EVENING69_CET)
         {
-	  printf ("mktime returned %ld, expected -1\n", (long) t);
+	  printf ("mktime returned %ld, expected %ld\n",
+		  (long) t, (long) EVENING69_CET);
 	  result = 1;
         }
       else