diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-09-03 14:56:26 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-09-03 14:56:26 +0000 |
commit | 3e0819c66a0908be61fbb769e96c1accb1d67f26 (patch) | |
tree | ca00bbfe494e3fa838bef3e23c6572da75977dae | |
parent | 90a10297d685b12e691ddf0c04439d19f8592feb (diff) |
* configure.in (sizeof_struct_dirent_too_small): check if struct
dirent.d_name is too small.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | configure.in | 41 |
2 files changed, 36 insertions, 10 deletions
@@ -1,4 +1,7 @@ -Sat Sep 3 23:55:17 2011 Nobuyoshi Nakada <[email protected]> +Sat Sep 3 23:56:24 2011 Nobuyoshi Nakada <[email protected]> + + * configure.in (sizeof_struct_dirent_too_small): check if struct + dirent.d_name is too small. * configure.in (RUBY_MINGW32): take tool prefix from CC. diff --git a/configure.in b/configure.in index 616837d6ec..14165a3c18 100644 --- a/configure.in +++ b/configure.in @@ -933,15 +933,6 @@ dnl Checks for libraries. AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no]) AS_CASE(["$target_os"], -[solaris*], [ - AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) - LIBS="-lm $LIBS" - ], -# GNU Hurd -[gnu*], [ - AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) - LIBS="-lm $LIBS" - ], [nextstep*], [ ], [openstep*], [ ], [rhapsody*], [ ], @@ -1734,6 +1725,38 @@ fi RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>]) +AC_CACHE_CHECK([whether struct dirent.d_name is too small], rb_cv_sizeof_struct_dirent_too_small, + [AC_COMPILE_IFELSE( + [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([ +@%:@if defined _WIN32 +@%:@ error <<<struct direct in win32/dir.h has variable length d_name>>> +@%:@elif defined HAVE_DIRENT_H +@%:@ include <dirent.h> +@%:@elif defined HAVE_DIRECT_H +@%:@ include <direct.h> +@%:@else +@%:@ define dirent direct +@%:@ if HAVE_SYS_NDIR_H +@%:@ include <sys/ndir.h> +@%:@ endif +@%:@ if HAVE_SYS_DIR_H +@%:@ include <sys/dir.h> +@%:@ endif +@%:@ if HAVE_NDIR_H +@%:@ include <ndir.h> +@%:@ endif +@%:@endif +@%:@include <stddef.h> +@%:@define numberof(array) [(int)(sizeof(array) / sizeof((array)[0]))] +struct dirent d; +])], + [offsetof(struct dirent, [d_name[numberof(d.d_name)]]) - offsetof(struct dirent, d_name) < 256])], + [rb_cv_sizeof_struct_dirent_too_small=yes], + [rb_cv_sizeof_struct_dirent_too_small=no])]) +if test "$rb_cv_sizeof_struct_dirent_too_small" = yes; then + AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1) +fi + if test "$ac_cv_func_sysconf" = yes; then AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1), |