diff --git a/ChangeLog b/ChangeLog index 79dc37701..82d5c20ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +20090616 + - (dtucker) [configure.ac defines.h] Bug #1607: handle the case where fsid_t + is a struct with a __val member. Fixes build on, eg, Redhat 6.2. + 20090504 - (dtucker) [sshlogin.c] Move the NO_SSH_LASTLOG #ifndef line to include variable declarations. Should prevent unused warnings anywhere it's set diff --git a/configure.ac b/configure.ac index 835c8fa6d..140c62838 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# $Id: configure.ac,v 1.419 2009/03/18 18:25:02 tim Exp $ +# $Id: configure.ac,v 1.420 2009/06/16 06:11:02 dtucker Exp $ # # Copyright (c) 1999-2004 Damien Miller # @@ -15,7 +15,7 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org) -AC_REVISION($Revision: 1.419 $) +AC_REVISION($Revision: 1.420 $) AC_CONFIG_SRCDIR([ssh.c]) AC_CONFIG_HEADER(config.h) @@ -3080,15 +3080,41 @@ if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then file descriptor passing]) fi -AC_MSG_CHECKING(if f_fsid has val members) +AC_MSG_CHECKING(if struct statvfs.f_fsid is integral type) AC_TRY_COMPILE([ #include +#include +#ifdef HAVE_SYS_TIME_H +# include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_STATVFS_H +#include +#endif +], [struct statvfs s; s.f_fsid = 0;], +[ AC_MSG_RESULT(yes) ], +[ AC_MSG_RESULT(no) + + AC_MSG_CHECKING(if fsid_t has member val) + AC_TRY_COMPILE([ +#include #include ], -[struct fsid_t t; t.val[0] = 0;], + [fsid_t t; t.val[0] = 0;], [ AC_MSG_RESULT(yes) - AC_DEFINE(FSID_HAS_VAL, 1, f_fsid has members) ], - [ AC_MSG_RESULT(no) ] -) + AC_DEFINE(FSID_HAS_VAL, 1, fsid_t has member val) ], + [ AC_MSG_RESULT(no) ]) + + AC_MSG_CHECKING(if f_fsid has member __val) + AC_TRY_COMPILE([ +#include +#include ], + [fsid_t t; t.__val[0] = 0;], + [ AC_MSG_RESULT(yes) + AC_DEFINE(FSID_HAS___VAL, 1, fsid_t has member __val) ], + [ AC_MSG_RESULT(no) ]) +]) AC_CACHE_CHECK([for msg_control field in struct msghdr], ac_cv_have_control_in_msghdr, [ diff --git a/defines.h b/defines.h index 457b6a35e..2ccded266 100644 --- a/defines.h +++ b/defines.h @@ -25,7 +25,7 @@ #ifndef _DEFINES_H #define _DEFINES_H -/* $Id: defines.h,v 1.154 2009/03/07 01:32:22 dtucker Exp $ */ +/* $Id: defines.h,v 1.155 2009/06/16 06:11:02 dtucker Exp $ */ /* Constants */ @@ -594,6 +594,10 @@ struct winsize { #define FSID_TO_ULONG(f) \ ((((u_int64_t)(f).val[0] & 0xffffffffUL) << 32) | \ ((f).val[1] & 0xffffffffUL)) +#elif defined(FSID_HAS___VAL) +#define FSID_TO_ULONG(f) \ + ((((u_int64_t)(f).__val[0] & 0xffffffffUL) << 32) | \ + ((f).__val[1] & 0xffffffffUL)) #else # define FSID_TO_ULONG(f) ((f)) #endif