OSDN Git Service

* exceptions.cc (ctrl_c_handler): Only send SIGINT when we have a controlling
authorcgf <cgf>
Wed, 5 Sep 2001 02:42:49 +0000 (02:42 +0000)
committercgf <cgf>
Wed, 5 Sep 2001 02:42:49 +0000 (02:42 +0000)
terminal and we are the head of the process group.

winsup/cygwin/ChangeLog
winsup/cygwin/exceptions.cc

index 95d999f..1d60b7f 100644 (file)
@@ -1,3 +1,8 @@
+Tue Sep  4 22:42:13 2001  Christopher Faylor <cgf@cygnus.com>
+
+       * exceptions.cc (ctrl_c_handler): Only send SIGINT when we have a
+       controlling terminal and we are the head of the process group.
+
 Tue Sep  4 16:48:14 2001  Christopher Faylor <cgf@cygnus.com>
 
        * thread.cc (InterlockedExchangePointer): Don't define if it already
index 7a2061a..cdeb112 100644 (file)
@@ -912,11 +912,8 @@ ctrl_c_handler (DWORD type)
   tty_min *t = cygwin_shared->tty.get_tty (myself->ctty);
   /* Ignore this if we're not the process group lead since it should be handled
      *by* the process group leader. */
-  if (t->getpgid () && pid_exists (t->getpgid ()) &&
-      (t->getpgid () != myself->pid ||
-       (GetTickCount () - t->last_ctrl_c) < MIN_CTRL_C_SLOP))
-    return TRUE;
-  else
+  if (myself->ctty != -1 && t->getpgid () == myself->pid &&
+       (GetTickCount () - t->last_ctrl_c) >= MIN_CTRL_C_SLOP)
     /* Otherwise we just send a SIGINT to the process group and return TRUE (to indicate
        that we have handled the signal).  At this point, type should be
        a CTRL_C_EVENT or CTRL_BREAK_EVENT. */
@@ -926,6 +923,7 @@ ctrl_c_handler (DWORD type)
       t->last_ctrl_c = GetTickCount ();
       return TRUE;
     }
+  return TRUE;
 }
 
 /* Set the signal mask for this process.