From a11ddeff5b8ca56b8d586dcf09e9be0eb4bc1d6e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 28 Jul 2008 23:19:29 +0200 Subject: don't call fcntl unless we have to --- libdaemon/dnonblock.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libdaemon/dnonblock.c b/libdaemon/dnonblock.c index b93d875..c16d511 100644 --- a/libdaemon/dnonblock.c +++ b/libdaemon/dnonblock.c @@ -27,17 +27,18 @@ #include "dnonblock.h" int daemon_nonblock(int fd, int b) { - int a; + int a, c; + if ((a = fcntl(fd, F_GETFL)) < 0) return -1; if (b) - a |= O_NDELAY; + c = a | O_NDELAY; else - a &= ~O_NDELAY; + c = a & ~O_NDELAY; - if (fcntl(fd, F_SETFL, a) < 0) - return -1; + if (c == a) + return 0; - return 0; + return fcntl(fd, F_SETFL, a); } -- cgit