.. _program_listing_file_EventLoop_Utility.cpp: Program Listing for File Utility.cpp ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``EventLoop/Utility.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "netio3-backend/EventLoop/Utility.hpp" #include #include #include std::string netio3::utility::error_message(int error) { constexpr static auto BUFFER_SIZE = std::size_t{256}; std::array buffer{}; if constexpr (requires(int err, char* buf, size_t buflen) { { strerror_r(err, buf, buflen) } -> std::convertible_to; }) { // 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; }) { // POSIX-compliant version if (strerror_r(error, buffer.data(), buffer.size()) == nullptr) { return {buffer.data()}; } } return "Unknown error"; }