diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-12-08 17:39:57 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-01-15 10:33:01 +0100 |
commit | f3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1 (patch) | |
tree | bac7a56e6bf8d336437396d937f01ed1d04ebd11 /src/util/util.c | |
parent | 0e8a48e38e467b05951d2719956f8c0d5aed76b3 (diff) | |
download | sssd-f3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1.tar.gz sssd-f3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1.tar.xz sssd-f3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1.zip |
UTIL: Unify the fd_nonblocking implementation
The responder and child_common modules each had their own
implementation. Unify it instead and add a unit test.
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
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; +} |