/* Synched up with: Not in FSF. */
/* Written by John Rose <john.rose@eng.sun.com>.
- Heavily modified and cleaned up by Ben Wing <ben.wing@eng.sun.com>. */
+ Heavily modified and cleaned up by Ben Wing <ben@xemacs.org>. */
#include <config.h>
#include "lisp.h"
};
static Lisp_Object
-mark_tooltalk_message (Lisp_Object obj, void (*markobj) (Lisp_Object))
+mark_tooltalk_message (Lisp_Object obj)
{
- markobj (XTOOLTALK_MESSAGE (obj)->callback);
+ mark_object (XTOOLTALK_MESSAGE (obj)->callback);
return XTOOLTALK_MESSAGE (obj)->plist_sym;
}
};
static Lisp_Object
-mark_tooltalk_pattern (Lisp_Object obj, void (*markobj) (Lisp_Object))
+mark_tooltalk_pattern (Lisp_Object obj)
{
- markobj (XTOOLTALK_PATTERN (obj)->callback);
+ mark_object (XTOOLTALK_PATTERN (obj)->callback);
return XTOOLTALK_PATTERN (obj)->plist_sym;
}
static Lisp_Object
tt_build_string (char *s)
{
- return build_string ((s) ? s : "");
+ return build_string (s ? s : "");
}
static Lisp_Object
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;