summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dcrt0.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r--winsup/cygwin/dcrt0.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index 46fdf926c..26a749c0a 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -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)
{