No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gmake / w32 / subproc / w32err.c
blobafe7668f37062e0f1edb395eee3e7b280a163240
1 #include <windows.h>
2 #include "w32err.h"
4 /*
5 * Description: the windows32 version of perror()
7 * Returns: a pointer to a static error
9 * Notes/Dependencies: I got this from
10 * comp.os.ms-windows.programmer.win32
12 char *
13 map_windows32_error_to_string (DWORD ercode) {
14 /* __declspec (thread) necessary if you will use multiple threads */
15 __declspec (thread) static char szMessageBuffer[128];
17 /* Fill message buffer with a default message in
18 * case FormatMessage fails
20 wsprintf (szMessageBuffer, "Error %ld", ercode);
23 * Special code for winsock error handling.
25 if (ercode > WSABASEERR) {
26 HMODULE hModule = GetModuleHandle("wsock32");
27 if (hModule != NULL) {
28 FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
29 hModule,
30 ercode,
31 LANG_NEUTRAL,
32 szMessageBuffer,
33 sizeof(szMessageBuffer),
34 NULL);
35 FreeLibrary(hModule);
37 } else {
39 * Default system message handling
41 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
42 NULL,
43 ercode,
44 LANG_NEUTRAL,
45 szMessageBuffer,
46 sizeof(szMessageBuffer),
47 NULL);
49 return szMessageBuffer;