aboutsummaryrefslogtreecommitdiffstats
path: root/unmaintained/asio/fix-strerror_r.patch
blob: f05a519c81183dfbf9a899f4ffd5ca84cb0a715f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From 52d862c4e8af60a31f0067e1070b8625e805cdc3 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
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__)
   }