X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54d5abee4136a86925d75ee3b3020b82785a97dd..7c2f14eeb84c08651a96050ff1f05d195fe3db7f:/src/unix/gsocket.cpp diff --git a/src/unix/gsocket.cpp b/src/unix/gsocket.cpp index 488b28e62b..7864aa59f3 100644 --- a/src/unix/gsocket.cpp +++ b/src/unix/gsocket.cpp @@ -117,14 +117,12 @@ int _System soclose(int); # endif #endif -#else - /* undefine for OSX - its really an int */ -# ifdef __DARWIN__ -# undef SOCKLEN_T -# define SOCKLEN_T int -# endif #endif /* SOCKLEN_T */ +#ifndef SOCKOPTLEN_T +#define SOCKOPTLEN_T SOCKLEN_T +#endif + /* * MSW defines this, Unices don't. */ @@ -254,6 +252,7 @@ GSocket::GSocket() m_stream = true; m_gui_dependent = NULL; m_non_blocking = false; + m_reusable = false; m_timeout = 10*60*1000; /* 10 minutes * 60 sec * 1000 millisec */ m_establishing = false; @@ -477,11 +476,7 @@ GSocketError GSocket::SetServer() m_error = GSOCK_IOERR; return GSOCK_IOERR; } -#if defined(__EMX__) || defined(__VISAGECPP__) - ioctl(m_fd, FIONBIO, (char*)&arg, sizeof(arg)); -#else ioctl(m_fd, FIONBIO, &arg); -#endif gs_gui_functions->Enable_Events(this); /* allow a socket to re-bind if the socket is in the TIME_WAIT @@ -701,9 +696,9 @@ GSocketError GSocket::Connect(GSocketStream stream) else { int error; - SOCKLEN_T len = sizeof(error); + SOCKOPTLEN_T len = sizeof(error); - getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*) &error, &len); + getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*) &error, &len); if (!error) return GSOCK_NOERROR; @@ -923,7 +918,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) /* Do not use a static struct, Linux can garble it */ tv.tv_sec = m_timeout / 1000; - tv.tv_usec = (m_timeout % 1000) / 1000; + tv.tv_usec = (m_timeout % 1000) * 1000; FD_ZERO(&readfds); FD_ZERO(&writefds); @@ -986,11 +981,11 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) if (m_establishing && !m_server) { int error; - SOCKLEN_T len = sizeof(error); + SOCKOPTLEN_T len = sizeof(error); m_establishing = false; - getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len); + getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len); if (error) { @@ -1141,7 +1136,7 @@ void GSocket::UnsetCallback(GSocketEventFlags flags) GSocketError GSocket::GetSockOpt(int level, int optname, void *optval, int *optlen) { - if (getsockopt(m_fd, level, optname, optval, (SOCKLEN_T*)optlen) == 0) + if (getsockopt(m_fd, level, optname, (char*)optval, (SOCKOPTLEN_T*)optlen) == 0) { return GSOCK_NOERROR; } @@ -1151,7 +1146,7 @@ GSocketError GSocket::GetSockOpt(int level, int optname, GSocketError GSocket::SetSockOpt(int level, int optname, const void *optval, int optlen) { - if (setsockopt(m_fd, level, optname, optval, optlen) == 0) + if (setsockopt(m_fd, level, optname, (const char*)optval, optlen) == 0) { return GSOCK_NOERROR; } @@ -1408,11 +1403,11 @@ void GSocket::Detected_Write() if (m_establishing && !m_server) { int error; - SOCKLEN_T len = sizeof(error); + SOCKOPTLEN_T len = sizeof(error); m_establishing = false; - getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len); + getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len); if (error) { @@ -1708,7 +1703,11 @@ GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port, return GSOCK_INVPORT; } +#if defined(__WXPM__) && defined(__EMX__) + se = getservbyname(port, (char*)protocol); +#else se = getservbyname(port, protocol); +#endif if (!se) { /* the cast to int suppresses compiler warnings about subscript having the