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: List-Subscribe: List-Archive: List-Post: List-Help: , 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 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 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline 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 > > #include > > > > 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