--- a/src/foreign/zstr/strict_fstream.hpp
|
|
+++ b/src/foreign/zstr/strict_fstream.hpp
|
|
@@ -33,17 +33,17 @@ static std::string strerror()
|
|
{
|
|
buff = "Unknown error";
|
|
}
|
|
-#elif __APPLE__ || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE)
|
|
+#elif defined(__GLIBC__)
|
|
+// GNU-specific strerror_r()
|
|
+ auto p = strerror_r(errno, &buff[0], buff.size());
|
|
+ std::string tmp(p, std::strlen(p));
|
|
+ std::swap(buff, tmp);
|
|
+#else
|
|
// XSI-compliant strerror_r()
|
|
if (strerror_r(errno, &buff[0], buff.size()) != 0)
|
|
{
|
|
buff = "Unknown error";
|
|
}
|
|
-#else
|
|
-// GNU-specific strerror_r()
|
|
- auto p = strerror_r(errno, &buff[0], buff.size());
|
|
- std::string tmp(p, std::strlen(p));
|
|
- std::swap(buff, tmp);
|
|
#endif
|
|
buff.resize(buff.find('\0'));
|
|
return buff;
|