From 5537dbbf40a52b7c7448b64f0d619c6bdb9d7d20 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 28 Mar 2003 00:36:12 +0000 Subject: [PATCH] Replaced WINE_CHECK_STRUCT_MEMBER autoconf macro by the standard AC_CHECK_MEMBERS. Added check for si_fd in siginfo_t. --- aclocal.m4 | 10 - configure | 582 ++++++++++++++++++++++++++++++-------- configure.ac | 50 +--- dlls/netapi32/netapi32.c | 4 +- dlls/rpcrt4/rpcrt4_main.c | 4 +- dlls/winsock/socket.c | 4 +- files/drive.c | 4 +- include/config.h.in | 33 ++- include/wine/port.h | 2 +- scheduler/client.c | 22 +- server/request.c | 20 +- server/signal.c | 2 + 12 files changed, 523 insertions(+), 214 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 95c6c319139..2b434a047b5 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -50,16 +50,6 @@ then AC_DEFINE_UNQUOTED(AS_TR_CPP(SONAME_LIB$1),"$ac_cv_lib_soname_$1", [Define to the soname of the lib$1 library.])dnl fi]) -dnl **** Check if a structure contains a specified member **** -dnl -dnl Usage: WINE_CHECK_STRUCT_MEMBER(struct,member,[includes,[action-if-found,[action-if-not-found]]]) -dnl -AC_DEFUN([WINE_CHECK_STRUCT_MEMBER], -[AC_CACHE_CHECK([for $2 in struct $1], ac_cv_c_$1_$2, - AC_TRY_COMPILE([$3],[struct $1 s; s.$2 = 0],ac_cv_c_$1_$2="yes",ac_cv_c_$1_$2="no")) -AS_IF([ test "x$ac_cv_c_$1_$2" = "xyes"],[$4],[$5]) -]) - dnl **** Check for reentrant libc **** dnl dnl Usage: WINE_CHECK_ERRNO(errno-name,[action-if-yes,[action-if-no]]) diff --git a/configure b/configure index 462352b64ef..93e4fd5b70f 100755 --- a/configure +++ b/configure @@ -15324,9 +15324,9 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for f_bfree in struct statfs" >&5 -echo $ECHO_N "checking for f_bfree in struct statfs... $ECHO_C" >&6 -if test "${ac_cv_c_statfs_f_bfree+set}" = set; then +echo "$as_me:$LINENO: checking for struct statfs.f_bfree" >&5 +echo $ECHO_N "checking for struct statfs.f_bfree... $ECHO_C" >&6 +if test "${ac_cv_member_struct_statfs_f_bfree+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15351,10 +15351,13 @@ cat >>conftest.$ac_ext <<_ACEOF # endif # endif #endif + int main () { -struct statfs s; s.f_bfree = 0 +static struct statfs ac_aggr; +if (ac_aggr.f_bfree) +return 0; ; return 0; } @@ -15371,30 +15374,80 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_statfs_f_bfree="yes" + ac_cv_member_struct_statfs_f_bfree=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_statfs_f_bfree="no" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_PARAM_H +# include +#endif +#ifdef STATFS_DEFINED_BY_SYS_MOUNT +# include +#else +# ifdef STATFS_DEFINED_BY_SYS_VFS +# include +# else +# ifdef STATFS_DEFINED_BY_SYS_STATFS +# include +# endif +# endif +#endif + +int +main () +{ +static struct statfs ac_aggr; +if (sizeof ac_aggr.f_bfree) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_statfs_f_bfree=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_statfs_f_bfree=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_statfs_f_bfree" >&5 -echo "${ECHO_T}$ac_cv_c_statfs_f_bfree" >&6 -if test "x$ac_cv_c_statfs_f_bfree" = "xyes"; then +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_bfree" >&5 +echo "${ECHO_T}$ac_cv_member_struct_statfs_f_bfree" >&6 +if test $ac_cv_member_struct_statfs_f_bfree = yes; then -cat >>confdefs.h <<\_ACEOF -#define STATFS_HAS_BFREE 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATFS_F_BFREE 1 _ACEOF + fi - - - -echo "$as_me:$LINENO: checking for f_bavail in struct statfs" >&5 -echo $ECHO_N "checking for f_bavail in struct statfs... $ECHO_C" >&6 -if test "${ac_cv_c_statfs_f_bavail+set}" = set; then +echo "$as_me:$LINENO: checking for struct statfs.f_bavail" >&5 +echo $ECHO_N "checking for struct statfs.f_bavail... $ECHO_C" >&6 +if test "${ac_cv_member_struct_statfs_f_bavail+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15419,10 +15472,13 @@ cat >>conftest.$ac_ext <<_ACEOF # endif # endif #endif + int main () { -struct statfs s; s.f_bavail = 0 +static struct statfs ac_aggr; +if (ac_aggr.f_bavail) +return 0; ; return 0; } @@ -15439,33 +15495,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_statfs_f_bavail="yes" + ac_cv_member_struct_statfs_f_bavail=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_statfs_f_bavail="no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_statfs_f_bavail" >&5 -echo "${ECHO_T}$ac_cv_c_statfs_f_bavail" >&6 -if test "x$ac_cv_c_statfs_f_bavail" = "xyes"; then - -cat >>confdefs.h <<\_ACEOF -#define STATFS_HAS_BAVAIL 1 -_ACEOF - -fi - - - -echo "$as_me:$LINENO: checking for msg_accrights in struct msghdr" >&5 -echo $ECHO_N "checking for msg_accrights in struct msghdr... $ECHO_C" >&6 -if test "${ac_cv_c_msghdr_msg_accrights+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF @@ -15473,13 +15508,27 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#ifdef HAVE_SYS_SOCKET_H -# include +#ifdef HAVE_SYS_PARAM_H +# include #endif +#ifdef STATFS_DEFINED_BY_SYS_MOUNT +# include +#else +# ifdef STATFS_DEFINED_BY_SYS_VFS +# include +# else +# ifdef STATFS_DEFINED_BY_SYS_STATFS +# include +# endif +# endif +#endif + int main () { -struct msghdr s; s.msg_accrights = 0 +static struct statfs ac_aggr; +if (sizeof ac_aggr.f_bavail) +return 0; ; return 0; } @@ -15496,87 +15545,32 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_msghdr_msg_accrights="yes" + ac_cv_member_struct_statfs_f_bavail=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_msghdr_msg_accrights="no" +ac_cv_member_struct_statfs_f_bavail=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_msghdr_msg_accrights" >&5 -echo "${ECHO_T}$ac_cv_c_msghdr_msg_accrights" >&6 -if test "x$ac_cv_c_msghdr_msg_accrights" = "xyes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MSGHDR_ACCRIGHTS 1 -_ACEOF - -fi - - - -echo "$as_me:$LINENO: checking for sa_len in struct sockaddr" >&5 -echo $ECHO_N "checking for sa_len in struct sockaddr... $ECHO_C" >&6 -if test "${ac_cv_c_sockaddr_sa_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -int -main () -{ -struct sockaddr s; s.sa_len = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_sockaddr_sa_len="yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_sockaddr_sa_len="no" -fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_sockaddr_sa_len" >&5 -echo "${ECHO_T}$ac_cv_c_sockaddr_sa_len" >&6 -if test "x$ac_cv_c_sockaddr_sa_len" = "xyes"; then +echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_bavail" >&5 +echo "${ECHO_T}$ac_cv_member_struct_statfs_f_bavail" >&6 +if test $ac_cv_member_struct_statfs_f_bavail = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_SA_LEN 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATFS_F_BAVAIL 1 _ACEOF + fi - -echo "$as_me:$LINENO: checking for sun_len in struct sockaddr_un" >&5 -echo $ECHO_N "checking for sun_len in struct sockaddr_un... $ECHO_C" >&6 -if test "${ac_cv_c_sockaddr_un_sun_len+set}" = set; then +echo "$as_me:$LINENO: checking for struct msghdr.msg_accrights" >&5 +echo $ECHO_N "checking for struct msghdr.msg_accrights... $ECHO_C" >&6 +if test "${ac_cv_member_struct_msghdr_msg_accrights+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -15593,10 +15587,13 @@ cat >>conftest.$ac_ext <<_ACEOF #ifdef HAVE_SYS_UN_H # include #endif + int main () { -struct sockaddr_un s; s.sun_len = 0 +static struct msghdr ac_aggr; +if (ac_aggr.msg_accrights) +return 0; ; return 0; } @@ -15613,26 +15610,375 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_c_sockaddr_un_sun_len="yes" + ac_cv_member_struct_msghdr_msg_accrights=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_sockaddr_un_sun_len="no" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_SYS_UN_H +# include +#endif + +int +main () +{ +static struct msghdr ac_aggr; +if (sizeof ac_aggr.msg_accrights) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_msghdr_msg_accrights=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_msghdr_msg_accrights=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_c_sockaddr_un_sun_len" >&5 -echo "${ECHO_T}$ac_cv_c_sockaddr_un_sun_len" >&6 -if test "x$ac_cv_c_sockaddr_un_sun_len" = "xyes"; then +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_msghdr_msg_accrights" >&5 +echo "${ECHO_T}$ac_cv_member_struct_msghdr_msg_accrights" >&6 +if test $ac_cv_member_struct_msghdr_msg_accrights = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_SOCKADDR_SUN_LEN 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS 1 _ACEOF + +fi +echo "$as_me:$LINENO: checking for struct sockaddr.sa_len" >&5 +echo $ECHO_N "checking for struct sockaddr.sa_len... $ECHO_C" >&6 +if test "${ac_cv_member_struct_sockaddr_sa_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_SYS_UN_H +# include +#endif + +int +main () +{ +static struct sockaddr ac_aggr; +if (ac_aggr.sa_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_sa_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_SYS_UN_H +# include +#endif + +int +main () +{ +static struct sockaddr ac_aggr; +if (sizeof ac_aggr.sa_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_sa_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_sockaddr_sa_len=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_sa_len" >&5 +echo "${ECHO_T}$ac_cv_member_struct_sockaddr_sa_len" >&6 +if test $ac_cv_member_struct_sockaddr_sa_len = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_SA_LEN 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for struct sockaddr_un.sun_len" >&5 +echo $ECHO_N "checking for struct sockaddr_un.sun_len... $ECHO_C" >&6 +if test "${ac_cv_member_struct_sockaddr_un_sun_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_SYS_UN_H +# include +#endif + +int +main () +{ +static struct sockaddr_un ac_aggr; +if (ac_aggr.sun_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_un_sun_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_SYS_UN_H +# include +#endif + +int +main () +{ +static struct sockaddr_un ac_aggr; +if (sizeof ac_aggr.sun_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_un_sun_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_sockaddr_un_sun_len=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_un_sun_len" >&5 +echo "${ECHO_T}$ac_cv_member_struct_sockaddr_un_sun_len" >&6 +if test $ac_cv_member_struct_sockaddr_un_sun_len = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1 +_ACEOF + + fi +echo "$as_me:$LINENO: checking for siginfo_t.si_fd" >&5 +echo $ECHO_N "checking for siginfo_t.si_fd... $ECHO_C" >&6 +if test "${ac_cv_member_siginfo_t_si_fd+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static siginfo_t ac_aggr; +if (ac_aggr.si_fd) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_siginfo_t_si_fd=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static siginfo_t ac_aggr; +if (sizeof ac_aggr.si_fd) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_siginfo_t_si_fd=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_siginfo_t_si_fd=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_siginfo_t_si_fd" >&5 +echo "${ECHO_T}$ac_cv_member_siginfo_t_si_fd" >&6 +if test $ac_cv_member_siginfo_t_si_fd = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_SIGINFO_T_SI_FD 1 +_ACEOF + + +fi + case $host_cpu in diff --git a/configure.ac b/configure.ac index df4659d273f..4b84e352a48 100644 --- a/configure.ac +++ b/configure.ac @@ -1294,7 +1294,8 @@ fi dnl **** FIXME: what about mixed cases, where we need two of them? *** -WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree, +dnl Check for statfs members +AC_CHECK_MEMBERS([struct statfs.f_bfree, struct statfs.f_bavail],,, [#include #ifdef HAVE_SYS_PARAM_H # include @@ -1309,53 +1310,20 @@ WINE_CHECK_STRUCT_MEMBER(statfs,f_bfree, # include # endif # endif -#endif], - [AC_DEFINE(STATFS_HAS_BFREE, 1, [Define if the struct statfs has the member bfree])]) +#endif]) -WINE_CHECK_STRUCT_MEMBER(statfs,f_bavail, -[#include -#ifdef HAVE_SYS_PARAM_H -# include -#endif -#ifdef STATFS_DEFINED_BY_SYS_MOUNT -# include -#else -# ifdef STATFS_DEFINED_BY_SYS_VFS -# include -# else -# ifdef STATFS_DEFINED_BY_SYS_STATFS -# include -# endif -# endif -#endif], - [AC_DEFINE(STATFS_HAS_BAVAIL, 1, [Define if the struct statfs has the member bavail])]) - -dnl Check for file descriptor passing with msg_accrights -WINE_CHECK_STRUCT_MEMBER(msghdr,msg_accrights, -[#include -#ifdef HAVE_SYS_SOCKET_H -# include -#endif], - [AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])]) - -dnl Check for the sa_len member in struct sockaddr -WINE_CHECK_STRUCT_MEMBER(sockaddr,sa_len, -[#include -#ifdef HAVE_SYS_SOCKET_H -# include -#endif], - [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])]) - -dnl Check for the sun_len member in struct sockaddr_un -WINE_CHECK_STRUCT_MEMBER(sockaddr_un,sun_len, +dnl Check for socket structure members +AC_CHECK_MEMBERS([struct msghdr.msg_accrights, struct sockaddr.sa_len, struct sockaddr_un.sun_len],,, [#include #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_UN_H # include -#endif], - [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])]) +#endif]) + +dnl Check for siginfo_t members +AC_CHECK_MEMBERS([siginfo_t.si_fd],,,[#include ]) dnl *** check for the need to define platform-specific symbols diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c index 8a379b4d79e..7a6f0a887ad 100644 --- a/dlls/netapi32/netapi32.c +++ b/dlls/netapi32/netapi32.c @@ -52,7 +52,7 @@ # include #endif -#ifdef HAVE_SOCKADDR_SA_LEN +#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN # ifndef max # define max(a,b) ((a) > (b) ? (a) : (b)) # endif @@ -60,7 +60,7 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len) # else # define ifreq_size(i) sizeof(struct ifreq) -# endif /* defined(HAVE_SOCKADDR_SA_LEN) */ +# endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */ WINE_DEFAULT_DEBUG_CHANNEL(netbios); diff --git a/dlls/rpcrt4/rpcrt4_main.c b/dlls/rpcrt4/rpcrt4_main.c index bf38e67eab7..b3c3b637f22 100644 --- a/dlls/rpcrt4/rpcrt4_main.c +++ b/dlls/rpcrt4/rpcrt4_main.c @@ -338,7 +338,7 @@ RPC_STATUS WINAPI UuidCreate(UUID *Uuid) * However, under earlier systems, sa_len isn't present, so * the size is just sizeof(struct ifreq) */ -#ifdef HAVE_SOCKADDR_SA_LEN +#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN # ifndef max # define max(a,b) ((a) > (b) ? (a) : (b)) # endif @@ -346,7 +346,7 @@ RPC_STATUS WINAPI UuidCreate(UUID *Uuid) sizeof((i).ifr_name)+(i).ifr_addr.sa_len) # else # define ifreq_size(i) sizeof(struct ifreq) -# endif /* defined(HAVE_SOCKADDR_SA_LEN) */ +# endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */ sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if (sd < 0) { diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c index 3c2178bbad2..cea6c570b66 100644 --- a/dlls/winsock/socket.c +++ b/dlls/winsock/socket.c @@ -1150,7 +1150,7 @@ static int WS2_recv ( int fd, struct iovec* iov, int count, hdr.msg_iov = iov; hdr.msg_iovlen = count; -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS hdr.msg_accrights = NULL; hdr.msg_accrightslen = 0; #else @@ -1259,7 +1259,7 @@ static int WS2_send ( int fd, struct iovec* iov, int count, hdr.msg_iov = iov; hdr.msg_iovlen = count; -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS hdr.msg_accrights = NULL; hdr.msg_accrightslen = 0; #else diff --git a/files/drive.c b/files/drive.c index 5d9dbf6d4b1..203dd1879f5 100644 --- a/files/drive.c +++ b/files/drive.c @@ -1314,10 +1314,10 @@ static int DRIVE_GetFreeSpace( int drive, PULARGE_INTEGER size, } size->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bsize, info.f_blocks ); -#ifdef STATFS_HAS_BAVAIL +#ifdef HAVE_STRUCT_STATFS_F_BAVAIL available->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bavail, info.f_bsize ); #else -# ifdef STATFS_HAS_BFREE +# ifdef HAVE_STRUCT_STATFS_F_BFREE available->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bfree, info.f_bsize ); # else # error "statfs has no bfree/bavail member!" diff --git a/include/config.h.in b/include/config.h.in index c60f018dc2c..aae9d7b4db6 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -320,9 +320,6 @@ /* Define to 1 if the system has the type `mode_t'. */ #undef HAVE_MODE_T -/* Define if struct msghdr contains msg_accrights */ -#undef HAVE_MSGHDR_ACCRIGHTS - /* Define if you have NAS including devel headers */ #undef HAVE_NAS @@ -431,18 +428,15 @@ /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK +/* Define to 1 if `si_fd' is member of `siginfo_t'. */ +#undef HAVE_SIGINFO_T_SI_FD + /* Define to 1 if the system has the type `size_t'. */ #undef HAVE_SIZE_T /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF -/* Define if struct sockaddr contains sa_len */ -#undef HAVE_SOCKADDR_SA_LEN - -/* Define if struct sockaddr_un contains sun_len */ -#undef HAVE_SOCKADDR_SUN_LEN - /* Define to 1 if you have the header file. */ #undef HAVE_SOCKET_H @@ -476,6 +470,21 @@ /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP +/* Define to 1 if `msg_accrights' is member of `struct msghdr'. */ +#undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS + +/* Define to 1 if `sa_len' is member of `struct sockaddr'. */ +#undef HAVE_STRUCT_SOCKADDR_SA_LEN + +/* Define to 1 if `sun_len' is member of `struct sockaddr_un'. */ +#undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + +/* Define to 1 if `f_bavail' is member of `struct statfs'. */ +#undef HAVE_STRUCT_STATFS_F_BAVAIL + +/* Define to 1 if `f_bfree' is member of `struct statfs'. */ +#undef HAVE_STRUCT_STATFS_F_BFREE + /* Define to 1 if you have the header file. */ #undef HAVE_SYSCALL_H @@ -751,12 +760,6 @@ /* Define if the struct statfs is defined by */ #undef STATFS_DEFINED_BY_SYS_VFS -/* Define if the struct statfs has the member bavail */ -#undef STATFS_HAS_BAVAIL - -/* Define if the struct statfs has the member bfree */ -#undef STATFS_HAS_BFREE - /* Define to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN diff --git a/include/wine/port.h b/include/wine/port.h index 10207b1f4ca..97bdabbce15 100644 --- a/include/wine/port.h +++ b/include/wine/port.h @@ -63,7 +63,7 @@ typedef int ssize_t; #ifndef HAVE_STATFS # ifdef __BEOS__ -# define STATFS_HAS_BFREE +# define HAVE_STRUCT_STATFS_F_BFREE struct statfs { long f_bsize; /* block_size */ long f_blocks; /* total_blocks */ diff --git a/scheduler/client.c b/scheduler/client.c index 0304c6fc236..2b1b36ef0f6 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -64,7 +64,7 @@ #define SOCKETNAME "socket" /* name of the socket file */ #define LOCKNAME "lock" /* name of the lock file */ -#ifndef HAVE_MSGHDR_ACCRIGHTS +#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS /* data structure used to pass an fd with sendmsg/recvmsg */ struct cmsg_fd { @@ -73,7 +73,7 @@ struct cmsg_fd int type; /* SCM_RIGHTS */ int fd; /* fd to pass */ }; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ static DWORD boot_thread_id; static sigset_t block_set; /* signals to block during server calls */ @@ -238,7 +238,7 @@ unsigned int wine_server_call( void *req_ptr ) */ void wine_server_send_fd( int fd ) { -#ifndef HAVE_MSGHDR_ACCRIGHTS +#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS struct cmsg_fd cmsg; #endif struct send_fd data; @@ -254,10 +254,10 @@ void wine_server_send_fd( int fd ) msghdr.msg_iov = &vec; msghdr.msg_iovlen = 1; -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS msghdr.msg_accrights = (void *)&fd; msghdr.msg_accrightslen = sizeof(fd); -#else /* HAVE_MSGHDR_ACCRIGHTS */ +#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ cmsg.len = sizeof(cmsg); cmsg.level = SOL_SOCKET; cmsg.type = SCM_RIGHTS; @@ -265,7 +265,7 @@ void wine_server_send_fd( int fd ) msghdr.msg_control = &cmsg; msghdr.msg_controllen = sizeof(cmsg); msghdr.msg_flags = 0; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ data.tid = GetCurrentThreadId(); data.fd = fd; @@ -291,13 +291,13 @@ static int receive_fd( obj_handle_t *handle ) struct iovec vec; int ret, fd; -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS struct msghdr msghdr; fd = -1; msghdr.msg_accrights = (void *)&fd; msghdr.msg_accrightslen = sizeof(fd); -#else /* HAVE_MSGHDR_ACCRIGHTS */ +#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ struct msghdr msghdr; struct cmsg_fd cmsg; @@ -308,7 +308,7 @@ static int receive_fd( obj_handle_t *handle ) msghdr.msg_control = &cmsg; msghdr.msg_controllen = sizeof(cmsg); msghdr.msg_flags = 0; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ msghdr.msg_name = NULL; msghdr.msg_namelen = 0; @@ -321,7 +321,7 @@ static int receive_fd( obj_handle_t *handle ) { if ((ret = recvmsg( fd_socket, &msghdr, 0 )) > 0) { -#ifndef HAVE_MSGHDR_ACCRIGHTS +#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS fd = cmsg.fd; #endif if (fd == -1) server_protocol_error( "no fd received for handle %d\n", *handle ); @@ -586,7 +586,7 @@ static int server_connect( const char *oldcwd, const char *serverdir ) addr.sun_family = AF_UNIX; strcpy( addr.sun_path, SOCKETNAME ); slen = sizeof(addr) - sizeof(addr.sun_path) + strlen(addr.sun_path) + 1; -#ifdef HAVE_SOCKADDR_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN addr.sun_len = slen; #endif if ((s = socket( AF_UNIX, SOCK_STREAM, 0 )) == -1) fatal_perror( "socket" ); diff --git a/server/request.c b/server/request.c index d598486f442..4d31295f3bc 100644 --- a/server/request.c +++ b/server/request.c @@ -113,7 +113,7 @@ static struct master_socket *master_socket; /* the master socket object */ /* socket communication static structures */ static struct iovec myiovec; static struct msghdr msghdr; -#ifndef HAVE_MSGHDR_ACCRIGHTS +#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS struct cmsg_fd { int len; /* sizeof structure */ @@ -122,7 +122,7 @@ struct cmsg_fd int fd; /* fd to pass */ }; static struct cmsg_fd cmsg = { sizeof(cmsg), SOL_SOCKET, SCM_RIGHTS, -1 }; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ /* complain about a protocol error and terminate the client connection */ void fatal_protocol_error( struct thread *thread, const char *err, ... ) @@ -335,20 +335,20 @@ int receive_fd( struct process *process ) struct send_fd data; int fd, ret; -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS msghdr.msg_accrightslen = sizeof(int); msghdr.msg_accrights = (void *)&fd; -#else /* HAVE_MSGHDR_ACCRIGHTS */ +#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ msghdr.msg_control = &cmsg; msghdr.msg_controllen = sizeof(cmsg); cmsg.fd = -1; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ myiovec.iov_base = (void *)&data; myiovec.iov_len = sizeof(data); ret = recvmsg( get_unix_fd( process->msg_fd ), &msghdr, 0 ); -#ifndef HAVE_MSGHDR_ACCRIGHTS +#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS fd = cmsg.fd; #endif @@ -405,14 +405,14 @@ int send_client_fd( struct process *process, int fd, obj_handle_t handle ) fprintf( stderr, "%04x: *fd* %p -> %d\n", current ? current->id : process->id, handle, fd ); -#ifdef HAVE_MSGHDR_ACCRIGHTS +#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS msghdr.msg_accrightslen = sizeof(fd); msghdr.msg_accrights = (void *)&fd; -#else /* HAVE_MSGHDR_ACCRIGHTS */ +#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ msghdr.msg_control = &cmsg; msghdr.msg_controllen = sizeof(cmsg); cmsg.fd = fd; -#endif /* HAVE_MSGHDR_ACCRIGHTS */ +#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */ myiovec.iov_base = (void *)&handle; myiovec.iov_len = sizeof(handle); @@ -678,7 +678,7 @@ static void acquire_lock(void) addr.sun_family = AF_UNIX; strcpy( addr.sun_path, server_socket_name ); slen = sizeof(addr) - sizeof(addr.sun_path) + strlen(addr.sun_path) + 1; -#ifdef HAVE_SOCKADDR_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN addr.sun_len = slen; #endif if (bind( fd, (struct sockaddr *)&addr, slen ) == -1) diff --git a/server/signal.c b/server/signal.c index 952063f0009..66b4347f1b0 100644 --- a/server/signal.c +++ b/server/signal.c @@ -198,7 +198,9 @@ static void do_sigchld() static void do_sigio( int signum, siginfo_t *si, void *x ) { do_signal( handler_sigio ); +#ifdef HAVE_SIGINFO_T_SI_FD do_change_notify( si->si_fd ); +#endif } void init_signals(void)