/* -------------------------------------------------------------------------
- * Project: GSocket (Generic Socket)
- * Name: gsocket.cpp
- * Author: Guillermo Rodriguez Garcia <guille@iies.es>
- * Purpose: GSocket main MSW file
- * Licence: The wxWindows licence
- * CVSID: $Id$
+ * Project: GSocket (Generic Socket)
+ * Name: gsocket.cpp
+ * Copyright: (c) Guilhem Lavaux
+ * Licence: wxWindows Licence
+ * Author: Guillermo Rodriguez Garcia <guille@iies.es>
+ * Purpose: GSocket main MSW file
+ * Licence: The wxWindows licence
+ * CVSID: $Id$
* -------------------------------------------------------------------------
*/
#endif /* _MSC_VER */
+#if defined(__CYGWIN__)
+ //CYGWIN gives annoying warning about runtime stuff if we don't do this
+# define USE_SYS_TYPES_FD_SET
+# include <sys/types.h>
+#endif
+
#include <winsock.h>
#ifndef __GSOCKET_STANDALONE__
#include <stddef.h>
#include <ctype.h>
-/* if we use configure for MSW SOCKLEN_T will be already defined */
-#ifndef SOCKLEN_T
-# define SOCKLEN_T int
+/* if we use configure for MSW WX_SOCKLEN_T will be already defined */
+#ifndef WX_SOCKLEN_T
+# define WX_SOCKLEN_T int
#endif
/* Table of GUI-related functions. We must call them indirectly because
{
GAddress *address;
struct sockaddr addr;
- SOCKLEN_T size = sizeof(addr);
+ WX_SOCKLEN_T size = sizeof(addr);
GSocketError err;
assert(this);
if ((bind(m_fd, m_local->m_addr, m_local->m_len) != 0) ||
(getsockname(m_fd,
m_local->m_addr,
- (SOCKLEN_T *)&m_local->m_len) != 0) ||
+ (WX_SOCKLEN_T *)&m_local->m_len) != 0) ||
(listen(m_fd, 5) != 0))
{
Close();
{
GSocket *connection;
struct sockaddr from;
- SOCKLEN_T fromlen = sizeof(from);
+ WX_SOCKLEN_T fromlen = sizeof(from);
GSocketError err;
u_long arg = 1;
* make the appropriate setsockopt() call.
* Implemented as a GSocket function because clients (ie, wxSocketServer)
* don't have access to the GSocket struct information.
-* Returns true if the flag was set correctly, false if an error occured
+* Returns true if the flag was set correctly, false if an error occurred
* (ie, if the parameter was NULL)
*/
bool GSocket::SetReusable()
* For stream (connection oriented) sockets, GSocket_Connect() tries
* to establish a client connection to a server using the peer address
* as established with GSocket_SetPeer(). Returns GSOCK_NOERROR if the
- * connection has been succesfully established, or one of the error
+ * connection has been successfully established, or one of the error
* codes listed below. Note that for nonblocking sockets, a return
* value of GSOCK_WOULDBLOCK doesn't mean a failure. The connection
* request can be completed later; you should use GSocket_Select()
if ((bind(m_fd, m_local->m_addr, m_local->m_len) != 0) ||
(getsockname(m_fd,
m_local->m_addr,
- (SOCKLEN_T *)&m_local->m_len) != 0))
+ (WX_SOCKLEN_T *)&m_local->m_len) != 0))
{
Close();
m_error = GSOCK_IOERR;
/* If the socket is blocking, wait for data (with a timeout) */
if (Input_Timeout() == GSOCK_TIMEDOUT)
+ {
+ m_error = GSOCK_TIMEDOUT;
return -1;
+ }
/* Read the data */
if (m_stream)
if (m_establishing && !m_server)
{
int error;
- SOCKLEN_T len = sizeof(error);
+ WX_SOCKLEN_T len = sizeof(error);
m_establishing = false;
}
/* GSocket_GetError:
- * Returns the last error occured for this socket. Note that successful
+ * Returns the last error occurred for this socket. Note that successful
* operations do not clear this back to GSOCK_NOERROR, so use it only
* after an error.
*/
* assume that it can write since the first OUTPUT event, and no more
* OUTPUT events will be generated unless an error occurs.
* GSOCK_CONNECTION:
- * Connection succesfully established, for client sockets, or incoming
+ * Connection successfully established, for client sockets, or incoming
* client connection, for server sockets. Wait for this event (also watch
* out for GSOCK_LOST) after you issue a nonblocking GSocket_Connect() call.
* GSOCK_LOST:
int GSocket::Recv_Dgram(char *buffer, int size)
{
struct sockaddr from;
- SOCKLEN_T fromlen = sizeof(from);
+ WX_SOCKLEN_T fromlen = sizeof(from);
int ret;
GSocketError err;
CHECK_ADDRESS(address, INET);
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
- addr->s_addr = htonl(hostaddr);;
+ addr->s_addr = htonl(hostaddr);
return GSOCK_NOERROR;
}