#include "postgres_fe.h"#include "win32.h"
Go to the source code of this file.
Data Structures | |
| struct | WSErrorEntry |
| struct | MessageDLL |
Defines | |
| #define | VC_EXTRALEAN |
| #define | NOGDI |
| #define | NOCRYPT |
| #define | libpq_gettext(x) (x) |
| #define | DLLS_SIZE (sizeof(dlls)/sizeof(struct MessageDLL)) |
Functions | |
| static int | LookupWSErrorMessage (DWORD err, char *dest) |
| const char * | winsock_strerror (int err, char *strerrbuf, size_t buflen) |
Variables | |
| static struct WSErrorEntry | WSErrors [] |
| struct MessageDLL | dlls [] |
| #define DLLS_SIZE (sizeof(dlls)/sizeof(struct MessageDLL)) |
| #define libpq_gettext | ( | x | ) | (x) |
Definition at line 41 of file win32.c.
Referenced by winsock_strerror().
| static int LookupWSErrorMessage | ( | DWORD | err, | |
| char * | dest | |||
| ) | [static] |
Definition at line 220 of file win32.c.
References WSErrorEntry::description, WSErrorEntry::error, and WSErrors.
Referenced by winsock_strerror().
{
struct WSErrorEntry *e;
for (e = WSErrors; e->description; e++)
{
if (e->error == err)
{
strcpy(dest, e->description);
return 1;
}
}
return 0;
}
| const char* winsock_strerror | ( | int | err, | |
| char * | strerrbuf, | |||
| size_t | buflen | |||
| ) |
Definition at line 286 of file win32.c.
References dlls, MessageDLL::handle, i, libpq_gettext, MessageDLL::loaded, and LookupWSErrorMessage().
{
unsigned long flags;
int offs,
i;
int success = LookupWSErrorMessage(err, strerrbuf);
for (i = 0; !success && i < DLLS_SIZE; i++)
{
if (!dlls[i].loaded)
{
dlls[i].loaded = 1; /* Only load once */
dlls[i].handle = (void *) LoadLibraryEx(
dlls[i].dll_name,
0,
LOAD_LIBRARY_AS_DATAFILE);
}
if (dlls[i].dll_name && !dlls[i].handle)
continue; /* Didn't load */
flags = FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_IGNORE_INSERTS
| (dlls[i].handle ? FORMAT_MESSAGE_FROM_HMODULE : 0);
success = 0 != FormatMessage(
flags,
dlls[i].handle, err,
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
strerrbuf, buflen - 64,
0
);
}
if (!success)
sprintf(strerrbuf, libpq_gettext("unrecognized socket error: 0x%08X/%d"), err, err);
else
{
strerrbuf[buflen - 1] = '\0';
offs = strlen(strerrbuf);
if (offs > (int) buflen - 64)
offs = buflen - 64;
sprintf(strerrbuf + offs, " (0x%08X/%d)", err, err);
}
return strerrbuf;
}
| struct MessageDLL dlls[] |
Referenced by winsock_strerror().
struct WSErrorEntry WSErrors[] [static] |
Referenced by LookupWSErrorMessage().
1.7.1