X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Ftooltalk.c;h=3f24b2eee48afb9cdf38ded52d77b6d8e6888fc7;hb=0d2242c007d49e44c37ef282404603c87a437d42;hp=260ab20d40621e58a990f102f4142068ebb4e844;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git diff --git a/src/tooltalk.c b/src/tooltalk.c index 260ab20..3f24b2e 100644 --- a/src/tooltalk.c +++ b/src/tooltalk.c @@ -153,7 +153,7 @@ struct Lisp_Tooltalk_Message static Lisp_Object mark_tooltalk_message (Lisp_Object obj, void (*markobj) (Lisp_Object)) { - (markobj) (XTOOLTALK_MESSAGE (obj)->callback); + markobj (XTOOLTALK_MESSAGE (obj)->callback); return XTOOLTALK_MESSAGE (obj)->plist_sym; } @@ -169,13 +169,13 @@ print_tooltalk_message (Lisp_Object obj, Lisp_Object printcharfun, error ("printing unreadable object #", p->header.uid); - sprintf (buf, "#", p->m, p->header.uid); + sprintf (buf, "#", (long) (p->m), p->header.uid); write_c_string (buf, printcharfun); } DEFINE_LRECORD_IMPLEMENTATION ("tooltalk-message", tooltalk_message, mark_tooltalk_message, print_tooltalk_message, - 0, 0, 0, + 0, 0, 0, 0, struct Lisp_Tooltalk_Message); static Lisp_Object @@ -184,7 +184,7 @@ make_tooltalk_message (Tt_message m) Lisp_Object val; struct Lisp_Tooltalk_Message *msg = alloc_lcrecord_type (struct Lisp_Tooltalk_Message, - lrecord_tooltalk_message); + &lrecord_tooltalk_message); msg->m = m; msg->callback = Qnil; @@ -227,7 +227,7 @@ struct Lisp_Tooltalk_Pattern static Lisp_Object mark_tooltalk_pattern (Lisp_Object obj, void (*markobj) (Lisp_Object)) { - (markobj) (XTOOLTALK_PATTERN (obj)->callback); + markobj (XTOOLTALK_PATTERN (obj)->callback); return XTOOLTALK_PATTERN (obj)->plist_sym; } @@ -243,13 +243,13 @@ print_tooltalk_pattern (Lisp_Object obj, Lisp_Object printcharfun, error ("printing unreadable object #", p->header.uid); - sprintf (buf, "#", p->p, p->header.uid); + sprintf (buf, "#", (long) (p->p), p->header.uid); write_c_string (buf, printcharfun); } DEFINE_LRECORD_IMPLEMENTATION ("tooltalk-pattern", tooltalk_pattern, mark_tooltalk_pattern, print_tooltalk_pattern, - 0, 0, 0, + 0, 0, 0, 0, struct Lisp_Tooltalk_Pattern); static Lisp_Object @@ -257,7 +257,7 @@ make_tooltalk_pattern (Tt_pattern p) { struct Lisp_Tooltalk_Pattern *pat = alloc_lcrecord_type (struct Lisp_Tooltalk_Pattern, - lrecord_tooltalk_pattern); + &lrecord_tooltalk_pattern); Lisp_Object val; pat->p = p; @@ -673,7 +673,7 @@ value returned by 'arg_bval like a string is fine. (XTOOLTALK_MESSAGE (message_)->plist_sym)); else - signal_simple_error ("invalid value for `get-tooltalk-message-attribute'", + signal_simple_error ("Invalid value for `get-tooltalk-message-attribute'", attribute); return Qnil; @@ -834,7 +834,7 @@ New arguments can be added to a message with add-tooltalk-message-arg. return Fput (XTOOLTALK_MESSAGE (message_)->plist_sym, argn, value); } else - signal_simple_error ("invalid value for `set-tooltalk-message-attribute'", + signal_simple_error ("Invalid value for `set-tooltalk-message-attribute'", attribute); return Qnil; } @@ -1256,7 +1256,28 @@ init_tooltalk (void) 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; @@ -1474,8 +1495,8 @@ Unprocessed messages are messages that didn't match any patterns. staticpro (&Vtooltalk_message_gcpro); staticpro (&Vtooltalk_pattern_gcpro); - Vtooltalk_message_gcpro = make_lisp_hashtable (10, HASHTABLE_NONWEAK, - HASHTABLE_EQ); - Vtooltalk_pattern_gcpro = make_lisp_hashtable (10, HASHTABLE_NONWEAK, - HASHTABLE_EQ); + Vtooltalk_message_gcpro = + make_lisp_hash_table (10, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); + Vtooltalk_pattern_gcpro = + make_lisp_hash_table (10, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); }