diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-02-18 16:47:03 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-02-18 16:47:03 +0100 |
commit | 1bbaeb7a85c57ccedd6987d9c0e6157e2aba3563 (patch) | |
tree | 95cecbd7faba35f4ac8014b452e2cf9537ee65d8 /src/lib | |
parent | 0f37f38fc2f1963d42de7ca8e11c3f10c5e69f17 (diff) | |
download | abrt-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')
-rw-r--r-- | src/lib/xfuncs.c | 10 |
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) |