summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--configure.in22
-rw-r--r--strftime.c10
3 files changed, 23 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index c494125600..c85a376996 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Aug 21 01:58:59 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * configure.in: always check timezone().
+
+ * strftime.c (rb_strftime): prefer timezone/altzone rather than
+ gettimeofday(). The second argument to gettimeofday() is ignored
+ on Solaris.
+
Thu Aug 21 02:03:08 2008 Tanaka Akira <akr@fsij.org>
* io.c (open_key_args): simplified.
diff --git a/configure.in b/configure.in
index 0cdc09e214..c05289e140 100644
--- a/configure.in
+++ b/configure.in
@@ -886,18 +886,16 @@ if test "[$rb_cv_var_]$1" != no; then
fi])
RUBY_CHECK_VARTYPE(timezone, [@%:@include <time.h>], [long int])
RUBY_CHECK_VARTYPE(altzone, [@%:@include <time.h>], [long int])
-if test "$rb_cv_var_timezone" = no; then
- AC_CHECK_FUNCS(timezone)
- if test "$ac_cv_func_timezone" = yes; then
- AC_CACHE_CHECK([whether timezone requires zero arguments], rb_cv_func_timezone_void,
- [AC_TRY_COMPILE([@%:@include <time.h>],
- [(void)timezone(0, 0);],
- [rb_cv_func_timezone_void=no],
- [rb_cv_func_timezone_void=yes])]
- )
- if test $rb_cv_func_timezone_void = yes; then
- AC_DEFINE(TIMEZONE_VOID)
- fi
+AC_CHECK_FUNCS(timezone)
+if test "$ac_cv_func_timezone" = yes; then
+ AC_CACHE_CHECK([whether timezone requires zero arguments], rb_cv_func_timezone_void,
+ [AC_TRY_COMPILE([@%:@include <time.h>],
+ [(void)timezone(0, 0);],
+ [rb_cv_func_timezone_void=no],
+ [rb_cv_func_timezone_void=yes])]
+ )
+ if test $rb_cv_func_timezone_void = yes; then
+ AC_DEFINE(TIMEZONE_VOID)
fi
fi
diff --git a/strftime.c b/strftime.c
index f2cfea69e6..86284191c2 100644
--- a/strftime.c
+++ b/strftime.c
@@ -420,18 +420,18 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept
*/
off = timeptr->tm_gmtoff / 60;
#else /* !HAVE_TM_ZONE */
-#ifdef HAVE_GETTIMEOFDAY
- gettimeofday(&tv, &zone);
- off = -zone.tz_minuteswest;
-#else
#if HAVE_VAR_TIMEZONE
#if HAVE_VAR_ALTZONE
off = -(daylight ? timezone : altzone) / 60;
#else
off = -timezone / 60;
#endif
+#else /* !HAVE_TIMEZONE */
+#ifdef HAVE_GETTIMEOFDAY
+ gettimeofday(&tv, &zone);
+ off = -zone.tz_minuteswest;
#endif
-#endif
+#endif /* !HAVE_TIMEZONE */
#endif /* !HAVE_TM_ZONE */
#endif /* !HAVE_TM_NAME */
if (off < 0) {