From bd82f4cf5d16f70111bf49840a3eb52b3456bac1 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Sat, 7 Jun 2008 20:27:52 +0000 Subject: merge revision(s) 14222:14225: * configure.in (RUBY_CHECK_VARTYPE): check if a variable is defined and its type. * configure.in (timezone, altzone): check for recent cygwin. * missing/strftime.c (strftime): fix for timezone. [ruby-dev:32536] * lib/mkmf.rb (try_var): should fail for functions. * ext/readline/extconf.rb: should use have_func for functions instead of have_var. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@16988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 14 +++++++++++++ configure.in | 30 ++++++++++++++++++++++++-- ext/readline/extconf.rb | 7 +++---- lib/mkmf.rb | 2 +- missing/strftime.c | 56 +++++++++++++++++++++++-------------------------- version.h | 2 +- 6 files changed, 73 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ae27b30fd..3a7aa08cfe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Sun Jun 8 05:24:19 2008 Nobuyoshi Nakada + + * configure.in (RUBY_CHECK_VARTYPE): check if a variable is defined + and its type. + + * configure.in (timezone, altzone): check for recent cygwin. + + * missing/strftime.c (strftime): fix for timezone. [ruby-dev:32536] + + * lib/mkmf.rb (try_var): should fail for functions. + + * ext/readline/extconf.rb: should use have_func for functions instead + of have_var. + Sun Jun 8 05:08:35 2008 Nobuyoshi Nakada * lib/cgi.rb (read_multipart): exclude blanks from header values. diff --git a/configure.in b/configure.in index fafd398eb7..c4f86267b1 100644 --- a/configure.in +++ b/configure.in @@ -544,7 +544,8 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync getcwd eaccess\ lchown lchmod getpgrp setpgrp getpgid setpgid initgroups\ getgroups setgroups getpriority getrlimit setrlimit sysconf\ group_member dlopen sigprocmask\ - sigaction _setjmp setsid telldir seekdir fchmod mktime timegm\ + sigaction _setjmp setsid telldir seekdir fchmod\ + mktime timegm gettimeofday\ cosh sinh tanh round setuid setgid setenv unsetenv) AC_ARG_ENABLE(setreuid, [ --enable-setreuid use setreuid()/setregid() according to need even if obsolete.], @@ -571,6 +572,31 @@ AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight, if test "$rb_cv_have_daylight" = yes; then AC_DEFINE(HAVE_DAYLIGHT) fi +AC_DEFUN([RUBY_CHECK_VARTYPE], [dnl +AC_CACHE_CHECK([for external $1], rb_cv_var_$1, + [rb_cv_var_$1=no + AC_TRY_COMPILE([#define _XOPEN_SOURCE 1 + $2 + const volatile void *volatile t;], + [t = &(&$1)[0];], + [for t in $3; do + AC_TRY_COMPILE([#define _XOPEN_SOURCE 1 + $2 + extern $t $1; + const volatile void *volatile t;], + [t = &(&$1)[0];], + [rb_cv_var_$1=$t; break]) + done])]) +if test "[$rb_cv_var_]$1" != no; then + AC_DEFINE([HAVE_VAR_]m4_toupper($1)) + AC_DEFINE_UNQUOTED([TYPEOF_VAR_]m4_toupper($1), $rb_cv_var_$1) +fi]) +RUBY_CHECK_VARTYPE(timezone, [#include ], [long int]) +RUBY_CHECK_VARTYPE(altzone, [#include ], [long int]) +if test "$rb_cv_var_timezone" = no; then + AC_CHECK_FUNCS(timezone) +fi + AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t, [AC_TRY_RUN([ #include @@ -1203,7 +1229,7 @@ case "$target_os" in human*) AC_CHECK_LIB(signal, _harderr) AC_CHECK_LIB(hmem, hmemset) - AC_CHECK_FUNCS(select gettimeofday) + AC_CHECK_FUNCS(select) AC_CACHE_CHECK(whether PD libc _dtos18 fail to convert big number, rb_cv_missing__dtos18, [AC_TRY_RUN( diff --git a/ext/readline/extconf.rb b/ext/readline/extconf.rb index b57a36f3a5..b820c0b32f 100644 --- a/ext/readline/extconf.rb +++ b/ext/readline/extconf.rb @@ -42,9 +42,9 @@ else end end -have_readline_var("rl_filename_completion_function") -have_readline_var("rl_username_completion_function") -have_readline_var("rl_completion_matches") +have_func("rl_filename_completion_function") +have_func("rl_username_completion_function") +have_func("rl_completion_matches") have_readline_var("rl_deprep_term_function") have_readline_var("rl_completion_append_character") have_readline_var("rl_basic_word_break_characters") @@ -59,7 +59,6 @@ have_func("rl_cleanup_after_signal") have_func("rl_clear_signals") have_func("rl_vi_editing_mode") have_func("rl_emacs_editing_mode") -have_func("rl_clear_signals") have_func("replace_history_entry") have_func("remove_history") create_makefile("readline") diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 3e80cb0240..31f4878b8b 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -438,7 +438,7 @@ def try_var(var, headers = nil, &b) #{headers} /*top*/ int main() { return 0; } -int t() { const volatile void *volatile p; p = (void *)&#{var}; return 0; } +int t() { const volatile void *volatile p; p = &(&#{var})[0]; return 0; } SRC end diff --git a/missing/strftime.c b/missing/strftime.c index 970c6c5349..caa5eb8719 100644 --- a/missing/strftime.c +++ b/missing/strftime.c @@ -115,17 +115,22 @@ extern char *strchr(); #define range(low, item, hi) max(low, min(item, hi)) +#ifdef __CYGWIN__ +#define DLL_IMPORT __declspec(dllimport) +#endif +#ifdef __WIN32__ +#define DLL_IMPORT __declspec(dllimport) +#endif #if !defined(OS2) && !defined(MSDOS) && defined(HAVE_TZNAME) -extern char *tzname[2]; -extern int daylight; -#ifdef SOLARIS -extern long timezone, altzone; -#else -#ifdef __hpux -extern long timezone; -#else -extern int timezone, altzone; +extern DLL_IMPORT char *tzname[2]; +#ifdef HAVE_DAYLIGHT +extern DLL_IMPORT int daylight; +#endif +#ifdef HAVE_VAR_TIMEZONE +extern DLL_IMPORT TYPEOF_VAR_TIMEZONE timezone; #endif +#ifdef HAVE_VAR_ALTZONE +extern DLL_IMPORT TYPEOF_VAR_ALTZONE altzone; #endif #endif @@ -189,16 +194,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) #endif /* POSIX_SEMANTICS */ #ifndef HAVE_TM_ZONE #ifndef HAVE_TM_NAME -#ifndef HAVE_TZNAME - extern char *timezone(); struct timeval tv; struct timezone zone; -#else -#ifdef __hpux - struct timeval tv; - struct timezone zone; -#endif -#endif /* HAVE_TZNAME */ #endif /* HAVE_TM_NAME */ #endif /* HAVE_TM_ZONE */ @@ -422,21 +419,18 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) */ off = timeptr->tm_gmtoff / 60; #else /* !HAVE_TM_ZONE */ -#if HAVE_TZNAME - /* - * Systems with tzname[] probably have timezone as - * secs west of GMT. Convert to mins east of GMT. - */ -#ifdef __hpux +#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 +#endif #endif -#else /* !HAVE_TZNAME */ - gettimeofday(&tv, &zone); - off = -zone.tz_minuteswest; -#endif /* !HAVE_TZNAME */ #endif /* !HAVE_TM_ZONE */ #endif /* !HAVE_TM_NAME */ if (off < 0) { @@ -460,13 +454,15 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) #ifdef HAVE_TM_NAME strcpy(tbuf, timeptr->tm_name); #else +#ifdef HAVE_TIMEZONE gettimeofday(& tv, & zone); -#ifdef __CYGWIN__ +#ifdef TIMEZONE_VOID strcpy(tbuf, timezone()); #else strcpy(tbuf, timezone(zone.tz_minuteswest, timeptr->tm_isdst > 0)); -#endif +#endif /* TIMEZONE_VOID */ +#endif /* HAVE_TIMEZONE */ #endif /* HAVE_TM_NAME */ #endif /* HAVE_TM_ZONE */ #endif /* HAVE_TZNAME */ @@ -645,7 +641,7 @@ iso8601wknum(const struct tm *timeptr) * main body of the standard. Thus it requires week 53. */ - int weeknum, jan1day, diff; + int weeknum, jan1day; /* get week number, Monday as first day of the week */ weeknum = weeknumber(timeptr, 1); diff --git a/version.h b/version.h index 70d7236ca2..ced1a5f9cd 100644 --- a/version.h +++ b/version.h @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2008-06-08" #define RUBY_VERSION_CODE 186 #define RUBY_RELEASE_CODE 20080608 -#define RUBY_PATCHLEVEL 158 +#define RUBY_PATCHLEVEL 159 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 -- cgit v1.2.3