diff options
author | Andrew Tridgell <tridge@samba.org> | 2011-11-30 15:17:47 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-12-15 23:36:22 +0100 |
commit | 3b56f64923a71a90734c5167d549e4eb14002d18 (patch) | |
tree | 9f0e674be0f784f05845380f7afa9abc1a57230c | |
parent | 9782501f0b9fafa171c4ed830abd8433b0be1f1b (diff) | |
download | samba-3b56f64923a71a90734c5167d549e4eb14002d18.tar.gz samba-3b56f64923a71a90734c5167d549e4eb14002d18.tar.bz2 samba-3b56f64923a71a90734c5167d549e4eb14002d18.zip |
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
-rw-r--r-- | lib/util/blocking.c | 18 | ||||
-rw-r--r-- | lib/util/samba_util.h | 5 |
2 files changed, 23 insertions, 0 deletions
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; +} diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h index 9a76fa9f04..3b5169d744 100644 --- a/lib/util/samba_util.h +++ b/lib/util/samba_util.h @@ -668,6 +668,11 @@ _PUBLIC_ bool directory_create_or_exist(const char *dname, uid_t uid, _PUBLIC_ int set_blocking(int fd, bool set); /** + set close on exec on a file descriptor if available + **/ +_PUBLIC_ bool set_close_on_exec(int fd); + +/** Sleep for a specified number of milliseconds. **/ _PUBLIC_ void smb_msleep(unsigned int t); |