summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/sigproc.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2009-07-18 20:25:07 +0000
committerChristopher Faylor <me@cgf.cx>2009-07-18 20:25:07 +0000
commitacced2cea2e52c17dbf57efd9b7d1b53e73aedcf (patch)
tree1d0deee0e781aa555021e4bbba12dd44ba637a60 /winsup/cygwin/sigproc.cc
parentd4e45e3b99bd14e4253246518fced5eb5a8bcd58 (diff)
downloadcygnal-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.cc7
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