Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <rbtcollins@hotmail.com>2002-02-28 15:53:33 +0300
committerRobert Collins <rbtcollins@hotmail.com>2002-02-28 15:53:33 +0300
commitba0131e10b2c1d16ba05cd4eaf570f94ee545f4b (patch)
treeb2a6375870835f6378b416b844173f727017a9dc /winsup/cygwin/fhandler_termios.cc
parentbfba0ce445f9d2415e41a4067464ac6b65814245 (diff)
Merged changes from HEAD
Diffstat (limited to 'winsup/cygwin/fhandler_termios.cc')
-rw-r--r--winsup/cygwin/fhandler_termios.cc21
1 files changed, 20 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc
index 4a8c23862..2407238e7 100644
--- a/winsup/cygwin/fhandler_termios.cc
+++ b/winsup/cygwin/fhandler_termios.cc
@@ -83,6 +83,25 @@ fhandler_termios::tcgetpgrp ()
}
void
+tty_min::kill_pgrp (int sig)
+{
+ int killself = 0;
+ winpids pids;
+ for (unsigned i = 0; i < pids.npids; i++)
+ {
+ _pinfo *p = pids[i];
+ if (!proc_exists (p) || p->ctty != ntty || p->pgid != pgid)
+ continue;
+ if (p == myself)
+ killself++;
+ else
+ (void) sig_send (p, sig);
+ }
+ if (killself)
+ sig_send (myself, sig);
+}
+
+void
tty_min::set_ctty (int ttynum, int flags)
{
if ((myself->ctty < 0 || myself->ctty == ttynum) && !(flags & O_NOCTTY))
@@ -218,7 +237,7 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept)
termios_printf ("got interrupt %d, sending signal %d", c, sig);
eat_readahead (-1);
- kill_pgrp (tc->getpgid (), sig);
+ tc->kill_pgrp (sig);
tc->ti.c_lflag &= ~FLUSHO;
sawsig = 1;
goto restart_output;