X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ba2a81d747036d40bb917d09c82b3562de707e99..e5d4ef7410d597bdf6d426ceedc656dbefd69e90:/src/unix/gsocket.cpp diff --git a/src/unix/gsocket.cpp b/src/unix/gsocket.cpp index c9030fbc92..f857c3c176 100644 --- a/src/unix/gsocket.cpp +++ b/src/unix/gsocket.cpp @@ -5,7 +5,7 @@ * Guilhem Lavaux, * Guillermo Rodriguez Garcia * Purpose: GSocket main Unix and OS/2 file - * Licence: The wxWidgets licence + * Licence: The wxWindows licence * CVSID: $Id$ * ------------------------------------------------------------------------- */ @@ -87,6 +87,10 @@ int _System bsdselect(int, int _System soclose(int); # endif #endif +#ifdef __EMX__ +#include +#endif + #include #include #include @@ -113,6 +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 */ /* @@ -164,7 +174,7 @@ int _System soclose(int); /* Table of GUI-related functions. We must call them indirectly because * of wxBase and GUI separation: */ -static struct GSocketGUIFunctionsTable *gs_gui_functions; +static GSocketGUIFunctionsTable *gs_gui_functions; class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable { @@ -175,7 +185,6 @@ public: virtual bool Init_Socket(GSocket *socket); virtual void Destroy_Socket(GSocket *socket); virtual void Install_Callback(GSocket *socket, GSocketEvent event); -{} virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event); virtual void Enable_Events(GSocket *socket); virtual void Disable_Events(GSocket *socket); @@ -201,7 +210,7 @@ void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *socket) {} /* Global initialisers */ -void GSocket_SetGUIFunctions(struct GSocketGUIFunctionsTable *guifunc) +void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc) { gs_gui_functions = guifunc; } @@ -210,7 +219,7 @@ int GSocket_Init(void) { if (!gs_gui_functions) { - static class GSocketGUIFunctionsTableNull table; + static GSocketGUIFunctionsTableNull table; gs_gui_functions = &table; } if ( !gs_gui_functions->OnInit() ) @@ -241,13 +250,14 @@ GSocket::GSocket() m_local = NULL; m_peer = NULL; m_error = GSOCK_NOERROR; - m_server = FALSE; - m_stream = TRUE; + m_server = false; + m_stream = true; m_gui_dependent = NULL; - m_non_blocking = FALSE; + m_non_blocking = false; + m_reusable = false; m_timeout = 10*60*1000; /* 10 minutes * 60 sec * 1000 millisec */ - m_establishing = FALSE; + m_establishing = false; assert(gs_gui_functions); /* Per-socket GUI-specific initialization */ @@ -457,8 +467,8 @@ GSocketError GSocket::SetServer() } /* Initialize all fields */ - m_stream = TRUE; - m_server = TRUE; + m_stream = true; + m_server = true; /* Create the socket */ m_fd = socket(m_local->m_realfamily, SOCK_STREAM, 0); @@ -543,7 +553,7 @@ GSocket *GSocket::WaitConnection() /* Wait for a connection (with timeout) */ if (Input_Timeout() == GSOCK_TIMEDOUT) { - GSocket_destroy(connection); + delete connection; /* m_error set by _GSocket_Input_Timeout */ return NULL; } @@ -557,19 +567,19 @@ GSocket *GSocket::WaitConnection() else m_error = GSOCK_IOERR; - GSocket_destroy(connection); + delete connection; return NULL; } /* Initialize all fields */ - connection->m_server = FALSE; - connection->m_stream = TRUE; + connection->m_server = false; + connection->m_stream = true; /* Setup the peer address field */ connection->m_peer = GAddress_new(); if (!connection->m_peer) { - GSocket_destroy(connection); + delete connection; m_error = GSOCK_MEMERR; return NULL; } @@ -577,7 +587,7 @@ GSocket *GSocket::WaitConnection() if (err != GSOCK_NOERROR) { GAddress_destroy(connection->m_peer); - GSocket_destroy(connection); + delete connection; m_error = err; return NULL; } @@ -591,14 +601,14 @@ GSocket *GSocket::WaitConnection() return connection; } -int GSocket::SetReusable() +bool GSocket::SetReusable() { /* socket must not be null, and must not be in use/already bound */ if (this && m_fd == INVALID_SOCKET) { - m_reusable = TRUE; - return TRUE; + m_reusable = true; + return true; } - return FALSE; + return false; } /* Client specific parts */ @@ -650,8 +660,8 @@ GSocketError GSocket::Connect(GSocketStream stream) /* Streamed or dgram socket? */ m_stream = (stream == GSOCK_STREAMED); - m_server = FALSE; - m_establishing = FALSE; + m_server = false; + m_establishing = false; /* Create the socket */ m_fd = socket(m_peer->m_realfamily, @@ -709,7 +719,7 @@ GSocketError GSocket::Connect(GSocketStream stream) */ if ((err == EINPROGRESS) && (m_non_blocking)) { - m_establishing = TRUE; + m_establishing = true; m_error = GSOCK_WOULDBLOCK; return GSOCK_WOULDBLOCK; } @@ -757,8 +767,8 @@ GSocketError GSocket::SetNonOriented() } /* Initialize all fields */ - m_stream = FALSE; - m_server = FALSE; + m_stream = false; + m_server = false; /* Create the socket */ m_fd = socket(m_local->m_realfamily, SOCK_DGRAM, 0); @@ -914,7 +924,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); @@ -932,7 +942,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) */ if ((m_detected & GSOCK_LOST_FLAG) != 0) { - m_establishing = FALSE; + m_establishing = false; return (GSOCK_LOST_FLAG & flags); } @@ -963,7 +973,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) else { m_detected = GSOCK_LOST_FLAG; - m_establishing = FALSE; + m_establishing = false; /* LOST event: Abort any further processing */ return (GSOCK_LOST_FLAG & flags); @@ -979,7 +989,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) int error; SOCKLEN_T len = sizeof(error); - m_establishing = FALSE; + m_establishing = false; getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len); @@ -1005,7 +1015,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) /* Check for exceptions and errors (is this useful in Unices?) */ if (FD_ISSET(m_fd, &exceptfds)) { - m_establishing = FALSE; + m_establishing = false; m_detected = GSOCK_LOST_FLAG; /* LOST event: Abort any further processing */ @@ -1030,7 +1040,7 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags) * Sets the socket to non-blocking mode. All IO calls will return * immediately. */ -void GSocket::SetNonBlocking(int non_block) +void GSocket::SetNonBlocking(bool non_block) { assert(this); @@ -1132,7 +1142,7 @@ void GSocket::UnsetCallback(GSocketEventFlags flags) GSocketError GSocket::GetSockOpt(int level, int optname, void *optval, int *optlen) { - if (getsockopt(m_fd, level, optname, optval, optlen) == 0) + if (getsockopt(m_fd, level, optname, optval, (SOCKLEN_T*)optlen) == 0) { return GSOCK_NOERROR; } @@ -1150,7 +1160,7 @@ GSocketError GSocket::SetSockOpt(int level, int optname, } #define CALL_CALLBACK(socket, event) { \ - socket->Disable(event); \ + socket->Disable(event); \ if (socket->m_cbacks[event]) \ socket->m_cbacks[event](socket, event, socket->m_data[event]); \ } @@ -1357,7 +1367,7 @@ void GSocket::Detected_Read() */ if ((m_detected & GSOCK_LOST_FLAG) != 0) { - m_establishing = FALSE; + m_establishing = false; CALL_CALLBACK(this, GSOCK_LOST); Shutdown(); @@ -1389,7 +1399,7 @@ void GSocket::Detected_Write() */ if ((m_detected & GSOCK_LOST_FLAG) != 0) { - m_establishing = FALSE; + m_establishing = false; CALL_CALLBACK(this, GSOCK_LOST); Shutdown(); @@ -1401,7 +1411,7 @@ void GSocket::Detected_Write() int error; SOCKLEN_T len = sizeof(error); - m_establishing = FALSE; + m_establishing = false; getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len);