summaryrefslogtreecommitdiff
path: root/gio/gcancellable.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2011-05-03 09:52:10 -0400
committerColin Walters <walters@verbum.org>2011-05-03 10:14:48 -0400
commited37970a0405b5681bcd6449d4dc1b4f9080c4fa (patch)
treeeb3cc956fbabb38b4111c3080a1edf27f58bb23f /gio/gcancellable.c
parente08e70e08d65e2fce142491a6c8fc6068c8008d2 (diff)
downloadglib-ed37970a0405b5681bcd6449d4dc1b4f9080c4fa.tar.gz
g_unix_set_fd_nonblocking: New API to control file descriptor blocking state
And use it in relevant places in GLib. https://bugzilla.gnome.org/show_bug.cgi?id=649225
Diffstat (limited to 'gio/gcancellable.c')
-rw-r--r--gio/gcancellable.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/gio/gcancellable.c b/gio/gcancellable.c
index c37baff51..32f508118 100644
--- a/gio/gcancellable.c
+++ b/gio/gcancellable.c
@@ -21,11 +21,10 @@
*/
#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
+#include "glib.h"
+#ifdef G_OS_UNIX
+#include "glib-unix.h"
#endif
-#include <errno.h>
-#include <fcntl.h>
#include <gioerror.h>
#ifdef G_OS_WIN32
#include <windows.h>
@@ -193,22 +192,6 @@ g_cancellable_class_init (GCancellableClass *klass)
}
#ifndef G_OS_WIN32
-static void
-set_fd_nonblocking (int fd)
-{
-#ifdef F_GETFL
- glong fcntl_flags;
- fcntl_flags = fcntl (fd, F_GETFL);
-
-#ifdef O_NONBLOCK
- fcntl_flags |= O_NONBLOCK;
-#else
- fcntl_flags |= O_NDELAY;
-#endif
-
- fcntl (fd, F_SETFL, fcntl_flags);
-#endif
-}
static void
set_fd_close_exec (int fd)
@@ -235,8 +218,8 @@ g_cancellable_open_pipe (GCancellable *cancellable)
/* Make them nonblocking, just to be sure we don't block
* on errors and stuff
*/
- set_fd_nonblocking (priv->cancel_pipe[0]);
- set_fd_nonblocking (priv->cancel_pipe[1]);
+ g_unix_set_fd_nonblocking (priv->cancel_pipe[0], TRUE, NULL);
+ g_unix_set_fd_nonblocking (priv->cancel_pipe[1], TRUE, NULL);
set_fd_close_exec (priv->cancel_pipe[0]);
set_fd_close_exec (priv->cancel_pipe[1]);