|
|
|
|
@ -6,7 +6,7 @@ |
|
|
|
|
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group |
|
|
|
|
* |
|
|
|
|
* IDENTIFICATION |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.1 2004/04/12 16:19:18 momjian Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.2 2004/04/22 03:50:54 momjian Exp $ |
|
|
|
|
* |
|
|
|
|
*------------------------------------------------------------------------- |
|
|
|
|
*/ |
|
|
|
|
@ -432,3 +432,35 @@ int pgwin32_select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfd |
|
|
|
|
return nummatches; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Return win32 error string, since strerror can't |
|
|
|
|
* handle winsock codes
|
|
|
|
|
*/ |
|
|
|
|
static char wserrbuf[256]; |
|
|
|
|
const char * |
|
|
|
|
pgwin32_socket_strerror(int err) |
|
|
|
|
{ |
|
|
|
|
static HANDLE handleDLL = INVALID_HANDLE_VALUE; |
|
|
|
|
|
|
|
|
|
if (handleDLL == INVALID_HANDLE_VALUE) { |
|
|
|
|
handleDLL = LoadLibraryEx("netmsg.dll", NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); |
|
|
|
|
if (handleDLL == NULL) |
|
|
|
|
ereport(FATAL, |
|
|
|
|
(errmsg_internal("Failed to load netmsg.dll: %i",(int)GetLastError()))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ZeroMemory(&wserrbuf, sizeof(wserrbuf)); |
|
|
|
|
if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE, |
|
|
|
|
handleDLL, |
|
|
|
|
err, |
|
|
|
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
|
|
|
|
wserrbuf, |
|
|
|
|
sizeof(wserrbuf)-1, |
|
|
|
|
NULL) == 0) { |
|
|
|
|
/* Failed to get id */ |
|
|
|
|
sprintf(wserrbuf,"Unknown winsock error %i",err); |
|
|
|
|
} |
|
|
|
|
return wserrbuf; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|