Re: [HACKERS] Re: WIN32 errno patch - Mailing list pgsql-patches

From Mikhail Terekhov
Subject Re: [HACKERS] Re: WIN32 errno patch
Date
Msg-id 3B7D67CF.37578368@emc.com
Whole thread Raw
In response to Re: Re: [HACKERS] Re: WIN32 errno patch  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches

Tom Lane wrote:
>
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I will try to apply it within the next 48 hours.
>
> This isn't the right patch to apply, since Mikhail didn't fix the
> strerror problem.  I have some code from Magnus Naeslund that purports
> to handle the strerror issue, and will work it up into a patch real soon
> now.
>
> >> I've implemented the SOCK_ERRNO macro only because
> >> both strerror and FormatMessage functions know nothing
> >> about sockets errors.
>
> FWIW, Magnus says this works:
>
> #define SOCK_STRERROR my_sock_strerror
>
> const char* my_sock_strerror(unsigned long eno){
>     static char buf[512]; // i know, not threadsafe
>     if (!FormatMessage(
>             FORMAT_MESSAGE_FROM_SYSTEM |
>             FORMAT_MESSAGE_IGNORE_INSERTS,
>             0,eno,
>             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
>             buf,sizeof(buf)-1,
>             0
>            )){
>       sprintf(buf,"Unknown socket error(%u)",eno);
>     }
>     buf[sizeof(buf)-1]='\0';
>     return buf;
> }
>
> Anyone have any objections to it?
>

On my system (NT4 sp.6, VC6.0) the FormatMessage function always
returns 0 for errno in the [10000 - 10100] range (winsock errors).
That's why i've wrote that this function knows nothing about
sockets errors. Using this function looks very impressive but the
net result is null. If Magnus could get some meaningfull messages
for winsock errors from FormatMessage I'd be glad to know what is
missing from my setup.

Regards,
Mikhail Terekhov

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Re: [JDBC] JDBC pg_description update needed for CVS tip
Next
From: Barry Lind
Date:
Subject: Re: encoding names