#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
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
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;
}
+/**
+ * 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
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);
GNUNET_CONTAINER_slist_append (wfds->handles, handles_write);
}
if (efds)
-
{
GNUNET_NETWORK_fdset_zero (efds);
GNUNET_NETWORK_fdset_copy_native (efds, &aexcept, retcode);