]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler.h (fhandler_tty_master::fixup_after_fork): Remove declaration.
authorChristopher Faylor <me@cgf.cx>
Sat, 27 Dec 2003 01:59:29 +0000 (01:59 +0000)
committerChristopher Faylor <me@cgf.cx>
Sat, 27 Dec 2003 01:59:29 +0000 (01:59 +0000)
(fhandler_tty_master::fixup_after_exec): Ditto.
* fhandler_tty.cc (fhandler_tty_master::init): Fix so that children do not
inherit master tty handles.
(fhandler_tty_master::fixup_after_fork): Remove, since it was never used.
(fhandler_tty_master::fixup_after_exec): Ditto.
* pinfo.cc (_pinfo::set_ctty): Increment open_fhs when ctty is set.
* cygheap.cc (cygheap_init): Ditto.
* syscalls.cc (setsid): *Always* call close on opened ctty since the archetype
is associated with the ctty and it counts as an opened handle.
* tty.cc (tty::common_init): Don't protect input/output mutex since it confuses
subsequent fork/execs when CYGWIN=tty.

winsup/cygwin/ChangeLog
winsup/cygwin/cygheap.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_tty.cc
winsup/cygwin/pinfo.cc
winsup/cygwin/syscalls.cc
winsup/cygwin/tty.cc
winsup/cygwin/tty.h

index a357ef49f00d4b6602cead619a89e6ebc123cb68..a63ee6e9d0b30e131f106a788c75cbb3375323b6 100644 (file)
@@ -1,3 +1,21 @@
+2003-12-26  Christopher Faylor  <cgf@redhat.com>
+
+       * fhandler.h (fhandler_tty_master::fixup_after_fork): Remove
+       declaration.
+       (fhandler_tty_master::fixup_after_exec): Ditto.
+       * fhandler_tty.cc (fhandler_tty_master::init): Fix so that children do
+       not inherit master tty handles.
+       (fhandler_tty_master::fixup_after_fork): Remove, since it was never
+       used.
+       (fhandler_tty_master::fixup_after_exec): Ditto.
+       * pinfo.cc (_pinfo::set_ctty): Increment open_fhs when ctty is set.
+       * cygheap.cc (cygheap_init): Ditto.
+       * syscalls.cc (setsid): *Always* call close on opened ctty since the
+       archetype is associated with the ctty and it counts as an opened
+       handle.
+       * tty.cc (tty::common_init): Don't protect input/output mutex since it
+       confuses subsequent fork/execs when CYGWIN=tty.
+
 2003-12-26  Christopher Faylor  <cgf@redhat.com>
 
        * exceptions.cc (try_to_debug): Fix off-by-one problem when resetting
index 6859e4335d0aa4c0283251a440360cada79b79fb..16a95f4416f60a6251b46a1179fad50db8e5079d 100644 (file)
@@ -212,6 +212,13 @@ cygheap_init ()
            && (set_process_privilege (SE_CREATE_GLOBAL_NAME, true) >= 0
                || GetLastError () == ERROR_NO_SUCH_PRIVILEGE)
            ? "Global\\" : "");
+  if (cygheap->ctty)
+    {
+      fhandler_console::open_fhs++;
+      debug_printf ("tty%d, open_fhs %d, arch usecount %d",
+                   cygheap->ctty->get_ttyp ()->ntty,
+                   fhandler_console::open_fhs, cygheap->ctty->usecount);
+    }
 }
 
 /* Copyright (C) 1997, 2000 DJ Delorie */
index 3e0f3fb3a3a8e6600bf7f5abd1530580ac30af7b..5cbf387da1fe4b836a4c4ec171ba8dd2b1bb33a6 100644 (file)
@@ -890,7 +890,7 @@ class fhandler_tty_common: public fhandler_termios
 
   virtual int dup (fhandler_base *child);
 
-  tty *get_ttyp () { return (tty *)tc; }
+  tty *get_ttyp () { return (tty *) tc; }
 
   int close ();
   void set_close_on_exec (int val);
@@ -969,8 +969,6 @@ class fhandler_tty_master: public fhandler_pty_master
   int init ();
   int init_console ();
   void set_winsize (bool);
-  void fixup_after_fork (HANDLE parent);
-  void fixup_after_exec (HANDLE);
   bool is_slow () {return 1;}
 };
 
index d5cbcadd185ebec0956ecd82185635e38bbe4e73..ff1d48f241e544d0a6137f21bd0733cc0e0cee6e 100644 (file)
@@ -78,6 +78,7 @@ fhandler_tty_master::init ()
   set_winsize (false);
 
   inuse = get_ttyp ()->create_inuse (TTY_MASTER_ALIVE);
+  set_close_on_exec (true);
 
   cygthread *h;
   h = new cygthread (process_input, cygself, "ttyin");
@@ -1402,20 +1403,6 @@ fhandler_pty_master::set_close_on_exec (int val)
     }
 }
 
-void
-fhandler_tty_master::fixup_after_fork (HANDLE child)
-{
-  fhandler_pty_master::fixup_after_fork (child);
-  console->fixup_after_fork (child);
-}
-
-void
-fhandler_tty_master::fixup_after_exec (HANDLE)
-{
-  console->close ();
-  init_console ();
-}
-
 int
 fhandler_tty_master::init_console ()
 {
index 581e2fb5743c5b8799220d078f9e3b3afb4617d1..61c74db2a59d66aacb37126b8d5d8bfc20c98202 100644 (file)
@@ -293,7 +293,9 @@ _pinfo::set_ctty (tty_min *tc, int flags, fhandler_tty_slave *arch)
          if (arch)
            {
              arch->usecount++;
-             debug_printf ("arch usecount for tty%d is %d", tc->ntty, arch->usecount);
+             fhandler_console::open_fhs++;
+             debug_printf ("tty%d, open_fhs %d, arch usecount %d", tc->ntty,
+                           fhandler_console::open_fhs, arch->usecount);
            }
        }
     }
index ab8aeea00fc26345134c62073af9a1f26b6a859f..4a8cadefa7117161698f9c1671d52e4453676eb8 100644 (file)
@@ -335,8 +335,7 @@ setsid (void)
                      myself->pgid, myself->ctty, fhandler_console::open_fhs);
       if (cygheap->ctty)
        {
-         if (cygheap->ctty->usecount == 1)
-           cygheap->ctty->close ();
+         cygheap->ctty->close ();
          cygheap->ctty = NULL;
        }
       return myself->sid;
index 07c7a0a0625ed776943cc144fdab4d3fa2a94665..7e3aeb9c429ae3c13db0b4f90221d74c0d1ae2f7 100644 (file)
@@ -457,8 +457,8 @@ tty::common_init (fhandler_pty_master *ptym)
       return false;
     }
 
-  ProtectHandle1INH (ptym->output_mutex, output_mutex);
-  ProtectHandle1INH (ptym->input_mutex, input_mutex);
+  // /* screws up tty master */ ProtectHandle1INH (ptym->output_mutex, output_mutex);
+  // /* screws up tty master */ ProtectHandle1INH (ptym->input_mutex, input_mutex);
   winsize.ws_col = 80;
   winsize.ws_row = 25;
 
index 8153aaf4d5f097f0d3d7701add54462b4cf4dce7..c5d01526f30984a1df02f6d7183331649f6908f3 100644 (file)
@@ -87,7 +87,7 @@ class fhandler_pty_master;
 class tty: public tty_min
 {
   HANDLE get_event (const char *fmt, BOOL manual_reset = FALSE)
-    __attribute__ ((regparm (2)));
+    __attribute__ ((regparm (3)));
 public:
   HWND  hwnd;  /* Console window handle tty belongs to */
 
This page took 0.044934 seconds and 5 git commands to generate.