[前][次][番号順一覧][スレッド一覧]

ruby-changes:2732

From: ko1@a...
Date: 14 Dec 2007 11:20:00 +0900
Subject: [ruby-changes:2732] nobu - Ruby:r14223 (ruby_1_8, trunk): * configure.in (RUBY_CHECK_VARTYPE): check if a variable is defined

nobu	2007-12-14 10:01:42 +0900 (Fri, 14 Dec 2007)

  New Revision: 14223

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/configure.in
    branches/ruby_1_8/missing/strftime.c
    branches/ruby_1_8/version.h
    trunk/ChangeLog
    trunk/configure.in
    trunk/missing/strftime.c

  Log:
    * 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]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/missing/strftime.c?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/configure.in?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/missing/strftime.c?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=14223&r2=14222
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/configure.in?r1=14223&r2=14222

Index: configure.in
===================================================================
--- configure.in	(revision 14222)
+++ configure.in	(revision 14223)
@@ -608,7 +608,7 @@
 	      dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
 	      setsid telldir seekdir fchmod cosh sinh tanh log2 round\
 	      setuid setgid daemon select_large_fdset setenv unsetenv\
-              mktime timegm clock_gettime)
+	      mktime timegm clock_gettime gettimeofday)
 AC_ARG_ENABLE(setreuid,
        [  --enable-setreuid       use setreuid()/setregid() according to need even if obsolete.],
        [use_setreuid=$enableval])
@@ -634,6 +634,30 @@
 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
+    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_TRY_RUN([
 #include <time.h>
@@ -1213,7 +1237,7 @@
   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(
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14222)
+++ ChangeLog	(revision 14223)
@@ -1,3 +1,12 @@
+Fri Dec 14 10:01:40 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* 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@f...>
 
 	* eval.c (rb_protect): restore root_jmpbuf even if proc exits by
Index: missing/strftime.c
===================================================================
--- missing/strftime.c	(revision 14222)
+++ missing/strftime.c	(revision 14223)
@@ -115,19 +115,24 @@
 
 #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
 
 #undef min	/* just in case */
 
@@ -189,16 +194,8 @@
 #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 @@
 			 */
 			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
-#else /* !HAVE_TZNAME */
-			gettimeofday(&tv, &zone);
-			off = -zone.tz_minuteswest;
-#endif /* !HAVE_TZNAME */
+#endif
+#endif
 #endif /* !HAVE_TM_ZONE */
 #endif /* !HAVE_TM_NAME */
 			if (off < 0) {
@@ -460,13 +454,15 @@
 #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 @@
 	 * 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);
Index: ruby_1_8/configure.in
===================================================================
--- ruby_1_8/configure.in	(revision 14222)
+++ ruby_1_8/configure.in	(revision 14223)
@@ -544,7 +544,8 @@
 	      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,30 @@
 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
+    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_TRY_RUN([
 #include <time.h>
@@ -1203,7 +1228,7 @@
   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(
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 14222)
+++ ruby_1_8/ChangeLog	(revision 14223)
@@ -1,3 +1,12 @@
+Fri Dec 14 10:01:40 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* 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]
+
 Tue Dec 11 00:04:05 2007  Akinori MUSHA  <knu@i...>
 
 	* array.c (rb_ary_slice_bang): If an invalid negative index (<
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h	(revision 14222)
+++ ruby_1_8/version.h	(revision 14223)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.8.6"
-#define RUBY_RELEASE_DATE "2007-12-11"
+#define RUBY_RELEASE_DATE "2007-12-14"
 #define RUBY_VERSION_CODE 186
-#define RUBY_RELEASE_CODE 20071211
+#define RUBY_RELEASE_CODE 20071214
 #define RUBY_PATCHLEVEL 5000
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 6
 #define RUBY_RELEASE_YEAR 2007
 #define RUBY_RELEASE_MONTH 12
-#define RUBY_RELEASE_DAY 11
+#define RUBY_RELEASE_DAY 14
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8/missing/strftime.c
===================================================================
--- ruby_1_8/missing/strftime.c	(revision 14222)
+++ ruby_1_8/missing/strftime.c	(revision 14223)
@@ -115,19 +115,24 @@
 
 #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
 
 #undef min	/* just in case */
 
@@ -189,16 +194,8 @@
 #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 @@
 			 */
 			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
-#else /* !HAVE_TZNAME */
-			gettimeofday(&tv, &zone);
-			off = -zone.tz_minuteswest;
-#endif /* !HAVE_TZNAME */
+#endif
+#endif
 #endif /* !HAVE_TM_ZONE */
 #endif /* !HAVE_TM_NAME */
 			if (off < 0) {
@@ -460,13 +454,15 @@
 #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 @@
 	 * 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);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]