This commit is contained in:
gabime 2016-07-15 17:55:34 +03:00
parent c5c6baad74
commit 8e0892fa31
5 changed files with 32 additions and 28 deletions

View File

@ -100,17 +100,21 @@ enum class async_overflow_policy
//
// Log exception
//
namespace details { namespace os {
std::string errno_str(int err_num);
}}
namespace details
{
namespace os
{
std::string errno_str(int err_num);
}
}
class spdlog_ex : public std::exception
{
public:
spdlog_ex(const std::string& msg) :_msg(msg) {}
spdlog_ex(const std::string& msg, int last_errno)
{
_msg = msg + ": " + details::os::errno_str(last_errno);
}
spdlog_ex(const std::string& msg, int last_errno)
{
_msg = msg + ": " + details::os::errno_str(last_errno);
}
const char* what() const SPDLOG_NOEXCEPT override
{
return _msg.c_str();

View File

@ -255,23 +255,23 @@ inline std::string filename_to_str(const filename_t& filename)
// Return errno string (thread safe)
inline std::string errno_str(int err_num)
{
char buf[256];
constexpr auto buf_size = sizeof(buf);
char buf[256];
constexpr auto buf_size = sizeof(buf);
#ifdef _WIN32
if(strerror_s(buf, buf_size, err_num) == 0)
return std::string(buf);
else
return "Unkown error";
if(strerror_s(buf, buf_size, err_num) == 0)
return std::string(buf);
else
return "Unkown error";
#elif (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE // posix version
if (strerror_r(err_num, buf, buf_size) == 0)
return std::string(buf);
else
return "Unkown error";
if (strerror_r(err_num, buf, buf_size) == 0)
return std::string(buf);
else
return "Unkown error";
#else // gnu version (might not use the given buf, so its retval pointer must be used)
return std::string(strerror_r(err_num, buf, buf_size));
return std::string(strerror_r(err_num, buf, buf_size));
#endif
}