You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
816 B

  1. --- a/src/foreign/zstr/strict_fstream.hpp
  2. +++ b/src/foreign/zstr/strict_fstream.hpp
  3. @@ -33,17 +33,17 @@ static std::string strerror()
  4. {
  5. buff = "Unknown error";
  6. }
  7. -#elif __APPLE__ || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE)
  8. +#elif defined(__GLIBC__)
  9. +// GNU-specific strerror_r()
  10. + auto p = strerror_r(errno, &buff[0], buff.size());
  11. + std::string tmp(p, std::strlen(p));
  12. + std::swap(buff, tmp);
  13. +#else
  14. // XSI-compliant strerror_r()
  15. if (strerror_r(errno, &buff[0], buff.size()) != 0)
  16. {
  17. buff = "Unknown error";
  18. }
  19. -#else
  20. -// GNU-specific strerror_r()
  21. - auto p = strerror_r(errno, &buff[0], buff.size());
  22. - std::string tmp(p, std::strlen(p));
  23. - std::swap(buff, tmp);
  24. #endif
  25. buff.resize(buff.find('\0'));
  26. return buff;