Skip to content

Commit

Permalink
* configure.in (sizeof_struct_dirent_too_small): check if struct
Browse files Browse the repository at this point in the history
  dirent.d_name is too small.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Sep 3, 2011
1 parent 90a1029 commit 3e0819c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
5 changes: 4 additions & 1 deletion ChangeLog
@@ -1,4 +1,7 @@
Sat Sep 3 23:55:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
Sat Sep 3 23:56:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>

* 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.

Expand Down
41 changes: 32 additions & 9 deletions configure.in
Expand Up @@ -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*], [ ],
Expand Down Expand Up @@ -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),
Expand Down

0 comments on commit 3e0819c

Please sign in to comment.