diff options
Diffstat (limited to 'src/OSSupport/GetAddressInfoError.h')
-rw-r--r-- | src/OSSupport/GetAddressInfoError.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/OSSupport/GetAddressInfoError.h b/src/OSSupport/GetAddressInfoError.h new file mode 100644 index 000000000..43869fb63 --- /dev/null +++ b/src/OSSupport/GetAddressInfoError.h @@ -0,0 +1,29 @@ +#pragma once + + + +/** Returns the readable form of a getaddressinfo type error code */ +inline AString ErrorString(int a_ErrorCode) +{ + // Note gai_strerror is not threadsafe on windows + #ifdef _WIN32 + char ErrorStr[GAI_STRERROR_BUFFER_SIZE + 1]; + + int MsgLen = FormatMessageA( + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + nullptr, + a_ErrorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + ErrorStr, + sizeof(ErrorStr) - 1, + nullptr + ); + + return AString(ErrorStr, MsgLen); + #else + return gai_strerror(a_ErrorCode); + #endif +} + |