| From 30159aea4b3f6421da9d74a8bf22aad6d3bf26b4 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks> |
| Date: Mon, 4 Apr 2016 20:48:43 +0200 |
| Subject: [PATCH] GNU version of strerror_r not available on musl |
| |
| The GNU version of glibc' `strerror_r` is non-portable. |
| |
| When the POSIX and GNU API collides musl always provides the POSIX API. That |
| being the case for `strerror_r` musl does only support the POSIX version, |
| despite of `_GNU_SOURCE`. |
| |
| [Upstream commit: https://github.com/pocoproject/poco/commit/30159aea4b3f6421da9d74a8bf22aad6d3bf26b4] |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| --- |
| Foundation/src/Error.cpp | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/Foundation/src/Error.cpp b/Foundation/src/Error.cpp |
| index 6a8afb705f..00991fc0be 100644 |
| --- a/Foundation/src/Error.cpp |
| +++ b/Foundation/src/Error.cpp |
| @@ -69,7 +69,10 @@ namespace Poco { |
| without -D_GNU_SOURCE is needed, otherwise the GNU version is |
| preferred. |
| */ |
| -#if defined _GNU_SOURCE && !POCO_ANDROID |
| + /* The GNU version of strerror_r is non-portable and not |
| + available on the musl C library. |
| + */ |
| +#if (defined __GLIBC__ || defined __UCLIBC__) && defined _GNU_SOURCE && !POCO_ANDROID |
| char errmsg[256] = ""; |
| return std::string(strerror_r(errorCode, errmsg, 256)); |
| #elif (_XOPEN_SOURCE >= 600) || POCO_ANDROID |