Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Dec 1999 00:00:03 -0800 (PST)
From:      Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/15520: mktime() fails under certain conditions
Message-ID:  <199912170800.AAA09093@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/15520; it has been noted by GNATS.

From: Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
To: Poul-Henning Kamp <phk@critter.freebsd.dk>
Cc: Andre Albsmeier <andre.albsmeier@mchp.siemens.de>,
	FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/15520: mktime() fails under certain conditions
Date: Fri, 17 Dec 1999 08:57:38 +0100

 On Thu, 16-Dec-1999 at 21:52:17 +0100, Poul-Henning Kamp wrote:
 > In message <19991216213647.A34480@internal>, Andre Albsmeier writes:
 > >On Thu, 16-Dec-1999 at 21:24:41 +0100, Poul-Henning Kamp wrote:
 > >> In message <199912162016.VAA97593@internal>, Andre Albsmeier writes:
 > >> 
 > >> There is no 02:00:00 that night.  If they test for that, they're
 > >> crazy.
 > >
 > >Yes, the time does not exist. However, I only wonder it our
 > >behaviour of returning an error is correct in this case. I don't
 > >trust the GNU/Linux guys as much as I trust FreeBSD :-) but there
 > >might be a reason they are testing it.
 > >
 > >I was already asked in private email if the mktime() should
 > >succeed according to POSIX.1... Does somebody know anything
 > >about that?
 > 
 > Well, Hum.  It seems to say that the fields are not constrained
 > to their normal domains:
 > 
 > 	The original values of the tm_wday and tm_yday components
 > 	of the structure are ignored, and the original values of
 > 	the other components are not restricted to the ranges
 > 	described in the <time.h> entry.
 > 
 > It does not describe what should happen if I ask it to make a time
 > out of 25:100:100, but I guess most of us can agree what it should
 > do.
 > 
 > The trouble with passing it 02:00:00 or for that matter 02:59:00
 > on the "spring forward" night, is that the time doesn't exist in
 > the first place:  Ie,  does 02:10:00 represent
 > 
 > 	01:59:59 + 10:59 = 03:10:00
 > or 
 > 	03:00:00 - 50:00 = 01:10:00
 > 
 > Since no sane argument either way really holds water, I think
 > returning an error is correct.
 
 As I wrote initally, the problem arises when configure tries to
 determine if mktime() works. I have now looked what happens in this
 case: The program replaces mktime with its own call. For the record,
 here is the interesting part (mktime.c, around line 277):
 
     if (t == t1 && t != t2 
         && (isdst < 0 || tm.tm_isdst < 0
             || (isdst != 0) != (tm.tm_isdst != 0)))
       /* We can't possibly find a match, as we are oscillating 
          between two values.  The requested time probably falls
          within a spring-forward gap of size DT.  Follow the common
          practice in this case, which is to return a time that is DT
          away from the requested time, preferring a time whose
          tm_isdst differs from the requested value.  In practice,
          this is more useful than returning -1.  */
       break;
     else if (--remaining_probes == 0)
       return -1;
 
 
 	-Andre
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912170800.AAA09093>