From 2292edf67c03d22c2d2bbe14fbe29b7e677d49ff Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Mon, 25 Feb 2019 14:26:54 +0100 Subject: [PATCH] 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. --- Makefile | 5 +++++ src/fd.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e2c4d17a1..6c19d3dfe 100644 --- a/Makefile +++ b/Makefile @@ -374,6 +374,7 @@ ifeq ($(TARGET),freebsd) 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 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 314e10fa2..581c5aaae 100644 --- a/src/fd.c +++ b/src/fd.c @@ -468,7 +468,13 @@ void fd_process_cached_events() 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 and above. It relies on the fact that poll() * will return POLLNVAL for each invalid (hence close) file descriptor passed