aboutsummaryrefslogtreecommitdiffstats
path: root/src/fd_util.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/fd_util.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/fd_util.c b/src/fd_util.c
index b6593d919..9137e6e3b 100644
--- a/src/fd_util.c
+++ b/src/fd_util.c
@@ -35,6 +35,10 @@
#include <sys/socket.h>
#endif
+#ifdef HAVE_INOTIFY_INIT
+#include <sys/inotify.h>
+#endif
+
#ifndef WIN32
static int
@@ -169,3 +173,25 @@ accept_cloexec(int fd, struct sockaddr *address, size_t *address_length_r)
return ret;
}
+
+#ifdef HAVE_INOTIFY_INIT
+
+int
+inotify_init_cloexec(void)
+{
+ int fd;
+
+#ifdef HAVE_INOTIFY_INIT1
+ fd = inotify_init1(IN_CLOEXEC);
+ if (fd >= 0 || errno != ENOSYS)
+ return fd;
+#endif
+
+ fd = inotify_init();
+ if (fd >= 0)
+ fd_set_cloexec(fd, true);
+
+ return fd;
+}
+
+#endif