]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/gsocket.cpp
#pragma implementation fix.
[wxWidgets.git] / src / unix / gsocket.cpp
index ea83e5f4f995bdfc188da3216bf218f7d048928b..eb7b1b5678fb98a63e67d5117b17e9e1427207fc 100644 (file)
@@ -101,6 +101,9 @@ int _System soclose(int);
 #ifdef sgi
 #  include <bstring.h>
 #endif
+#ifdef _AIX
+#  include <strings.h>
+#endif
 #include <signal.h>
 
 #ifndef SOCKLEN_T
@@ -117,13 +120,23 @@ int _System soclose(int);
 #  endif
 #endif
 
-#else
-   /* undefine for OSX - its really an int */
-#  ifdef __DARWIN__
+#endif /* SOCKLEN_T */
+
+#ifndef SOCKOPTLEN_T
+#define SOCKOPTLEN_T SOCKLEN_T
+#endif
+
+/*
+ * OSX 10.2 has int args instead of SOCKLENXXX_T
+ */
+#if defined( __WXMAC__ ) || defined ( __WXCOCOA__ ) 
+#  if ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2 )
+#    undef SOCKOPTLEN_T 
 #    undef SOCKLEN_T
+#    define SOCKOPTLEN_T int
 #    define SOCKLEN_T int
 #  endif
-#endif /* SOCKLEN_T */
+#endif
 
 /*
  * MSW defines this, Unices don't.
@@ -478,11 +491,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
@@ -586,7 +595,6 @@ GSocket *GSocket::WaitConnection()
   err = _GAddress_translate_from(connection->m_peer, &from, fromlen);
   if (err != GSOCK_NOERROR)
   {
-    GAddress_destroy(connection->m_peer);
     delete connection;
     m_error = err;
     return NULL;
@@ -702,9 +710,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;
@@ -987,11 +995,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)
         {
@@ -1142,7 +1150,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;
     }
@@ -1152,7 +1160,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;
     }
@@ -1409,11 +1417,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)
     {