Compile errors in libgcj while building cross-compiler for MinGW

Ranjit Mathew rmathew@hotmail.com
Thu Dec 26 21:21:00 GMT 2002


Ranjit Mathew wrote:
> and w32api-2.0. I'm posting this to find out how Adam and the
> other MinGW hackers, if any, have got around these issues and are
> able to build a cross-compiler.

Am I the only one left here who plays with the mingw32 target?
Adam, where art thou?
:-(

> Second, java/net/natPlainDatagramSockImpl.cc uses the ECONNREFUSED
> errno code to check for refused connection. However, on Windows, not 
> only is
> this not defined, according to WinSock2 APIs the last error code can be
> retrieved using WSAGetLastError( ) and not checking for errno - then again
> it is WSAECONNREFUSED and not ECONNREFUSED.

More details on what I point out above can be found here:
http://msdn.microsoft.com/library/en-us/winsock/winsock/error_codes_errno_h_errno_and_wsagetlasterror_2.asp
http://msdn.microsoft.com/library/en-us/winsock/winsock/windows_sockets_error_codes_2.asp
The Windows Sockets functions sendto(), recv(), etc. return
SOCKET_ERROR if they fail, which (fortunately) is defined as "-1",
the same as that for BSD Sockets.
However, to check for the actual error code, you're supposed to
invoke WSAGetLastError( ) and not errno, and then again the
error constants are WSAECONNREFUSED, WSAENOTSOCK, etc. and
not ECONNREFUSED, ENOTSOCK, etc.
What I propose is the following:
1. We define an errno alias for networking code, say "sockerrno"
 and use it consistently in networking code that uses the Sockets
 API.
2. "posix.h" merely says "#define sockerrno errno"
3. "win32.h" says "#define sockerrno WSAGetLastError( )"
4. "win32.h" additionally says "#define ECONNREFUSED WSAECONNREFUSED",
 etc.
NOTE: This makes "sockerrno" an rvalue (a non-lvalue), because
to set it, on Windows you must call WSASetLastError( ).
How does this look? The existing code would be impacted minimally,
I feel, by this change.
If it looks all right, I can post a patch for the same.
Lastly, I guess this should have gone to the Classpath list as
well, especially Michael Koch, but I didn't copy it to
that list as I think there's a lot of overlapping subscriptions
between the lists. If you think I'm wrong, I'll also forward
it to at least Michael.
Sincerely Yours,
Ranjit.
-- 
Ranjit Mathew Email: rmathew AT hotmail DOT com
Bangalore, INDIA. Web: http://ranjitmathew.tripod.com/


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /