diff options
Diffstat (limited to 'src/util/util.c')
-rw-r--r-- | src/util/util.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/util/util.c b/src/util/util.c index 2acb8604a..613c559bb 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -880,3 +880,27 @@ done: return ret; } + +/* Set the nonblocking flag to the fd */ +errno_t sss_fd_nonblocking(int fd) +{ + int flags; + int ret; + + flags = fcntl(fd, F_GETFL, 0); + if (flags == -1) { + ret = errno; + DEBUG(SSSDBG_CRIT_FAILURE, + "F_GETFL failed [%d][%s].\n", ret, strerror(ret)); + return ret; + } + + if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) { + ret = errno; + DEBUG(SSSDBG_CRIT_FAILURE, + "F_SETFL failed [%d][%s].\n", ret, strerror(ret)); + return ret; + } + + return EOK; +} |