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.
This commit is contained in:
Olivier Houchard 2019-02-25 14:26:54 +01:00 committed by Olivier Houchard
parent d16a9dfed8
commit 2292edf67c
2 changed files with 12 additions and 1 deletions

View File

@ -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;)

View File

@ -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 <start> and above. It relies on the fact that poll()
* will return POLLNVAL for each invalid (hence close) file descriptor passed