Program Listing for File Utility.cpp
↰ Return to documentation for file (EventLoop/Utility.cpp
)
#include "netio3-backend/EventLoop/Utility.hpp"
#include <array>
#include <cstddef>
#include <cstring>
std::string netio3::utility::error_message(int error)
{
constexpr static auto BUFFER_SIZE = std::size_t{256};
std::array<char, BUFFER_SIZE> buffer{};
if constexpr (requires(int err, char* buf, size_t buflen) {
{
strerror_r(err, buf, buflen)
} -> std::convertible_to<char*>;
}) {
// GNU-specific version
char* message = strerror_r(error, buffer.data(), buffer.size());
if (message != nullptr) {
return {message};
}
} else if constexpr (requires(int err, char* buf, size_t buflen) {
{
strerror_r(err, buf, buflen)
} -> std::convertible_to<int>;
}) {
// POSIX-compliant version
if (strerror_r(error, buffer.data(), buffer.size()) == nullptr) {
return {buffer.data()};
}
}
return "Unknown error";
}