From 21b0a052af22a355321cce13abd573dbcf90dd4a Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 23 Jul 2015 13:57:18 +0200 Subject: [PATCH 2/3] Remove use of sysctl.h --- src/common.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common.cc b/src/common.cc index 126f30a..116cd06 100644 --- a/src/common.cc +++ b/src/common.cc @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include -- 2.4.6 From 3d67ed4920d31e5b17dd61684713d061d4fd7598 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 23 Jul 2015 13:58:02 +0200 Subject: [PATCH 3/3] Use portable version of strerror_r --- src/c++wrap.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/c++wrap.cc b/src/c++wrap.cc index c21b473..213f9c4 100644 --- a/src/c++wrap.cc +++ b/src/c++wrap.cc @@ -26,8 +26,14 @@ #include "c++wrap.hh" #include + +/* force use of POSIX strerror_r instead of non-portable GNU specific */ +#ifdef _GNU_SOURCE +#undef _GNU_SOURCE +#endif #include + #if !defined(HAVE_PIPE2) || !defined(HAVE_O_CLOEXEC) #include @@ -62,8 +68,10 @@ namespace { std::string strerror_r(int errnum) { - char buf[100]; - return strerror_r(errnum, buf, sizeof buf); + static thread_local char buf[100]; + if (strerror_r(errnum, buf, sizeof buf) != 0) + snprintf(buf, sizeof buf, "Unknown error %i", errnum); + return buf; } std::pair pipe2(int flags) -- 2.4.6