]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/gsocket.c
destructor for wxMenu deletes menu now
[wxWidgets.git] / src / unix / gsocket.c
index 7d489ecdd05767c8692d5683dd3d559fd42273b1..fa01cea28059a67d7e711f534934c3f5cbab634f 100644 (file)
@@ -3,22 +3,6 @@
  * Name:    gsocket.c
  * Purpose: GSocket main Unix file
  * CVSID:   $Id$
- * Log:     $Log$
- * Log:     Revision 1.2  1999/07/23 09:48:31  KB
- * Log:     Fixed stupid new bugs :-(
- * Log:
- * Log:     Revision 1.1  1999/07/22 17:51:54  GL
- * Log:     Added GSocket for Unix (only GTK for the moment)
- * Log:     Updated wxSocket to use GSocket API
- * Log:     Added a progress bar to client.cpp
- * Log:     Added CopyTo to wxMemoryOutputStream to copy the internal buffer to a specified buffer.
- * Log:     Various changes/fixes to the high-level protocols FTP/HTTP
- * Log:     Various Unicode fixes
- * Log:     Removed sckint.*
- * Log:
- * Log:     Revision 1.2  1999/07/18 15:52:34  guilhem
- * Log:     * Copyright, etc.
- * Log:
  * -------------------------------------------------------------------------
  */
 
@@ -42,7 +26,7 @@
 #include <stdlib.h>
 
 #ifdef sun
-#include <sys/filio.h>
+  #include <sys/filio.h>
 #endif
 
 #ifdef sgi
 #endif
 
 #include <signal.h>
+//#include <features.h>
+
 #include <wx/setup.h>
 #include <wx/gsocket.h>
 #include "gsockunx.h"
 
 #ifndef SOCKLEN_T
-#      define SOCKLEN_T int
+
+#ifdef __GLIBC__
+#      if __GLIBC__ == 2
+#         define SOCKLEN_T socklen_t
+#      endif
+#else
+#      define SOCKLEN_T int
+#endif
+
 #endif
 
+/* Global initialisers */
+
+void GSocket_Init()
+{
+}
+
+void GSocket_Cleanup()
+{
+}
+
 /* Constructors / Destructors */
 
 GSocket *GSocket_new()
@@ -89,11 +93,11 @@ void GSocket_destroy(GSocket *socket)
 {
   assert(socket != NULL);
 
-  _GSocket_GUI_Destroy(socket);
-
   if (socket->m_fd != -1)
     GSocket_Shutdown(socket);
 
+  _GSocket_GUI_Destroy(socket);
+
   if (socket->m_local)
     GAddress_destroy(socket->m_local);
 
@@ -123,7 +127,9 @@ void GSocket_Shutdown(GSocket *socket)
 
 GSocketError GSocket_SetLocal(GSocket *socket, GAddress *address)
 {
-  if (socket == NULL || (socket->m_fd != -1 && !socket->m_server))
+  assert(socket != NULL);
+
+  if ((socket->m_fd != -1 && !socket->m_server))
     return GSOCK_INVSOCK;
 
   if (address == NULL || address->m_family == GSOCK_NOFAMILY)
@@ -139,8 +145,7 @@ GSocketError GSocket_SetLocal(GSocket *socket, GAddress *address)
 
 GSocketError GSocket_SetPeer(GSocket *socket, GAddress *address)
 {
-  if (socket == NULL)
-    return GSOCK_INVSOCK;
+  assert(socket != NULL);
 
   if (address == NULL || address->m_family == GSOCK_NOFAMILY) {
     socket->m_error = GSOCK_INVADDR;
@@ -200,7 +205,8 @@ GAddress *GSocket_GetPeer(GSocket *socket)
   GSocket_SetServer() setup the socket as a server. It uses the "Local" field
   of GSocket. "Local" must be set by GSocket_SetLocal() before
   GSocket_SetServer() is called. GSOCK_INVSOCK if socket has been initialized.
-  In the other cases, it returns GSOCK_INVADDR.
+  In case, you haven't yet defined the local address, it returns GSOCK_INVADDR.
+  In the other cases it returns GSOCK_IOERR.
 */
 GSocketError GSocket_SetServer(GSocket *sck)
 {
@@ -811,7 +817,8 @@ GSocketError GAddress_INET_SetHostAddress(GAddress *address,
   return GSOCK_NOERROR;
 }
 
-GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port)
+GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port,
+                                       const char *protocol)
 {
   struct servent *se;
   struct sockaddr_in *addr;
@@ -825,7 +832,7 @@ GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port)
   }
  
   /* TODO: TCP or UDP */
-  se = getservbyname(port, "tcp");
+  se = getservbyname(port, protocol);
   if (!se) {
     if (isdigit(port[0])) {
       int port_int;