summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--configure.in5
-rw-r--r--include/ruby/missing.h2
-rw-r--r--include/ruby/ruby.h2
4 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 5edf7459e4a..7a08141caf9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Jul 26 11:51:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: define BROKEN_CLOSE on FreeBSD.
+ This fixes build failure on MSVC. [ruby-core:31481]
+
+ * include/ruby/ruby.h, include/ruby/missing.h:
+ use BROKEN_CLOSE for replacing close(2).
+
Mon Jul 26 09:51:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm.c (rb_thread_mark): mark only self of normal iseqs, not
diff --git a/configure.in b/configure.in
index ebc62821ac6..fd6a094ceac 100644
--- a/configure.in
+++ b/configure.in
@@ -1155,7 +1155,10 @@ main()
rb_cv_broken_glibc_ia64_erfc=no)])
AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no])
-AS_CASE(["$target_os"],[freebsd],[],[AC_REPLACE_FUNCS(close)])
+AS_CASE(["$target_os"],[freebsd],[],[
+ AC_DEFINE(BROKEN_CLOSE)
+ AC_REPLACE_FUNCS(close)
+ ])
AC_REPLACE_FUNCS(dup2 memmove strerror\
strchr strstr crypt flock\
isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \
diff --git a/include/ruby/missing.h b/include/ruby/missing.h
index 327e0a847da..8e4ffae72af 100644
--- a/include/ruby/missing.h
+++ b/include/ruby/missing.h
@@ -175,7 +175,7 @@ RUBY_EXTERN int signbit(double x);
RUBY_EXTERN int ffs(int);
#endif
-#ifndef HAVE_CLOSE
+#ifdef BROKEN_CLOSE
#include <sys/types.h>
#include <sys/socket.h>
RUBY_EXTERN int ruby_getpeername(int, struct sockaddr *, socklen_t *);
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index c01d617ba38..11e3bb819a3 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -1440,7 +1440,7 @@ int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
#define snprintf ruby_snprintf
#define vsnprintf ruby_vsnprintf
-#ifdef __FreeBSD__
+#ifdef BROKEN_CLOSE
#undef getpeername
#define getpeername ruby_getpeername
#undef getsockname