diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-08-24 17:01:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-24 17:01:07 +0200 |
| commit | a7d358a97b27fef5da54fb5f107198d588731ede (patch) | |
| tree | a420d808e2bc6908f63831970def62380b2e829b /Source/Core/Common/Network.cpp | |
| parent | f18d787d4a735af5847aeedf325f1e717c72f22a (diff) | |
| parent | 597fb9ff6dd8ab4500141186f0ebebd2aaea92f0 (diff) | |
Merge pull request #11003 from sepalani/decode-error
Move SocketManager's DecodeError to Common
Diffstat (limited to 'Source/Core/Common/Network.cpp')
| -rw-r--r-- | Source/Core/Common/Network.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index 2d532690c1..a112fb9a99 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -9,6 +9,7 @@ #ifndef _WIN32 #include <netinet/in.h> +#include <string.h> #include <sys/socket.h> #include <sys/types.h> #else @@ -545,4 +546,24 @@ void RestoreNetworkErrorState(const NetworkErrorState& state) WSASetLastError(state.wsa_error); #endif } + +const char* DecodeNetworkError(s32 error_code) +{ + thread_local char buffer[1024]; +#define IS_BSD_STRERROR \ + defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(ANDROID) || \ + defined(__APPLE__) +#ifdef _WIN32 + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, + sizeof(buffer), nullptr); + return buffer; +#elif (IS_BSD_STRERROR) || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) + strerror_r(error_code, buffer, sizeof(buffer)); + return buffer; +#else + return strerror_r(error_code, buffer, sizeof(buffer)); +#endif +} } // namespace Common |
