* 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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
30c5d612c2
commit
a2ccbc14d9
@ -1,3 +1,12 @@
|
|||||||
|
Fri Dec 14 10:01:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* 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]
|
||||||
|
|
||||||
Fri Dec 14 08:17:24 2007 Tanaka Akira <akr@fsij.org>
|
Fri Dec 14 08:17:24 2007 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* eval.c (rb_protect): restore root_jmpbuf even if proc exits by
|
* eval.c (rb_protect): restore root_jmpbuf even if proc exits by
|
||||||
|
28
configure.in
28
configure.in
@ -608,7 +608,7 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot fsync getcwd
|
|||||||
dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
|
dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
|
||||||
setsid telldir seekdir fchmod cosh sinh tanh log2 round\
|
setsid telldir seekdir fchmod cosh sinh tanh log2 round\
|
||||||
setuid setgid daemon select_large_fdset setenv unsetenv\
|
setuid setgid daemon select_large_fdset setenv unsetenv\
|
||||||
mktime timegm clock_gettime)
|
mktime timegm clock_gettime gettimeofday)
|
||||||
AC_ARG_ENABLE(setreuid,
|
AC_ARG_ENABLE(setreuid,
|
||||||
[ --enable-setreuid use setreuid()/setregid() according to need even if obsolete.],
|
[ --enable-setreuid use setreuid()/setregid() according to need even if obsolete.],
|
||||||
[use_setreuid=$enableval])
|
[use_setreuid=$enableval])
|
||||||
@ -634,6 +634,30 @@ AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
|
|||||||
if test "$rb_cv_have_daylight" = yes; then
|
if test "$rb_cv_have_daylight" = yes; then
|
||||||
AC_DEFINE(HAVE_DAYLIGHT)
|
AC_DEFINE(HAVE_DAYLIGHT)
|
||||||
fi
|
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
|
||||||
|
void *t;],
|
||||||
|
[t = &(&$1)[0];],
|
||||||
|
[for t in $3; do
|
||||||
|
AC_TRY_COMPILE([#define _XOPEN_SOURCE 1
|
||||||
|
$2
|
||||||
|
extern $t $1;],
|
||||||
|
[void *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 <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)
|
||||||
|
fi
|
||||||
|
|
||||||
AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
|
AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
|
||||||
[AC_TRY_RUN([
|
[AC_TRY_RUN([
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -1213,7 +1237,7 @@ case "$target_os" in
|
|||||||
human*)
|
human*)
|
||||||
AC_CHECK_LIB(signal, _harderr)
|
AC_CHECK_LIB(signal, _harderr)
|
||||||
AC_CHECK_LIB(hmem, hmemset)
|
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,
|
AC_CACHE_CHECK(whether PD libc _dtos18 fail to convert big number,
|
||||||
rb_cv_missing__dtos18,
|
rb_cv_missing__dtos18,
|
||||||
[AC_TRY_RUN(
|
[AC_TRY_RUN(
|
||||||
|
@ -115,17 +115,22 @@ extern char *strchr();
|
|||||||
|
|
||||||
#define range(low, item, hi) max(low, min(item, hi))
|
#define range(low, item, hi) max(low, min(item, hi))
|
||||||
|
|
||||||
#if !defined(OS2) && !defined(MSDOS) && defined(HAVE_TZNAME)
|
#ifdef __CYGWIN__
|
||||||
extern char *tzname[2];
|
#define DLL_IMPORT __declspec(dllimport)
|
||||||
extern int daylight;
|
|
||||||
#ifdef SOLARIS
|
|
||||||
extern long timezone, altzone;
|
|
||||||
#else
|
|
||||||
#ifdef __hpux
|
|
||||||
extern long timezone;
|
|
||||||
#else
|
|
||||||
extern int timezone, altzone;
|
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __WIN32__
|
||||||
|
#define DLL_IMPORT __declspec(dllimport)
|
||||||
|
#endif
|
||||||
|
#if !defined(OS2) && !defined(MSDOS) && defined(HAVE_TZNAME)
|
||||||
|
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
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -189,16 +194,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
|
|||||||
#endif /* POSIX_SEMANTICS */
|
#endif /* POSIX_SEMANTICS */
|
||||||
#ifndef HAVE_TM_ZONE
|
#ifndef HAVE_TM_ZONE
|
||||||
#ifndef HAVE_TM_NAME
|
#ifndef HAVE_TM_NAME
|
||||||
#ifndef HAVE_TZNAME
|
|
||||||
extern char *timezone();
|
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct timezone zone;
|
struct timezone zone;
|
||||||
#else
|
|
||||||
#ifdef __hpux
|
|
||||||
struct timeval tv;
|
|
||||||
struct timezone zone;
|
|
||||||
#endif
|
|
||||||
#endif /* HAVE_TZNAME */
|
|
||||||
#endif /* HAVE_TM_NAME */
|
#endif /* HAVE_TM_NAME */
|
||||||
#endif /* HAVE_TM_ZONE */
|
#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;
|
off = timeptr->tm_gmtoff / 60;
|
||||||
#else /* !HAVE_TM_ZONE */
|
#else /* !HAVE_TM_ZONE */
|
||||||
#if HAVE_TZNAME
|
#ifdef HAVE_GETTIMEOFDAY
|
||||||
/*
|
|
||||||
* Systems with tzname[] probably have timezone as
|
|
||||||
* secs west of GMT. Convert to mins east of GMT.
|
|
||||||
*/
|
|
||||||
#ifdef __hpux
|
|
||||||
gettimeofday(&tv, &zone);
|
gettimeofday(&tv, &zone);
|
||||||
off = -zone.tz_minuteswest;
|
off = -zone.tz_minuteswest;
|
||||||
#else
|
#else
|
||||||
|
#if HAVE_VAR_TIMEZONE
|
||||||
|
#if HAVE_VAR_ALTZONE
|
||||||
off = -(daylight ? timezone : altzone) / 60;
|
off = -(daylight ? timezone : altzone) / 60;
|
||||||
|
#else
|
||||||
|
off = -timezone / 60;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#else /* !HAVE_TZNAME */
|
|
||||||
gettimeofday(&tv, &zone);
|
|
||||||
off = -zone.tz_minuteswest;
|
|
||||||
#endif /* !HAVE_TZNAME */
|
|
||||||
#endif /* !HAVE_TM_ZONE */
|
#endif /* !HAVE_TM_ZONE */
|
||||||
#endif /* !HAVE_TM_NAME */
|
#endif /* !HAVE_TM_NAME */
|
||||||
if (off < 0) {
|
if (off < 0) {
|
||||||
@ -460,13 +454,15 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
|
|||||||
#ifdef HAVE_TM_NAME
|
#ifdef HAVE_TM_NAME
|
||||||
strcpy(tbuf, timeptr->tm_name);
|
strcpy(tbuf, timeptr->tm_name);
|
||||||
#else
|
#else
|
||||||
|
#ifdef HAVE_TIMEZONE
|
||||||
gettimeofday(& tv, & zone);
|
gettimeofday(& tv, & zone);
|
||||||
#ifdef __CYGWIN__
|
#ifdef TIMEZONE_VOID
|
||||||
strcpy(tbuf, timezone());
|
strcpy(tbuf, timezone());
|
||||||
#else
|
#else
|
||||||
strcpy(tbuf, timezone(zone.tz_minuteswest,
|
strcpy(tbuf, timezone(zone.tz_minuteswest,
|
||||||
timeptr->tm_isdst > 0));
|
timeptr->tm_isdst > 0));
|
||||||
#endif
|
#endif /* TIMEZONE_VOID */
|
||||||
|
#endif /* HAVE_TIMEZONE */
|
||||||
#endif /* HAVE_TM_NAME */
|
#endif /* HAVE_TM_NAME */
|
||||||
#endif /* HAVE_TM_ZONE */
|
#endif /* HAVE_TM_ZONE */
|
||||||
#endif /* HAVE_TZNAME */
|
#endif /* HAVE_TZNAME */
|
||||||
@ -645,7 +641,7 @@ iso8601wknum(const struct tm *timeptr)
|
|||||||
* main body of the standard. Thus it requires week 53.
|
* 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 */
|
/* get week number, Monday as first day of the week */
|
||||||
weeknum = weeknumber(timeptr, 1);
|
weeknum = weeknumber(timeptr, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user