mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
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
This commit is contained in:
@@ -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]);
|
||||
|
||||
|
Reference in New Issue
Block a user