summaryrefslogtreecommitdiffstats
path: root/src/lib/xfuncs.c
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-18 16:47:03 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-18 16:47:03 +0100
commit1bbaeb7a85c57ccedd6987d9c0e6157e2aba3563 (patch)
tree95cecbd7faba35f4ac8014b452e2cf9537ee65d8 /src/lib/xfuncs.c
parent0f37f38fc2f1963d42de7ca8e11c3f10c5e69f17 (diff)
downloadabrt-1bbaeb7a85c57ccedd6987d9c0e6157e2aba3563.tar.gz
abrt-1bbaeb7a85c57ccedd6987d9c0e6157e2aba3563.tar.xz
abrt-1bbaeb7a85c57ccedd6987d9c0e6157e2aba3563.zip
gui-wizard-gtk: ensure we don't block on reading analyze output
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src/lib/xfuncs.c')
-rw-r--r--src/lib/xfuncs.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/xfuncs.c b/src/lib/xfuncs.c
index be02c56a..f451693a 100644
--- a/src/lib/xfuncs.c
+++ b/src/lib/xfuncs.c
@@ -26,12 +26,18 @@
/* Turn on nonblocking I/O on a fd */
int ndelay_on(int fd)
{
- return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
+ int flags = fcntl(fd, F_GETFL);
+ if (flags & O_NONBLOCK)
+ return 0;
+ return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}
int ndelay_off(int fd)
{
- return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK);
+ int flags = fcntl(fd, F_GETFL);
+ if (!(flags & O_NONBLOCK))
+ return 0;
+ return fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
}
int close_on_exec_on(int fd)