diff src/tooltalk.c @ 349:8429d81ab209 r21-1-4

Import from CVS: tag r21-1-4
author cvs
date Mon, 13 Aug 2007 10:54:28 +0200
parents e11d67e05968
children 182f72e8cd0d
line wrap: on
line diff
--- a/src/tooltalk.c	Mon Aug 13 10:53:50 2007 +0200
+++ b/src/tooltalk.c	Mon Aug 13 10:54:28 2007 +0200
@@ -1256,7 +1256,28 @@
   Lisp_Object lp;
   Lisp_Object fil;
 
+
+  /* tt_open() messes with our signal handler flags (at least when no 
+     ttsessions is running on the machine), therefore we save the 
+     actions and restore them after the call */
+#ifdef HAVE_SIGPROCMASK
+  {
+    struct sigaction ActSIGQUIT;
+    struct sigaction ActSIGINT;
+    struct sigaction ActSIGCHLD;
+    sigaction (SIGQUIT, NULL, &ActSIGQUIT);
+    sigaction (SIGINT, NULL, &ActSIGINT);
+    sigaction (SIGCHLD, NULL, &ActSIGCHLD);
+#endif
   retval = tt_open ();
+#ifdef HAVE_SIGPROCMASK
+    sigaction (SIGQUIT, &ActSIGQUIT, NULL);
+    sigaction (SIGINT, &ActSIGINT, NULL);
+    sigaction (SIGCHLD, &ActSIGCHLD, NULL);
+  }
+#endif
+
+
   if (tt_ptr_error (retval) != TT_OK)
     return;