trying to port statvfs call to BSD
[oweals/gnunet.git] / src / util / network.c
index 69b36bc51b981c173678db76a14c8f53b97173bb..101e794d07c892827182455620e7d30dec5f2b88 100644 (file)
@@ -41,14 +41,6 @@ struct GNUNET_NETWORK_Handle
 #ifndef MINGW
   int fd;
 
-#ifndef LINUX
-  /**
-   * For UNIX domain listen sockets, underlying filename to be removed
-   * on close.
-   */
-  char *filename;
-#endif
-
 #else
   SOCKET fd;
 #endif
@@ -273,7 +265,10 @@ GNUNET_NETWORK_socket_bind (struct GNUNET_NETWORK_Handle *desc,
   if ( (ret == 0) && (address->sa_family == AF_UNIX))
     {
       const struct sockaddr_un *un = (const struct sockaddr_un*) address;
-      desc->filename = GNUNET_strdup (un->sun_path);
+      if (0 != unlink (un->sun_path))
+       GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
+                                 "unlink",
+                                 un->sun_path);
     }
 #endif
 #endif
@@ -296,16 +291,6 @@ GNUNET_NETWORK_socket_close (struct GNUNET_NETWORK_Handle *desc)
   SetErrnoFromWinsockError (WSAGetLastError ());
 #else
   ret = close (desc->fd);
-#ifndef LINUX
-  if (NULL != desc->filename)
-    {
-      if (0 != unlink (desc->filename))
-       GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
-                                 "unlink",
-                                 desc->filename);
-      GNUNET_free (desc->filename);
-    }
-#endif
 #endif
   GNUNET_free (desc);
   return (ret == 0) ? GNUNET_OK : GNUNET_SYSERR;
@@ -799,6 +784,23 @@ void GNUNET_NETWORK_fdset_set_native (struct GNUNET_NETWORK_FDSet *to,
 }
 
 
+/**
+ * Test native fd in a set
+ *
+ * @param to set to test, NULL for empty set
+ * @param nfd native FD to test, or -1 for none
+ * @return GNUNET_YES if FD is set in the set
+ */
+int 
+GNUNET_NETWORK_fdset_test_native (const struct GNUNET_NETWORK_FDSet *to,
+                                 int nfd)
+{
+  if ( (nfd == -1) || (to == NULL) )
+    return GNUNET_NO;
+  return FD_ISSET (nfd, &to->sds) ? GNUNET_YES : GNUNET_NO;
+}
+
+
 /**
  * Add a file handle to the fd set
  * @param fds fd set
@@ -1174,19 +1176,15 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
   while (retcode == 0 && (ms_total == INFINITE || GetTickCount () < limit));
 
   if (retcode != -1)
-
     {
       if (rfds)
-
         {
           GNUNET_NETWORK_fdset_zero (rfds);
           GNUNET_NETWORK_fdset_copy_native (rfds, &aread, retcode);
           GNUNET_CONTAINER_slist_clear (rfds->handles);
           GNUNET_CONTAINER_slist_append (rfds->handles, handles_read);
-
         }
       if (wfds)
-
         {
           GNUNET_NETWORK_fdset_zero (wfds);
           GNUNET_NETWORK_fdset_copy_native (wfds, &awrite, retcode);
@@ -1194,7 +1192,6 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
           GNUNET_CONTAINER_slist_append (wfds->handles, handles_write);
         }
       if (efds)
-
         {
           GNUNET_NETWORK_fdset_zero (efds);
           GNUNET_NETWORK_fdset_copy_native (efds, &aexcept, retcode);