From a4727055ddf4f0c3c052710099d7373b2394ee8d Mon Sep 17 00:00:00 2001 From: sperber Date: Wed, 11 Jul 2001 13:16:59 +0000 Subject: [PATCH] MF 0.6: 1.4->1.5: Provide -1 value for tm_isdst in non-tz-secs cases. --- scsh/time1.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scsh/time1.c b/scsh/time1.c index 772e945..f4e219f 100644 --- a/scsh/time1.c +++ b/scsh/time1.c @@ -217,7 +217,7 @@ scheme_value date2time(int sec, int min, int hour, d.tm_sec = sec; d.tm_min = min; d.tm_hour = hour; d.tm_mday = mday; d.tm_mon = month; d.tm_year = year; - d.tm_wday = 0; d.tm_yday = 0; d.tm_isdst = summer; + d.tm_wday = 0; d.tm_yday = 0; if( FIXNUMP(tz_secs) ) { /* Offset from GMT in seconds. */ char **oldenv = environ; /* Set TZ to UTC */ @@ -232,12 +232,16 @@ scheme_value date2time(int sec, int min, int hour, environ = oldenv; } + /* ### Note that we *still* don't implement the manual paragraph + with "When calcultating with time-zones, the date's SUMMER? + field is used to resolve ambiguities. */ else if( STRINGP(tz_name) ) { /* Time zone */ char *newenv[2]; char **oldenv = make_newenv(tz_name, newenv); if( !oldenv ) return ENTER_FIXNUM(errno); tzset(); /* NetBSD, SunOS POSIX-noncompliance requires this. */ errno = 0; + d.tm_isdst = -1; t = mktime(&d); if( t == -1 ) return ENTER_FIXNUM(errno ? errno : -1); revert_env(oldenv); @@ -246,6 +250,7 @@ scheme_value date2time(int sec, int min, int hour, else { /* Local time */ tzset(); /* NetBSD, SunOS POSIX-noncompliance requires this. */ errno = 0; + d.tm_isdst = -1; t = mktime(&d); if( t == -1) return ENTER_FIXNUM(errno ? errno : -1); }