Fix: [Network] errno and strerror do not handle network errors on Windows

This commit is contained in:
rubidium42
2021-04-27 10:50:28 +02:00
committed by Charles Pigott
parent a934dfe0be
commit 65c5a64719
7 changed files with 54 additions and 18 deletions

View File

@@ -13,6 +13,7 @@
#include "../../debug.h"
#include "os_abstraction.h"
#include "packet.h"
#include "../../string_func.h"
#include "../../safeguards.h"
@@ -48,6 +49,22 @@ void NetworkCoreShutdown()
#endif
}
#if defined(_WIN32)
/**
* Return the string representation of the given error from the OS's network functions.
* @param error The error number (from \c NetworkGetLastError()).
* @return The error message, potentially an empty string but never \c nullptr.
*/
const char *NetworkGetErrorString(int error)
{
static char buffer[512];
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), NULL) == 0) {
seprintf(buffer, lastof(buffer), "Unknown error %d", error);
}
return buffer;
}
#endif /* defined(_WIN32) */
/**
* Serializes the GRFIdentifier (GRF ID and MD5 checksum) to the packet