delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2013/05/13/11:49:38

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:reply-to
:references:mime-version:content-type:in-reply-to; q=dns; s=
default; b=lMSGVoLzq+67mgOOAl2WDiGAHqPqScq2JeYsi1BERSXXIm0DXQsXB
vAU6+X4fdKOTBoeKdRAYK6sCKVj34z+cQp8JxBiHNItPPqVZMEDLCW4xDyC8OHuE
Kb6xQjUg82VqlvFhnbtt89NpDRYe8XTTZ06PGIqHmrVPlA4JU09KIc=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:reply-to
:references:mime-version:content-type:in-reply-to; s=default;
bh=T6EcaKyfrYlWeuWigJE9TYoASOU=; b=DOgytVI4tFJe68YxBVTVW6Vdzwm4
xhk0jjLkx7glyUxhK4FT5aA6cHULG2i/zvDxa1Ak4E1staPQJtt5qKzZWYiVoOU5
LhkxHxwpnUMd/p/hhogsvgfQwoIjDJtzC1mjagkytlsDCBNx2kIG2Ai+ZDVfn7yF
KJFKgkrkWanZPP4=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.1
Date: Mon, 13 May 2013 17:49:21 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: mktime loop
Message-ID: <20130513154921.GF8890@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <5244063b734b165baf34bdebaff0aca5 AT denis-excoffier DOT org> <20130513153651 DOT GD5045 AT calimero DOT vinschen DOT de>
MIME-Version: 1.0
In-Reply-To: <20130513153651.GD5045@calimero.vinschen.de>
User-Agent: Mutt/1.5.21 (2010-09-15)

On May 13 17:36, Corinna Vinschen wrote:
> On May 13 09:08, Denis Excoffier wrote:
> > Hello,
> > 
> > The following program (see below) is working properly under plain
> > 1.7.18. With all the snapshots afterwards (including
> > the current one 20130508), it fails after day=19, looping forever
> > (it seems). I use XP.
> > 
> > Regards,
> > 
> > Denis Excoffier.
> > 
> > % cat foo.c
> > #include <stdio.h>
> > #include <time.h>
> > 
> > int
> > main ()
> > {
> >   int day;
> >   // date --date='@2147483647' +%Y-%m-%d gives 2038-01-19
> >   for ( day = 1 ; day <= 31 ; ++day ) {
> >     struct tm tm;
> >     time_t now;
> >     tm.tm_year = 2038 - 1900;
> >     tm.tm_mon = 1 - 1;
> >     tm.tm_mday = day; // 19, 20
> >     tm.tm_hour = 0;
> >     tm.tm_min = 0;
> >     tm.tm_sec = 0;
> >     now = mktime (&tm);
> >     fprintf (stderr, "day=%d\n", day);
> >   };
> >   return 0;
> > }
> 
> Thanks for the testcase.  This looks like the new BSD code I added
> lately assumes that the datatype time_t is 8 bytes, not 4 byte as on 32
> bit Cygwin.  That's just a hunch I take from the fact that your testcase
> works fine on 64 bit Cygwin and only hangs on 32 bit Cygwin.  Oh well.
> I'll investigate further...

Erm... hang on.  Is that really a problem?  2147483647 is 0x7fffffff,
which is the maximum you get with a 4 byte time_t (== signed long)
anyway.  If you switch the date to 2038-01-20, the value will be
negative, and therefore outside the scope of the 4 byte time_t.  So this
is a hard restriction of using 4 byte time_t.

The solution is:

- Either somebody changes 32 bit Cygwin to 8 byte time_t while keeping
  all the 4 byte time_t APIs intact to maintain compatibility with
  existing binaries(*),

- or, you switch to a 64 bit Windows and use 64 bit Cygwin ;)


Corinna


(*) That's comparable with the off_t change from 4 to 8 byte we performed
    when switching from Cygwin 1.3 to 1.5, and it will be a helluvalot
    of work.  Given the work we still have to do to get a 64 bit distro
    up and running, this isn't exactly something I'm willing to invest a
    lot of time into this year.

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019