diff options
author | Christopher Faylor <me@cgf.cx> | 2009-07-18 20:25:07 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2009-07-18 20:25:07 +0000 |
commit | acced2cea2e52c17dbf57efd9b7d1b53e73aedcf (patch) | |
tree | 1d0deee0e781aa555021e4bbba12dd44ba637a60 /winsup/cygwin/sigproc.cc | |
parent | d4e45e3b99bd14e4253246518fced5eb5a8bcd58 (diff) | |
download | cygnal-acced2cea2e52c17dbf57efd9b7d1b53e73aedcf.tar.gz cygnal-acced2cea2e52c17dbf57efd9b7d1b53e73aedcf.tar.bz2 cygnal-acced2cea2e52c17dbf57efd9b7d1b53e73aedcf.zip |
* exceptions.cc (sig_handle_tty_stop): Set stopsig to SIGCONT when continuing.
(stopped_or_terminated): Honor WCONTINUED.
* wait.cc (wait4): Ditto.
* include/cygwin/wait.h (WCONTINUED): Define.
(__W_CONTINUED): Ditto.
(WIFCONTINUED): Ditto.
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r-- | winsup/cygwin/sigproc.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 91109977b..29bb00101 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1050,7 +1050,7 @@ stopped_or_terminated (waitq *parent_w, _pinfo *child) int terminated; if (!((terminated = (child->process_state == PID_EXITED)) || - ((w->options & WUNTRACED) && child->stopsig))) + ((w->options & (WUNTRACED | WCONTINUED)) && child->stopsig))) return false; parent_w->next = w->next; /* successful wait. remove from wait queue */ @@ -1059,7 +1059,10 @@ stopped_or_terminated (waitq *parent_w, _pinfo *child) if (!terminated) { sigproc_printf ("stopped child"); - w->status = (child->stopsig << 8) | 0x7f; + if (child->stopsig == SIGCONT) + w->status = __W_CONTINUED; + else + w->status = (child->stopsig << 8) | 0x7f; child->stopsig = 0; } else |