Обсуждение: Re: REPOST: InitDB Failure on install
> > "Magnus Hagander" <mha@sollentuna.net> writes: > > > >> /* Unable to get shared memory */ > >>+ errno = GetLastError(); > > > > > > Aren't you going to need a mapping function to convert > Windows error > > codes to errno numbers? Don't tell me Microsoft was smart > enough to > > make them the same ;-) > > How about the idea to set errno to a special value after all > non-posix calls, which makes ereport examine/preserve > GetLastError() instead? We could do this, but that means we need to hack the whole error stack handlign etc to save the value of GetLastError() as well as errno. But yeah, we could do that. Not sure if we need to do it after all calls though - probably enough to do it only after the ones where there is actually a ereport() call with %m nearby (or when we're emulating a unix function such as in shmget()). Tom - which method do you think is best to go with? //Magnus
"Magnus Hagander" <mha@sollentuna.net> writes: > Tom - which method do you think is best to go with? I dislike propagating #ifdef WIN32's into sections of the code that are currently free of them. So I'd vote for the map-to-errno approach. It's a judgment call though ... regards, tom lane
Andreas Pflug <pgadmin@pse-consulting.de> writes: > I understand your disliking of non-posix stuff. OTOH, GetLastError will > give much more details than errno. How much more, really? That mapping table gave me the impression that the win32 error codes aren't all that much more detailed than errno... regards, tom lane
Tom Lane wrote: > "Magnus Hagander" <mha@sollentuna.net> writes: > >>Tom - which method do you think is best to go with? > > > I dislike propagating #ifdef WIN32's into sections of the code that are > currently free of them. So I'd vote for the map-to-errno approach. > It's a judgment call though ... I understand your disliking of non-posix stuff. OTOH, GetLastError will give much more details than errno. Regards, Andreas