From 3b56f64923a71a90734c5167d549e4eb14002d18 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 30 Nov 2011 15:17:47 +1100 Subject: lib/util: added set_close_on_exec() this was already in tevent_util.c, but library layering prevented us from using it in some other libraries --- lib/util/blocking.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib/util/blocking.c') diff --git a/lib/util/blocking.c b/lib/util/blocking.c index f5933cc92b..9dede7aa0d 100644 --- a/lib/util/blocking.c +++ b/lib/util/blocking.c @@ -60,3 +60,21 @@ _PUBLIC_ int set_blocking(int fd, bool set) return fcntl( fd, F_SETFL, val); #undef FLAG_TO_SET } + + +_PUBLIC_ bool set_close_on_exec(int fd) +{ +#ifdef FD_CLOEXEC + int val; + + val = fcntl(fd, F_GETFD, 0); + if (val >= 0) { + val |= FD_CLOEXEC; + val = fcntl(fd, F_SETFD, val); + if (val != -1) { + return true; + } + } +#endif + return false; +} -- cgit