Expected output of zdump(8)
Olson, Arthur David (NIH/NCI) [E]
olsona at dc37a.nci.nih.gov
Fri Mar 28 17:52:30 UTC 2008
This is the expected behavior on systems where time_t's are 64 bits and
ints are 32 bits; the year associated with the most negative (or most
positive) 64-bit value won't fit into 32 bits, eventually leading to the
NULL result.
--ado
-----Original Message-----
From: Edwin Groothuis [mailto:edwin at mavetju.org]
Sent: Friday, March 28, 2008 7:53 AM
To: tz at lecserver.nci.nih.gov
Subject: Expected output of zdump(8)
Greetings,
I was wondering why zdump(8) was so slow on one of my machines.
It's a known issue, old zdump.c code. So I grabbed a copy of the
new zdump.c from tzcode2008a. But it raised a couple of questions
for me.
On a 32 bit machine running FreeBSD 6.3 I get this:
(/etc/localtime is /usr/share/zoneinfo/Australia/Sydney)
[~/tzcode] edwin at k7>./zdump -v /etc/localtime
/etc/localtime Fri Dec 13 20:45:52 1901 UTC = Sat Dec 14 06:45:52 1901
EST isdst=0
/etc/localtime Sat Dec 14 20:45:52 1901 UTC = Sun Dec 15 06:45:52 1901
EST isdst=0
/etc/localtime Sun Dec 31 14:00:59 1916 UTC = Mon Jan 1 00:00:59 1917
EST isdst=0
/etc/localtime Sun Dec 31 14:01:00 1916 UTC = Mon Jan 1 01:01:00 1917
EST isdst=1
[...]
/etc/localtime Sat Oct 3 15:59:59 2037 UTC = Sun Oct 4 01:59:59 2037
EST isdst=0
/etc/localtime Sat Oct 3 16:00:00 2037 UTC = Sun Oct 4 03:00:00 2037
EST isdst=1
/etc/localtime Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 14:14:07 2038
EST isdst=1
/etc/localtime Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 14:14:07 2038
EST isdst=1
On a 64 bit machine running FreeBSD 6.3 I get this:
[~/tzcode] edwin at mavetju.org>./zdump -v /etc/localtime
/etc/localtime -9223372036854775808 = NULL
/etc/localtime -9223372036854689408 = NULL
/etc/localtime Sun Dec 31 14:00:59 1916 UTC = Mon Jan 1 00:00:59 1917
EST isdst=0 gmtoff=36000
/etc/localtime Sun Dec 31 14:01:00 1916 UTC = Mon Jan 1 01:01:00 1917
EST isdst=1 gmtoff=39600
[...]
/etc/localtime Sat Oct 3 15:59:59 2037 UTC = Sun Oct 4 01:59:59 2037
EST isdst=0 gmtoff=36000
/etc/localtime Sat Oct 3 16:00:00 2037 UTC = Sun Oct 4 03:00:00 2037
EST isdst=1 gmtoff=39600
/etc/localtime 9223372036854689407 = NULL
/etc/localtime 9223372036854775807 = NULL
That big positive and negative number is the effect of gmtime().
I got the same results on the 64 bit version of Linux FC6.
Now my question is... Is this behaviour "as expected" and the same
on other 64 bit operating systems like Solaris, MacOS/X and others
(if you have one name it :-) ?
Edwin
--
Edwin Groothuis | Personal website:
http://www.mavetju.org
edwin at mavetju.org | Weblog:
http://www.mavetju.org/weblog/
More information about the tz
mailing list