* child_info.h (child_info_fork::fork_retry): Declare new function.

* dcrt0.cc (child_info_fork::fork_retry): Define new function.
* fork.cc (frok::parent): Move retry decision into child_info_fork::fork_retry
and honor what it tells us to do.
* sigproc.cc (sig_send): Unhold signals on __SIGEXIT.
This commit is contained in:
Christopher Faylor
2006-03-15 00:29:14 +00:00
parent 67f85ee7b2
commit f02400f7c9
5 changed files with 34 additions and 8 deletions

View File

@@ -642,6 +642,26 @@ get_cygwin_startup_info ()
return res;
}
DWORD
child_info_fork::fork_retry (HANDLE h)
{
DWORD exit_code;
if (!GetExitCodeProcess (h, &exit_code))
return STILL_ACTIVE; /* should never happen */
switch (exit_code)
{
case STATUS_CONTROL_C_EXIT:
if (retry-- > 0)
return 0;
break;
case EXITCODE_RETRY:
if (retry-- > 0)
return 0;
break;
}
return exit_code;
}
bool
child_info_fork::handle_failure (DWORD err)
{