From 60c8f3f5154b6204eebf9092ce0eb70dcee48f2d Mon Sep 17 00:00:00 2001 From: Fred Morcos Date: Fri, 18 Mar 2022 12:47:06 +0100 Subject: [PATCH] strerror_r on MacOS returns int despite _GNU_SOURCE being defined --- configure.ac | 1 + pdns/dnsdistdist/configure.ac | 1 + pdns/misc.cc | 2 +- pdns/recursordist/configure.ac | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index efa0adfa78..2359358f07 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,7 @@ LT_INIT([disable-static dlopen]) PDNS_CHECK_OS PTHREAD_SET_NAME +AC_FUNC_STRERROR_R PDNS_WITH_LUA([mandatory]) PDNS_CHECK_LUA_HPP diff --git a/pdns/dnsdistdist/configure.ac b/pdns/dnsdistdist/configure.ac index b5757f088d..dd04e1042d 100644 --- a/pdns/dnsdistdist/configure.ac +++ b/pdns/dnsdistdist/configure.ac @@ -32,6 +32,7 @@ PTHREAD_SET_NAME PDNS_CHECK_NETWORK_LIBS PDNS_CHECK_PTHREAD_NP PDNS_CHECK_SECURE_MEMSET +AC_FUNC_STRERROR_R BOOST_REQUIRE([1.42]) diff --git a/pdns/misc.cc b/pdns/misc.cc index 90ec60ade3..486511d46e 100644 --- a/pdns/misc.cc +++ b/pdns/misc.cc @@ -205,7 +205,7 @@ auto pdns::getMessageFromErrno(const int errnum) -> std::string errMsgData.resize(errLen); const char* errMsg = nullptr; -#ifdef _GNU_SOURCE +#ifdef STRERROR_R_CHAR_P errMsg = strerror_r(errnum, errMsgData.data(), errMsgData.length()); #else // This can fail, and when it does, it sets errno. We ignore that and diff --git a/pdns/recursordist/configure.ac b/pdns/recursordist/configure.ac index c8bf30decd..b4fe07ee7e 100644 --- a/pdns/recursordist/configure.ac +++ b/pdns/recursordist/configure.ac @@ -40,6 +40,7 @@ LT_INIT() PDNS_CHECK_OS PDNS_CHECK_NETWORK_LIBS PTHREAD_SET_NAME +AC_FUNC_STRERROR_R PDNS_CHECK_CLOCK_GETTIME @@ -98,7 +99,7 @@ PDNS_ENABLE_DNS_OVER_TLS AS_IF([test "x$enable_dns_over_tls" != "xno"], [ PDNS_WITH_LIBSSL # not runtime selectable at the moment - # PDNS_WITH_GNUTLS + # PDNS_WITH_GNUTLS AS_IF([test "x$HAVE_LIBSSL" != "x1"], [ AC_MSG_ERROR([DNS over TLS support requested but no OpenSSL available]) -- 2.47.2