]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler_tty.cc (fhandler_pty_master::setup): Reorganize so that all
authorChristopher Faylor <me@cgf.cx>
Sat, 26 Jul 2008 19:35:21 +0000 (19:35 +0000)
committerChristopher Faylor <me@cgf.cx>
Sat, 26 Jul 2008 19:35:21 +0000 (19:35 +0000)
operations for each end of the pipe are grouped together.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_tty.cc

index 244da549e4eeb4febff86e222843cd2d078a14ae..425de1085d2fc07bc7bbc512ad46b05319a91a0f 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-26  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler_tty.cc (fhandler_pty_master::setup): Reorganize so that all
+       operations for each end of the pipe are grouped together.
+
 2008-07-25  Corinna Vinschen  <corinna@vinschen.de>
 
        * dcrt0.cc (dll_crt0_1): Call malloc_init and user_shared_initialize_1
index ab52d6dfe728cf2a74ba4a9094d7719f8c81470b..d4b710d8f35bc290b5bdbaf7e01e67b41e63c6e9 100644 (file)
@@ -1362,7 +1362,7 @@ fhandler_pty_master::setup (bool ispty)
 
   char pipename[sizeof("ttyNNNN-from-master")];
   __small_sprintf (pipename, "tty%d-from-master", get_unit ());
-  res = fhandler_pipe::create_selectable (&sec_all, from_master,
+  res = fhandler_pipe::create_selectable (&sec_none_nih, from_master,
                                          get_output_handle (), 128 * 1024,
                                          pipename);
   if (res)
@@ -1370,19 +1370,29 @@ fhandler_pty_master::setup (bool ispty)
       errstr = "input pipe";
       goto err;
     }
+  if (!SetHandleInformation (get_output_handle (), HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT))
+    {
+      errstr = "inheritable get_output_handle ()";
+      goto err;
+    }
+
+  if (!SetNamedPipeHandleState (get_output_handle (), &pipe_mode, NULL, NULL))
+    termios_printf ("can't set output_handle(%p) to non-blocking mode",
+                   get_output_handle ());
 
   __small_sprintf (pipename, "tty%d-to-master", get_unit ());
-  res = fhandler_pipe::create_selectable (&sec_all, get_io_handle (),
+  res = fhandler_pipe::create_selectable (&sec_none_nih, get_io_handle (),
                                          to_master, 128 * 1024, pipename);
   if (res)
     {
       errstr = "output pipe";
       goto err;
     }
-
-  if (!SetNamedPipeHandleState (get_output_handle (), &pipe_mode, NULL, NULL))
-    termios_printf ("can't set output_handle(%p) to non-blocking mode",
-                   get_output_handle ());
+  if (!SetHandleInformation (get_io_handle (), HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT))
+    {
+      errstr = "inheritable get_io_handle ()";
+      goto err;
+    }
 
   need_nl = 0;
 
@@ -1419,20 +1429,6 @@ fhandler_pty_master::setup (bool ispty)
   if (!(input_mutex = CreateMutex (&sec_all, FALSE, buf)))
     goto err;
 
-  if (!DuplicateHandle (hMainProc, from_master, hMainProc, &from_master, 0, false,
-                       DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
-    {
-      errstr = "non-inheritable from_master";
-      goto err;
-    }
-
-  if (!DuplicateHandle (hMainProc, to_master, hMainProc, &to_master, 0, false,
-                       DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
-    {
-      errstr = "non-inheritable to_master";
-      goto err;
-    }
-
   t.from_master = from_master;
   t.to_master = to_master;
   // /* screws up tty master */ ProtectHandle1INH (output_mutex, output_mutex);
This page took 0.036799 seconds and 5 git commands to generate.