diff --git a/ChangeLog b/ChangeLog index 3209353025..f7a8f9bccc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Mon Jun 12 23:41:54 2000 WATANABE Hirofumi + + * configure.in (daylight): avoid GCC optimization. + +Mon Jun 12 19:02:27 2000 WATANABE Hirofumi + + * configure.in: cygwin has strange timezone. + + * time.c (time_zone): use tzname and daylight. + Sat Jun 10 23:10:32 2000 Yukihiro Matsumoto * io.c (rb_io_seek): whence is optional, default is SEEK_SET. diff --git a/configure.in b/configure.in index 242ce7f172..353bddbf61 100644 --- a/configure.in +++ b/configure.in @@ -157,7 +157,7 @@ openstep*) ;; rhapsody*) ;; human*) ac_cv_func_getpgrp_void=yes;; beos*) ;; -cygwin*) ;; +cygwin*) rb_cv_have_daylight=no;; mingw*) LIBS="-lwsock32 -lmsvcrt $LIBS" ac_cv_header_a_out_h=no ac_cv_header_pwd_h=no @@ -211,7 +211,7 @@ AC_CHECK_FUNCS(fmod killpg drand48 random wait4 waitpid syscall getcwd\ AC_STRUCT_TIMEZONE AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight, [AC_TRY_LINK([], - [extern int daylight; int i = daylight;], + [extern int daylight; daylight++;], rb_cv_have_daylight=yes, rb_cv_have_daylight=no)]) if test "$rb_cv_have_daylight" = yes; then diff --git a/time.c b/time.c index c26ec02e4e..c47413525c 100644 --- a/time.c +++ b/time.c @@ -272,6 +272,11 @@ static VALUE time_gmtime _((VALUE)); static VALUE time_localtime _((VALUE)); static VALUE time_get_tm _((VALUE, int)); +#if defined(HAVE_DAYLIGHT) && !defined __MINGW32__ +extern int daylight; +extern long timezone; +#endif + static time_t make_time_t(tptr, utc_or_local) struct tm *tptr; @@ -313,9 +318,6 @@ make_time_t(tptr, utc_or_local) if (!utc_or_local) { /* localtime zone adjust */ #if defined(HAVE_DAYLIGHT) - extern int daylight; - extern long timezone; - localtime(&guess); guess += timezone + daylight; #else @@ -807,8 +809,8 @@ time_zone(time) time_get_tm(time, tobj->gmt); } -#ifdef HAVE_TZNAME - return rb_str_new2(tobj->tm.tm_zone); +#if defined HAVE_TZNAME && defined HAVE_DAYLIGHT + return rb_str_new2(tzname[daylight && tobj->tm.tm_isdst]); #else len = strftime(buf, 64, "%Z", &tobj->tm); return rb_str_new(buf, len);