From 52d862c4e8af60a31f0067e1070b8625e805cdc3 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 21 Jan 2016 23:37:32 +0100 Subject: [PATCH] Fix use of strerror_r() Don't try keep track of all platforms which follows posix standard. Instead, make the platform which don't follow standard to an exception and fall back to standard implementation for everything else. This fixes building with musl libc. Fixes #94 --- asio/include/asio/impl/error_code.ipp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/asio/include/asio/impl/error_code.ipp b/asio/include/asio/impl/error_code.ipp index b996773..3a1cff1 100644 --- a/include/asio/impl/error_code.ipp +++ b/include/asio/impl/error_code.ipp @@ -98,17 +98,14 @@ public: #if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__) using namespace std; return strerror(value); -#elif defined(__MACH__) && defined(__APPLE__) \ - || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \ - || defined(_AIX) || defined(__hpux) || defined(__osf__) \ - || defined(__ANDROID__) +#elif defined(__GLIBC__) && defined(_GNU_SOURCE) + char buf[256] = ""; + return strerror_r(value, buf, sizeof(buf)); +#else char buf[256] = ""; using namespace std; strerror_r(value, buf, sizeof(buf)); return buf; -#else - char buf[256] = ""; - return strerror_r(value, buf, sizeof(buf)); #endif #endif // defined(ASIO_WINDOWS_DESKTOP) || defined(__CYGWIN__) }