summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/GetAddressInfoError.h
blob: 3dbefb426a22e2d464bfcf122637b1b88d84e12f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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
}