* 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.
This commit is contained in:
parent
6210ee96ec
commit
578e142a2b
|
@ -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>
|
2006-06-02 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
* cygtls.h (CYGTLS_PADSIZE): Bump up or suffer a regrettable collision
|
* cygtls.h (CYGTLS_PADSIZE): Bump up or suffer a regrettable collision
|
||||||
|
|
|
@ -102,21 +102,8 @@ void
|
||||||
init_cygheap::close_ctty ()
|
init_cygheap::close_ctty ()
|
||||||
{
|
{
|
||||||
debug_printf ("closing cygheap->ctty %p", cygheap->ctty);
|
debug_printf ("closing cygheap->ctty %p", cygheap->ctty);
|
||||||
#ifdef NEWVFORK
|
|
||||||
int usecount = cygheap->ctty->usecount;
|
|
||||||
#endif
|
|
||||||
cygheap->ctty->close ();
|
cygheap->ctty->close ();
|
||||||
#ifndef NEWVFORK
|
|
||||||
cygheap->ctty = NULL;
|
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))
|
#define nextpage(x) ((char *) (((DWORD) ((char *) x + granmask)) & ~granmask))
|
||||||
|
|
|
@ -685,13 +685,13 @@ child_info_spawn::handle_spawn ()
|
||||||
FALSE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
|
FALSE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
|
||||||
h = NULL;
|
h = NULL;
|
||||||
set_myself (h);
|
set_myself (h);
|
||||||
ready (true);
|
|
||||||
__argc = moreinfo->argc;
|
__argc = moreinfo->argc;
|
||||||
__argv = moreinfo->argv;
|
__argv = moreinfo->argv;
|
||||||
envp = moreinfo->envp;
|
envp = moreinfo->envp;
|
||||||
envc = moreinfo->envc;
|
envc = moreinfo->envc;
|
||||||
if (!dynamically_loaded)
|
if (!dynamically_loaded)
|
||||||
cygheap->fdtab.fixup_after_exec ();
|
cygheap->fdtab.fixup_after_exec ();
|
||||||
|
ready (true);
|
||||||
|
|
||||||
/* Need to do this after debug_fixup_after_fork_exec or DEBUGGING handling of
|
/* Need to do this after debug_fixup_after_fork_exec or DEBUGGING handling of
|
||||||
handles might get confused. */
|
handles might get confused. */
|
||||||
|
|
|
@ -693,7 +693,10 @@ dtable::fixup_after_exec ()
|
||||||
if (fh->close_on_exec ())
|
if (fh->close_on_exec ())
|
||||||
{
|
{
|
||||||
if (fh->archetype)
|
if (fh->archetype)
|
||||||
fh->close ();
|
{
|
||||||
|
debug_printf ("closing fd %d since it is an archetype", i);
|
||||||
|
fh->close ();
|
||||||
|
}
|
||||||
release (i);
|
release (i);
|
||||||
}
|
}
|
||||||
else if (i == 0)
|
else if (i == 0)
|
||||||
|
|
|
@ -164,8 +164,8 @@ void
|
||||||
fhandler_pty_master::doecho (const void *str, DWORD len)
|
fhandler_pty_master::doecho (const void *str, DWORD len)
|
||||||
{
|
{
|
||||||
acquire_output_mutex (INFINITE);
|
acquire_output_mutex (INFINITE);
|
||||||
if (!WriteFile (get_ttyp ()->to_master, str, len, &len, NULL))
|
if (!WriteFile (to_master, str, len, &len, NULL))
|
||||||
termios_printf ("Write to %p failed, %E", get_ttyp ()->to_master);
|
termios_printf ("Write to %p failed, %E", to_master);
|
||||||
// WaitForSingleObject (output_done_event, INFINITE);
|
// WaitForSingleObject (output_done_event, INFINITE);
|
||||||
release_output_mutex ();
|
release_output_mutex ();
|
||||||
}
|
}
|
||||||
|
@ -520,8 +520,6 @@ fhandler_tty_slave::open (int flags, mode_t)
|
||||||
release_output_mutex ();
|
release_output_mutex ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Duplicate tty handles. */
|
|
||||||
|
|
||||||
if (!get_ttyp ()->from_master || !get_ttyp ()->to_master)
|
if (!get_ttyp ()->from_master || !get_ttyp ()->to_master)
|
||||||
{
|
{
|
||||||
termios_printf ("tty handles have been closed");
|
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",
|
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",
|
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_io_handle (from_master_local);
|
||||||
set_output_handle (to_master_local);
|
set_output_handle (to_master_local);
|
||||||
|
@ -1145,15 +1143,6 @@ fhandler_tty_common::close ()
|
||||||
if (!ForceCloseHandle1 (get_output_handle (), to_pty))
|
if (!ForceCloseHandle1 (get_output_handle (), to_pty))
|
||||||
termios_printf ("CloseHandle (get_output_handle ()<%p>), %E", get_output_handle ());
|
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))
|
if (!ForceCloseHandle (input_available_event))
|
||||||
termios_printf ("CloseHandle (input_available_event<%p>), %E", 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
|
void
|
||||||
fhandler_tty_slave::fixup_after_exec ()
|
fhandler_tty_slave::fixup_after_exec ()
|
||||||
{
|
{
|
||||||
if (close_on_exec ())
|
if (!close_on_exec ())
|
||||||
close ();
|
|
||||||
else
|
|
||||||
fixup_after_fork (NULL);
|
fixup_after_fork (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1438,6 +1425,8 @@ err:
|
||||||
close_maybe (input_available_event);
|
close_maybe (input_available_event);
|
||||||
close_maybe (output_mutex);
|
close_maybe (output_mutex);
|
||||||
close_maybe (input_mutex);
|
close_maybe (input_mutex);
|
||||||
|
close_maybe (from_master);
|
||||||
|
close_maybe (to_master);
|
||||||
termios_printf ("tty%d open failed - failed to create %s", errstr);
|
termios_printf ("tty%d open failed - failed to create %s", errstr);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1469,8 +1458,6 @@ fhandler_pty_master::fixup_after_fork (HANDLE parent)
|
||||||
void
|
void
|
||||||
fhandler_pty_master::fixup_after_exec ()
|
fhandler_pty_master::fixup_after_exec ()
|
||||||
{
|
{
|
||||||
if (close_on_exec ())
|
if (!close_on_exec ())
|
||||||
close ();
|
|
||||||
else
|
|
||||||
fixup_after_fork (spawn_info->parent);
|
fixup_after_fork (spawn_info->parent);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue