Mail Archives: cygwin/2010/10/29/19:18:04
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
- Raw text -