X-Recipient: archive-cygwin@delorie.com
X-SWARE-Spam-Status: No, hits=-0.6 required=5.0	tests=AWL,BAYES_00,SPF_NEUTRAL,T_RP_MATCHES_RCVD
X-Spam-Check-By: sourceware.org
Message-ID: <4CCB561D.5070304@cornell.edu>
Date: Fri, 29 Oct 2010 19:17:49 -0400
From: Ken Brown <kbrown@cornell.edu>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5
MIME-Version: 1.0
To: cygwin@cygwin.com
Subject: Re: localtime and TZ
References: <4CCB4025.6070405@cornell.edu> <4CCB42AF.2090907@redhat.com> <4CCB439B.7060602@redhat.com> <4CCB4676.8080609@cornell.edu> <4CCB47A6.9010600@redhat.com>
In-Reply-To: <4CCB47A6.9010600@redhat.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

On 10/29/2010 6:16 PM, Eric Blake wrote:
> On 10/29/2010 04:11 PM, Ken Brown wrote:
>>
>> Thanks, Eric.  I didn't know about any of this.  (I was using a modification of a configure test from the emacs sources.)
>
> Probably worth pointing it out to the emacs upstream, then :)
>
>>   But I get the same behavior with the following revised test case:
>>
>> #include<time.h>
>> #include<stdio.h>
>>
>> int
>> main (void)
>> {
>>    time_t now = time ((time_t *) 0);
>>    printf ("TZ is initially unset; hour = %d\n", localtime (&now)->tm_hour);
>>    putenv ("TZ=GMT0");
>>    printf ("TZ=GMT0; hour = %d\n", localtime (&now)->tm_hour);
>>    unsetenv("TZ");
>>    printf ("TZ unset; hour = %d\n", localtime (&now)->tm_hour);
>>    putenv ("TZ=PST8");
>>    printf ("TZ=PST8; hour = %d\n", localtime (&now)->tm_hour);
>>    unsetenv("TZ");
>>    printf ("TZ unset again; hour = %d\n", localtime (&now)->tm_hour);
>> }
>>
>> So the question remains whether this difference between Cygwin and Linux is a bug or by design.
>
> Apparently by design.  POSIX requires:
>
> http://www.opengroup.org/onlinepubs/9699919799/functions/localtime.html
>
> Local timezone information is used as though localtime() calls tzset().
>
> http://www.opengroup.org/onlinepubs/9699919799/functions/tzset.html
>
> The tzset() function shall use the value of the environment variable TZ
> to set time conversion information used by ctime , localtime , mktime ,
> and strftime . If TZ is absent from the environment,
> implementation-defined default timezone information shall be used.

Wouldn't you interpret this as meaning that the implementation-defined 
default timezone information should be the same every time localtime is 
called with TZ unset?  If not, what should a program do to get the 
"standard" default timezone information that it would get if TZ had 
never been set in the first place?

Ken

--
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

