On Wed, 3 Sep 2003 18:20:56 +0200, you wrote:
Changelog:
- Set appropriate error code for gethostbyname and WSAAsyncGetHostByName
- Restore NULL name/aq->host_name to NULL at the end of each function respectively
Stephan
aq->host_name = buf; if( gethostname( buf, 100) == -1) {
fail = WSAENOBUFS; /* appropriate ? */
fail = (errno == EINVAL) ? WSAEFAULT : wsaErrno();
Explanation why I arrived at WSAENOBUFS as appropriate value..
(Remember it is used as the error value for the windows code calling gethostbyname(), not gethostname();)
- glibc documentation as I read it indicates that in this case the only way gethostname() may fail is an insufficient bufferlength. Clearly invalid name pointer or negative length do not apply.
- WSAEFAULT means (by Microsoft): "The system detected an invalid pointer address in attempting to use a pointer argument in a call" At the vary least this will confuse somebody that does gethostbyname(NULL), thinking it is the null pointer that is causing this error. This is the one error code that I did not want to return, that is why I cannot use the wsaErrno functions.
But perhaps you have found another cause where gethostname() will fail?
- if (name==buf) name=NULL; return retval;
name is an argument, passed by value. Destroyed as the function returns. No need to restore.
Rein.