#92 (date) loses track of time zone

open
nobody
None
5
2009-01-13
2009-01-13
John Russell
No

According the the scsh manual, (date) is supposed to return the
current date in the local time zone. However, with some ifdef conditions
(e.g., in the Cygwin scsh-0.6.7-2 package), it only works that way the first time that
(date) is called. After that, it returns dates in the UTC timezone.

Test script:

#!/usr/bin/scsh -s
!#
(define (show-date d)
(display (date:tz-name d))
(display " ")
(display (date:tz-secs d))
(newline))

(show-date (date))
(show-date (date))

Using the Cygwin scsh-0.6.7-2 package, I get this incorrect output --
the two lines should be the same:

PST+8 -28800
UCT 0

I uninstalled the Cygwin scsh package, and rebuilt scsh from source,
using the scsh-0.6.7.tar.gz tarball. I got the same incorrect
results.

I remade scsh in a Fedora environment from the same tarball, and I got
correct results:

PST+8 -28800
PST+8 -28800

So far, I haven't figured out why I get different results on Cygwin.
I did observe that, on Cygwin, different #ifdef compilation conditions
are used in compiling time1.c. When compiling on Cygwin, HAVE_TZNAME
is true and HAVE_STRUCT_TM_TM_ZONE is false. When compiling on
Fedora, the opposite is the case. I don't know if that is relevant to
my problem, but I thought I'd mention it for what it's worth.

Any suggestions will be much appreciated!

Cheers,

John

Discussion