From c459d509b7c7fe7d8200ea3791d1ef0b245126ab Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 5 Mar 2017 09:29:37 +0000 Subject: [PATCH] build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNAL Instead of the WIN32-specific workaround, detect lack of `MSG_DONTWAIT` in the build system. This allows other platforms without `MSG_DONTWAIT` to work too. --- configure.ac | 9 +++++++++ src/compat.h | 9 ++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index d25bebeb1..65f7fa073 100644 --- a/configure.ac +++ b/configure.ac @@ -558,6 +558,15 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [ AC_MSG_RESULT(no)] ) +dnl Check for MSG_DONTWAIT +AC_MSG_CHECKING(for MSG_DONTWAIT) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[ int f = MSG_DONTWAIT; ]])], + [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DONTWAIT, 1,[Define this symbol if you have MSG_DONTWAIT]) ], + [ AC_MSG_RESULT(no)] +) + + AC_MSG_CHECKING([for visibility attribute]) AC_LINK_IFELSE([AC_LANG_SOURCE([ int foo_def( void ) __attribute__((visibility("default"))); diff --git a/src/compat.h b/src/compat.h index 28aa77eea..6f4d4e65f 100644 --- a/src/compat.h +++ b/src/compat.h @@ -47,9 +47,7 @@ #include #endif -#ifdef WIN32 -#define MSG_DONTWAIT 0 -#else +#ifndef WIN32 typedef u_int SOCKET; #include "errno.h" #define WSAGetLastError() errno @@ -79,6 +77,11 @@ typedef u_int SOCKET; #define MSG_NOSIGNAL 0 #endif +// MSG_DONTWAIT is not available on some platforms, if it doesn't exist define it as 0 +#if !defined(HAVE_MSG_DONTWAIT) && !defined(MSG_DONTWAIT) +#define MSG_DONTWAIT 0 +#endif + #if HAVE_DECL_STRNLEN == 0 size_t strnlen( const char *start, size_t max_len); #endif // HAVE_DECL_STRNLEN