OSDN Git Service

* cygheap.cc (init_cygheap::close_ctty): Remove obsolete code.
authorcgf <cgf>
Sat, 3 Jun 2006 06:35:09 +0000 (06:35 +0000)
committercgf <cgf>
Sat, 3 Jun 2006 06:35:09 +0000 (06:35 +0000)
* dcrt0.cc (child_info_spawn::handle_spawn): Signal ready after we've run
fixup_after_exec.
* dtable.cc (dtable::fixup_after_exec): Add debugging output.
* fhandler_tty.cc (fhandler_pty_master::doecho): Use class version of
to_master.
(fhandler_tty_common::close): Remove obsolete code.
(fhandler_tty_slave::fixup_after_exec): Don't close, since this is done in
dtable's fixup_after_exec.  (revisit later?)
(fhandler_pty_master::fixup_after_exec): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/cygheap.cc
winsup/cygwin/dcrt0.cc
winsup/cygwin/dtable.cc
winsup/cygwin/fhandler_tty.cc

index d229278..68a07be 100644 (file)
@@ -1,3 +1,16 @@
+2006-06-03  Christopher Faylor  <cgf@timesys.com>
+
+       * cygheap.cc (init_cygheap::close_ctty): Remove obsolete code.
+       * dcrt0.cc (child_info_spawn::handle_spawn): Signal ready after we've
+       run fixup_after_exec.
+       * dtable.cc (dtable::fixup_after_exec): Add debugging output.
+       * fhandler_tty.cc (fhandler_pty_master::doecho): Use class version of
+       to_master.
+       (fhandler_tty_common::close): Remove obsolete code.
+       (fhandler_tty_slave::fixup_after_exec): Don't close, since this is done
+       in dtable's fixup_after_exec.  (revisit later?)
+       (fhandler_pty_master::fixup_after_exec): Ditto.
+
 2006-06-02  Christopher Faylor  <cgf@timesys.com>
 
        * cygtls.h (CYGTLS_PADSIZE): Bump up or suffer a regrettable collision
index 9f44c8a..9b98b34 100644 (file)
@@ -102,21 +102,8 @@ void
 init_cygheap::close_ctty ()
 {
   debug_printf ("closing cygheap->ctty %p", cygheap->ctty);
-#ifdef NEWVFORK
-  int usecount = cygheap->ctty->usecount;
-#endif
   cygheap->ctty->close ();
-#ifndef NEWVFORK
   cygheap->ctty = NULL;
-#else  // FIXME: This code ain't right
-  if (cygheap->ctty_on_hold == cygheap->ctty)
-    cygheap->ctty_on_hold = NULL;
-  if (usecount == 1)
-    {
-      cygheap->ctty = NULL;
-      debug_printf ("setting cygheap->ctty to NULL");
-    }
-#endif
 }
 
 #define nextpage(x) ((char *) (((DWORD) ((char *) x + granmask)) & ~granmask))
index 59f451a..0228c32 100644 (file)
@@ -685,13 +685,13 @@ child_info_spawn::handle_spawn ()
                        FALSE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
     h = NULL;
   set_myself (h);
-  ready (true);
   __argc = moreinfo->argc;
   __argv = moreinfo->argv;
   envp = moreinfo->envp;
   envc = moreinfo->envc;
   if (!dynamically_loaded)
     cygheap->fdtab.fixup_after_exec ();
+  ready (true);
 
   /* Need to do this after debug_fixup_after_fork_exec or DEBUGGING handling of
      handles might get confused. */
index 85136ac..fbec8c9 100644 (file)
@@ -693,7 +693,10 @@ dtable::fixup_after_exec ()
        if (fh->close_on_exec ())
          {
            if (fh->archetype)
-             fh->close ();
+             {
+               debug_printf ("closing fd %d since it is an archetype", i);
+               fh->close ();
+             }
            release (i);
          }
        else if (i == 0)
index 46ee8bc..bca1486 100644 (file)
@@ -164,8 +164,8 @@ void
 fhandler_pty_master::doecho (const void *str, DWORD len)
 {
   acquire_output_mutex (INFINITE);
-  if (!WriteFile (get_ttyp ()->to_master, str, len, &len, NULL))
-    termios_printf ("Write to %p failed, %E", get_ttyp ()->to_master);
+  if (!WriteFile (to_master, str, len, &len, NULL))
+    termios_printf ("Write to %p failed, %E", to_master);
 //  WaitForSingleObject (output_done_event, INFINITE);
   release_output_mutex ();
 }
@@ -520,8 +520,6 @@ fhandler_tty_slave::open (int flags, mode_t)
     release_output_mutex ();
   }
 
-  /* Duplicate tty handles.  */
-
   if (!get_ttyp ()->from_master || !get_ttyp ()->to_master)
     {
       termios_printf ("tty handles have been closed");
@@ -582,9 +580,9 @@ fhandler_tty_slave::open (int flags, mode_t)
     }
 
   termios_printf ("duplicated from_master %p->%p from tty_owner",
-      get_ttyp ()->from_master, from_master_local);
+                 get_ttyp ()->from_master, from_master_local);
   termios_printf ("duplicated to_master %p->%p from tty_owner",
-      get_ttyp ()->to_master, to_master_local);
+                 get_ttyp ()->to_master, to_master_local);
 
   set_io_handle (from_master_local);
   set_output_handle (to_master_local);
@@ -1145,15 +1143,6 @@ fhandler_tty_common::close ()
   if (!ForceCloseHandle1 (get_output_handle (), to_pty))
     termios_printf ("CloseHandle (get_output_handle ()<%p>), %E", get_output_handle ());
 
-#if 0 // CGF - DELETME
-  /* Send EOF to slaves if master side is closed */
-  if (!get_ttyp ()->master_alive ())
-    {
-      termios_printf ("no more masters left. sending EOF");
-      SetEvent (input_available_event);
-    }
-#endif
-
   if (!ForceCloseHandle (input_available_event))
     termios_printf ("CloseHandle (input_available_event<%p>), %E", input_available_event);
 
@@ -1307,9 +1296,7 @@ fhandler_tty_slave::fixup_after_fork (HANDLE parent)
 void
 fhandler_tty_slave::fixup_after_exec ()
 {
-  if (close_on_exec ())
-    close ();
-  else
+  if (!close_on_exec ())
     fixup_after_fork (NULL);
 }
 
@@ -1438,6 +1425,8 @@ err:
   close_maybe (input_available_event);
   close_maybe (output_mutex);
   close_maybe (input_mutex);
+  close_maybe (from_master);
+  close_maybe (to_master);
   termios_printf ("tty%d open failed - failed to create %s", errstr);
   return false;
 }
@@ -1469,8 +1458,6 @@ fhandler_pty_master::fixup_after_fork (HANDLE parent)
 void
 fhandler_pty_master::fixup_after_exec ()
 {
-  if (close_on_exec ())
-    close ();
-  else
+  if (!close_on_exec ())
     fixup_after_fork (spawn_info->parent);
 }