summaryrefslogtreecommitdiffstats
path: root/src/util/util.c
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-12-08 17:39:57 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-01-15 10:33:01 +0100
commitf3d91181d4ee9da3f8bbf4ddf8782951c0ae46c1 (patch)
treebac7a56e6bf8d336437396d937f01ed1d04ebd11 /src/util/util.c
parent0e8a48e38e467b05951d2719956f8c0d5aed76b3 (diff)
downloadsssd-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.c24
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;
+}