]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/gsocket.cpp
Applied modified form of the StdButtonSize patch.
[wxWidgets.git] / src / unix / gsocket.cpp
index 6aaa755cf977ad73afeb01ebc3fd6ce405b85039..7864aa59f3e46e6a33a29e717cbca149d82e7920 100644 (file)
@@ -119,6 +119,10 @@ int _System soclose(int);
 
 #endif /* SOCKLEN_T */
 
+#ifndef SOCKOPTLEN_T
+#define SOCKOPTLEN_T SOCKLEN_T
+#endif
+
 /*
  * MSW defines this, Unices don't.
  */
@@ -248,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;
@@ -471,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
@@ -695,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;
@@ -917,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);
@@ -980,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)
         {
@@ -1135,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;
     }
@@ -1145,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;
     }
@@ -1402,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)
     {
@@ -1702,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