Commit ee0ef05b authored by Bruce Momjian's avatar Bruce Momjian

Hello, i just reviewed the win32 errno patch and i saw that maybe i didn't

really played it totally safe in my last suggestion, the system table might
pick up the msg but not the netmsg.dll, so better try both.
I also added a hex printout of the "errno" appended to all messages, that's
nicer.

If anyone hate my coding style, or that i'm using goto constructs, just tell
me, and i'll rework it into a nested if () thing.

Magnus Naeslund(f)
parent 6c91eef7
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.54 2001/08/21 20:39:54 momjian Exp $ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.55 2001/09/06 02:52:00 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -855,23 +855,46 @@ libpq_gettext(const char *msgid) ...@@ -855,23 +855,46 @@ libpq_gettext(const char *msgid)
#ifdef WIN32 #ifdef WIN32
/* /*
* strerror replacement for windows: * strerror replacement for windows:
*
* We dont't know a fix for win9x yet, but this whould work for nt4 and win2k.
* If you can verify this working on win9x or have a solution, let us know, ok?
*
*/ */
const char* const char*
winsock_strerror(DWORD eno) winsock_strerror(DWORD eno)
{ {
if (!FormatMessage( #define WSSE_MAXLEN (sizeof(winsock_strerror_buf)-1-12) /* 12 == "(0x00000000)" */
FORMAT_MESSAGE_IGNORE_INSERTS | int length;
FORMAT_MESSAGE_FROM_SYSTEM | /* always consider system table */
((netmsgModule != NULL) ? FORMAT_MESSAGE_FROM_HMODULE : 0), /* First try the "system table", this works on Win2k pro */
netmsgModule, /* module to get message from (NULL == system) */
eno, if (FormatMessage(
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_FROM_SYSTEM,
winsock_strerror_buf,sizeof(winsock_strerror_buf)-1, 0,eno,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
NULL winsock_strerror_buf,WSSE_MAXLEN,NULL
)){ ))
sprintf(winsock_strerror_buf,"Unknown socket error(%u)",eno); goto WSSE_GOODEXIT;
}
winsock_strerror_buf[sizeof(winsock_strerror_buf)-1]='\0'; /* That didn't work, let's try the netmsg.dll */
return winsock_strerror_buf;
if (netmsgModule &&
FormatMessage(
FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_FROM_HMODULE,
0,eno,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
winsock_strerror_buf,WSSE_MAXLEN,NULL
))
goto WSSE_GOODEXIT;
/* Everything failed, just tell the user that we don't know the desc */
strcat(winsock_strerror_buf,"Socket error, no description available.");
WSSE_GOODEXIT:
length = strlen(winsock_strerror_buf);
sprintf(winsock_strerror_buf + length<WSSE_MAXLEN?length:WSSE_MAXLEN,
"(0x%08X)",eno);
return winsock_strerror_buf;
} }
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment