[gnome-builder] pty: improve fallbacks for creating master_fd



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]