[gnome-builder] pty: improve fallbacks for creating master_fd
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] pty: improve fallbacks for creating master_fd
- Date: Fri, 26 Jan 2018 12:43:24 +0000 (UTC)
commit da094b52fb9afabb52eaa8f338e44f4b8ada61e1
Author: Christian Hergert <chergert redhat com>
Date: Fri Jan 26 04:42:23 2018 -0800
pty: improve fallbacks for creating master_fd
src/libide/util/ptyintercept.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/src/libide/util/ptyintercept.c b/src/libide/util/ptyintercept.c
index c2dfdc66c..5b1b57289 100644
--- a/src/libide/util/ptyintercept.c
+++ b/src/libide/util/ptyintercept.c
@@ -163,24 +163,25 @@ pty_intercept_create_master (void)
*/
if (master_fd == PTY_FD_INVALID && errno == EINVAL)
{
- gint new_flags = O_NONBLOCK;
- gint flags;
-
master_fd = posix_openpt (O_RDWR | O_NOCTTY | O_CLOEXEC);
if (master_fd == PTY_FD_INVALID && errno == EINVAL)
{
+ gint flags;
+
master_fd = posix_openpt (O_RDWR | O_NOCTTY);
- new_flags |= FD_CLOEXEC;
if (master_fd == -1)
return PTY_FD_INVALID;
- }
- flags = fcntl (master_fd, F_GETFD, 0);
- if (flags < 0)
- return PTY_FD_INVALID;
+ flags = fcntl (master_fd, F_GETFD, 0);
+ if (flags < 0)
+ return PTY_FD_INVALID;
+
+ if (fcntl (master_fd, F_SETFD, flags | FD_CLOEXEC) < 0)
+ return PTY_FD_INVALID;
+ }
- if (fcntl (master_fd, F_SETFD, flags | new_flags) < 0)
+ if (!g_unix_set_fd_nonblocking (master_fd, TRUE, NULL))
return PTY_FD_INVALID;
}
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]