]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sckaddr.cpp
Disable symbols visibility support for the Clang compiler.
[wxWidgets.git] / src / common / sckaddr.cpp
index 1eed7359859ba50b37e0b56f79a06d14dc129a2e..67ca3fbcdfa77af4a5a368ad4eb55a98f3d90bac 100644 (file)
@@ -31,6 +31,7 @@
     #include "wx/object.h"
     #include "wx/log.h"
     #include "wx/intl.h"
+    #include "wx/thread.h"
 
     #include <stdio.h>
     #include <stdlib.h>
@@ -48,7 +49,7 @@
 
 #include <errno.h>
 
-#ifdef __UNIX__
+#if defined(__UNIX__) && !defined(__CYGWIN__)
     #include <netdb.h>
     #include <arpa/inet.h>
 #endif // __UNIX__
@@ -81,8 +82,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress)
 #ifdef __WXMSW__
     #define HAVE_INET_ADDR
 
+    #ifndef HAVE_GETHOSTBYNAME
     #define HAVE_GETHOSTBYNAME
+    #endif
+    #ifndef HAVE_GETSERVBYNAME
     #define HAVE_GETSERVBYNAME
+    #endif
 
     // under MSW getxxxbyname() functions are MT-safe (but not reentrant) so
     // we don't need to serialize calls to them
@@ -392,7 +397,8 @@ servent *wxGetservbyname_r(const char *port,
 #elif defined(HAVE_FUNC_GETSERVBYNAME_R_5)
     se = getservbyname_r(port, protocol, serv, buffer, size);
 #elif defined(HAVE_FUNC_GETSERVBYNAME_R_4)
-    se = getservbyname_r(port, protocol, serv, &buffer);
+    if ( getservbyname_r(port, protocol, serv, &buffer) != 0 )
+        return NULL;
 #elif defined(HAVE_GETSERVBYNAME)
     wxLOCK_GETBY_MUTEX(serv);
 
@@ -507,7 +513,7 @@ bool wxSockAddressImpl::SetHostName4(const wxString& name)
     if ( !addr )
         return false;
 
-    const wxUTF8Buf namebuf(name.utf8_str());
+    const wxScopedCharBuffer namebuf(name.utf8_str());
 
     // first check if this is an address in quad dotted notation
 #if defined(HAVE_INET_ATON)
@@ -694,7 +700,7 @@ bool wxSockAddressImpl::SetPath(const wxString& path)
     if ( !addr )
         return false;
 
-    const wxUTF8Buf buf(path.utf8_str());
+    const wxScopedCharBuffer buf(path.utf8_str());
     if ( strlen(buf) >= UNIX_PATH_MAX )
         return false;
 
@@ -721,9 +727,19 @@ wxString wxSockAddressImpl::GetPath() const
 // wxSockAddress
 // ----------------------------------------------------------------------------
 
+const sockaddr *wxSockAddress::GetAddressData() const
+{
+    return GetAddress().GetAddr();
+}
+
+int wxSockAddress::GetAddressDataLen() const
+{
+    return GetAddress().GetLen();
+}
+
 void wxSockAddress::Init()
 {
-    if ( !wxSocketBase::IsInitialized() )
+    if ( wxIsMainThread() && !wxSocketBase::IsInitialized() )
     {
         // we must do it before using any socket functions
         (void)wxSocketBase::Initialize();
@@ -862,7 +878,7 @@ wxString wxIPV4address::IPAddress() const
 
     return wxString::Format
            (
-            "%lu.%lu.%lu.%lu",
+            "%u.%u.%u.%u",
             (addr >> 24) & 0xff,
             (addr >> 16) & 0xff,
             (addr >> 8) & 0xff,