MinGW
[oweals/gnunet.git] / src / util / network.c
index 398f2b51a8cf14d8bf9a7a3c8fbdb9d51aa8feee..e7a276422a0554e513dc0dc934b987ba6f35fbcd 100644 (file)
 
 struct GNUNET_NETWORK_Handle
 {
+#ifndef MINGW
   int fd;
+#else
+  SOCKET fd;
+#endif
 };
 
 
@@ -57,7 +61,7 @@ struct GNUNET_NETWORK_FDSet
 
 #ifdef WINDOWS
   /**
-   * Linked list of handles 
+   * Linked list of handles
    */
   struct GNUNET_CONTAINER_SList *handles;
 #endif
@@ -360,18 +364,21 @@ GNUNET_NETWORK_socket_listen (const struct GNUNET_NETWORK_Handle *desc,
  * Returns GNUNET_NO if no data is available, or on error!
  * @param desc socket
  */
-unsigned int
-GNUNET_NETWORK_socket_recvfrom_amount (const struct GNUNET_NETWORK_Handle * desc)
+ssize_t
+GNUNET_NETWORK_socket_recvfrom_amount (const struct GNUNET_NETWORK_Handle
+                                       *desc)
 {
   int error;
-  unsigned int pending;
+  int pending;
 
   /* How much is there to be read? */
-  error = ioctl(desc->fd, FIONREAD, &pending);
-  GNUNET_log_from(GNUNET_ERROR_TYPE_INFO, "udp", _
-            ("pending is %u bytes, error is %d\n"), pending, error);
-
+#ifndef WINDOWS
+  error = ioctl (desc->fd, FIONREAD, &pending);
   if (error == 0)
+#else
+  error = ioctlsocket (desc->fd, FIONREAD, &pending);
+  if (error != SOCKET_ERROR)
+#endif
     return pending;
   else
     return GNUNET_NO;
@@ -389,7 +396,8 @@ GNUNET_NETWORK_socket_recvfrom_amount (const struct GNUNET_NETWORK_Handle * desc
 ssize_t
 GNUNET_NETWORK_socket_recvfrom (const struct GNUNET_NETWORK_Handle * desc,
                                 void *buffer, size_t length,
-                                struct sockaddr *src_addr, socklen_t *addrlen)
+                                struct sockaddr * src_addr,
+                                socklen_t * addrlen)
 {
   int ret;
   int flags;
@@ -733,7 +741,9 @@ GNUNET_NETWORK_fdset_handle_set (struct GNUNET_NETWORK_FDSet *fds,
 #ifdef MINGW
   HANDLE hw;
   GNUNET_DISK_internal_file_handle_ (h, &hw, sizeof (HANDLE));
-  GNUNET_CONTAINER_slist_add (fds->handles, GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, &hw, sizeof (HANDLE));
+  GNUNET_CONTAINER_slist_add (fds->handles,
+                              GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
+                              &hw, sizeof (HANDLE));
 
 #else
   int fd;
@@ -785,20 +795,23 @@ GNUNET_NETWORK_fdset_overlap (const struct GNUNET_NETWORK_FDSet *fds1,
       return GNUNET_YES;
 #ifdef MINGW
   {
-      struct GNUNET_CONTAINER_SList_Iterator *it;
+    struct GNUNET_CONTAINER_SList_Iterator *it;
 
-      for(it = GNUNET_CONTAINER_slist_begin (fds1->handles); GNUNET_CONTAINER_slist_end (it) != GNUNET_YES; GNUNET_CONTAINER_slist_next (it))
-        {
-          HANDLE *h;
-
-          h = GNUNET_CONTAINER_slist_get (it, NULL);
-          if (GNUNET_CONTAINER_slist_contains (fds2->handles, h, sizeof (HANDLE)))
-            {
-              GNUNET_CONTAINER_slist_iter_destroy (it);
-              return GNUNET_YES;
-            }
-        }
-      GNUNET_CONTAINER_slist_iter_destroy (it);
+    for (it = GNUNET_CONTAINER_slist_begin (fds1->handles);
+         GNUNET_CONTAINER_slist_end (it) != GNUNET_YES;
+         GNUNET_CONTAINER_slist_next (it))
+      {
+        HANDLE *h;
+
+        h = GNUNET_CONTAINER_slist_get (it, NULL);
+        if (GNUNET_CONTAINER_slist_contains
+            (fds2->handles, h, sizeof (HANDLE)))
+          {
+            GNUNET_CONTAINER_slist_iter_destroy (it);
+            return GNUNET_YES;
+          }
+      }
+    GNUNET_CONTAINER_slist_iter_destroy (it);
   }
 #endif
   return GNUNET_NO;
@@ -907,7 +920,8 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
   DWORD limit;
   fd_set sock_read, sock_write, sock_except;
   fd_set aread, awrite, aexcept;
-  struct GNUNET_CONTAINER_SList *handles_read, *handles_write, *handles_except;
+  struct GNUNET_CONTAINER_SList *handles_read, *handles_write,
+    *handles_except;
 
   int i;
   struct timeval tvslice;
@@ -1014,8 +1028,8 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
 
                 {
                   GNUNET_CONTAINER_slist_add (handles_read,
-                      GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, &h,
-                      sizeof (HANDLE));
+                                              GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
+                                              &h, sizeof (HANDLE));
                   retcode++;
                 }
             }
@@ -1039,8 +1053,8 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
 
                 {
                   GNUNET_CONTAINER_slist_add (handles_except,
-                      GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, &h,
-                      sizeof (HANDLE));
+                                              GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
+                                              &h, sizeof (HANDLE));
                   retcode++;
                 }
             }