MINOR: fd: Use closefrom() as my_closefrom() if supported.
Add a new option, USE_CLOSEFROM. If set, it is assumed the system provides
a closefrom() function, so use it.
It is only implicitely used on FreeBSD for now, it should work on
OpenBSD/NetBSD/DragonflyBSD/Solaris too, but as I have no such system to
test it, I'd rather leave it disabled by default. Users can add USE_CLOSEFROM
explicitely on their make command line to activate it.
diff --git a/Makefile b/Makefile
index e2c4d17..6c19d3d 100644
--- a/Makefile
+++ b/Makefile
@@ -374,6 +374,7 @@
USE_LIBCRYPT = implicit
USE_THREAD = implicit
USE_CPU_AFFINITY= implicit
+ USE_CLOSEFROM = implicit
else
ifeq ($(TARGET),osx)
# This is for Mac OS/X
@@ -682,6 +683,10 @@
endif
endif
+ifneq ($(USE_CLOSEFROM),)
+OPTIONS_CFLAGS += -DUSE_CLOSEFROM
+endif
+
ifneq ($(USE_LUA),)
check_lua_lib = $(shell echo "int main(){}" | $(CC) -o /dev/null -x c - $(2) -l$(1) 2>/dev/null && echo $(1))
check_lua_inc = $(shell if [ -d $(2)$(1) ]; then echo $(2)$(1); fi;)
diff --git a/src/fd.c b/src/fd.c
index 314e10f..581c5aa 100644
--- a/src/fd.c
+++ b/src/fd.c
@@ -468,7 +468,13 @@
fdlist_process_cached_events(&fd_cache);
}
-#if defined(ENABLE_POLL)
+#if defined(USE_CLOSEFROM)
+void my_closefrom(int start)
+{
+ closefrom(start);
+}
+
+#elif defined(ENABLE_POLL)
/* This is a portable implementation of closefrom(). It closes all open file
* descriptors starting at <start> and above. It relies on the fact that poll()
* will return POLLNVAL for each invalid (hence close) file descriptor passed