+// headers needed for umask()
+#ifdef __UNIX_LIKE__
+    #include <sys/types.h>
+    #include <sys/stat.h>
+#endif // __UNIX_LIKE__
+
+// ----------------------------------------------------------------------------
+// private functions
+// ----------------------------------------------------------------------------
+
+// get the address object for the given server name, the caller must delete it
+static wxSockAddress *
+GetAddressFromName(const wxString& serverName, const wxString& host = _T(""))
+{
+    // we always use INET sockets under non-Unix systems
+#ifdef __UNIX_LIKE__
+    // under Unix, if the server name looks like a path, create a AF_UNIX
+    // socket instead of AF_INET one
+    if ( serverName.Find(_T('/')) != wxNOT_FOUND )
+    {
+        wxUNIXaddress *addr = new wxUNIXaddress;
+        addr->Filename(serverName);
+
+        return addr;
+    }
+#endif // Unix/!Unix
+    {
+        wxIPV4address *addr = new wxIPV4address;
+        addr->Service(serverName);
+        if ( !host.empty() )
+        {
+            addr->Hostname(host);
+        }
+
+        return addr;
+    }
+}
+