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`.
This commit is contained in:
Jörg Krause 2016-04-04 20:48:43 +02:00
parent 7b408ede7f
commit 30159aea4b

View File

@ -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