Mercurial > hg > xemacs-beta
diff src/tooltalk.c @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | a86b2b5e0111 |
children | 41dbb7a9d5f2 |
line wrap: on
line diff
--- a/src/tooltalk.c Mon Aug 13 11:19:22 2007 +0200 +++ b/src/tooltalk.c Mon Aug 13 11:20:41 2007 +0200 @@ -22,7 +22,7 @@ /* Synched up with: Not in FSF. */ /* Written by John Rose <john.rose@eng.sun.com>. - Heavily modified and cleaned up by Ben Wing <ben@xemacs.org>. */ + Heavily modified and cleaned up by Ben Wing <ben.wing@eng.sun.com>. */ #include <config.h> #include "lisp.h" @@ -151,9 +151,9 @@ }; static Lisp_Object -mark_tooltalk_message (Lisp_Object obj) +mark_tooltalk_message (Lisp_Object obj, void (*markobj) (Lisp_Object)) { - mark_object (XTOOLTALK_MESSAGE (obj)->callback); + markobj (XTOOLTALK_MESSAGE (obj)->callback); return XTOOLTALK_MESSAGE (obj)->plist_sym; } @@ -161,7 +161,7 @@ print_tooltalk_message (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { - Lisp_Tooltalk_Message *p = XTOOLTALK_MESSAGE (obj); + struct Lisp_Tooltalk_Message *p = XTOOLTALK_MESSAGE (obj); char buf[200]; @@ -175,15 +175,16 @@ DEFINE_LRECORD_IMPLEMENTATION ("tooltalk-message", tooltalk_message, mark_tooltalk_message, print_tooltalk_message, - 0, 0, 0, 0, - Lisp_Tooltalk_Message); + 0, 0, 0, + struct Lisp_Tooltalk_Message); static Lisp_Object make_tooltalk_message (Tt_message m) { Lisp_Object val; - Lisp_Tooltalk_Message *msg = - alloc_lcrecord_type (Lisp_Tooltalk_Message, &lrecord_tooltalk_message); + struct Lisp_Tooltalk_Message *msg = + alloc_lcrecord_type (struct Lisp_Tooltalk_Message, + &lrecord_tooltalk_message); msg->m = m; msg->callback = Qnil; @@ -224,9 +225,9 @@ }; static Lisp_Object -mark_tooltalk_pattern (Lisp_Object obj) +mark_tooltalk_pattern (Lisp_Object obj, void (*markobj) (Lisp_Object)) { - mark_object (XTOOLTALK_PATTERN (obj)->callback); + markobj (XTOOLTALK_PATTERN (obj)->callback); return XTOOLTALK_PATTERN (obj)->plist_sym; } @@ -234,7 +235,7 @@ print_tooltalk_pattern (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { - Lisp_Tooltalk_Pattern *p = XTOOLTALK_PATTERN (obj); + struct Lisp_Tooltalk_Pattern *p = XTOOLTALK_PATTERN (obj); char buf[200]; @@ -248,14 +249,15 @@ DEFINE_LRECORD_IMPLEMENTATION ("tooltalk-pattern", tooltalk_pattern, mark_tooltalk_pattern, print_tooltalk_pattern, - 0, 0, 0, 0, - Lisp_Tooltalk_Pattern); + 0, 0, 0, + struct Lisp_Tooltalk_Pattern); static Lisp_Object make_tooltalk_pattern (Tt_pattern p) { - Lisp_Tooltalk_Pattern *pat = - alloc_lcrecord_type (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_pattern); + struct Lisp_Tooltalk_Pattern *pat = + alloc_lcrecord_type (struct Lisp_Tooltalk_Pattern, + &lrecord_tooltalk_pattern); Lisp_Object val; pat->p = p; @@ -500,7 +502,7 @@ static Lisp_Object tt_build_string (char *s) { - return build_string (s ? s : ""); + return build_string ((s) ? s : ""); } static Lisp_Object @@ -700,10 +702,8 @@ { Tt_message m = unbox_tooltalk_message (message_); int n = 0; - Tt_status (*fun_str) (Tt_message, const char *) = 0; CHECK_SYMBOL (attribute); - if (EQ (attribute, (Qtt_arg_bval)) || EQ (attribute, (Qtt_arg_ival)) || EQ (attribute, (Qtt_arg_val))) @@ -715,7 +715,7 @@ if (!VALID_TOOLTALK_MESSAGEP (m)) return Qnil; - if (EQ (attribute, Qtt_address)) + else if (EQ (attribute, Qtt_address)) { CHECK_TOOLTALK_CONSTANT (value); tt_message_address_set (m, (Tt_address) tooltalk_constant_value (value)); @@ -731,37 +731,73 @@ tt_message_disposition_set (m, ((Tt_disposition) tooltalk_constant_value (value))); } + else if (EQ (attribute, Qtt_file)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_file_set (m, value_ext); + } + else if (EQ (attribute, Qtt_handler_ptype)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_handler_ptype_set (m, value_ext); + } + else if (EQ (attribute, Qtt_handler)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_handler_set (m, value_ext); + } + else if (EQ (attribute, Qtt_object)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_object_set (m, value_ext); + } + else if (EQ (attribute, Qtt_op)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_op_set (m, value_ext); + } + else if (EQ (attribute, Qtt_otype)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_otype_set (m, value_ext); + } else if (EQ (attribute, Qtt_scope)) { CHECK_TOOLTALK_CONSTANT (value); tt_message_scope_set (m, (Tt_scope) tooltalk_constant_value (value)); } - else if (EQ (attribute, Qtt_file)) - fun_str = tt_message_file_set; - else if (EQ (attribute, Qtt_handler_ptype)) - fun_str = tt_message_handler_ptype_set; - else if (EQ (attribute, Qtt_handler)) - fun_str = tt_message_handler_set; - else if (EQ (attribute, Qtt_object)) - fun_str = tt_message_object_set; - else if (EQ (attribute, Qtt_op)) - fun_str = tt_message_op_set; - else if (EQ (attribute, Qtt_otype)) - fun_str = tt_message_otype_set; else if (EQ (attribute, Qtt_sender_ptype)) - fun_str = tt_message_sender_ptype_set; + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_sender_ptype_set (m, value_ext); + } else if (EQ (attribute, Qtt_session)) - fun_str = tt_message_session_set; - else if (EQ (attribute, Qtt_status_string)) - fun_str = tt_message_status_string_set; + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_session_set (m, value_ext); + } else if (EQ (attribute, Qtt_arg_bval)) { Extbyte *value_ext; Extcount value_ext_len; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, - ALLOCA, (value_ext, value_ext_len), - Qnative); + GET_STRING_OS_DATA_ALLOCA (value, value_ext, value_ext_len); tt_message_arg_bval_set (m, n, value_ext, value_ext_len); } else if (EQ (attribute, Qtt_arg_ival)) @@ -771,9 +807,9 @@ } else if (EQ (attribute, Qtt_arg_val)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_message_arg_val_set (m, n, value_ext); } else if (EQ (attribute, Qtt_status)) @@ -781,6 +817,13 @@ CHECK_INT (value); tt_message_status_set (m, XINT (value)); } + else if (EQ (attribute, Qtt_status_string)) + { + CONST char *value_ext; + CHECK_STRING (value); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); + tt_message_status_string_set (m, value_ext); + } else if (EQ (attribute, Qtt_callback)) { CHECK_SYMBOL (value); @@ -793,15 +836,6 @@ else signal_simple_error ("Invalid value for `set-tooltalk-message-attribute'", attribute); - - if (fun_str) - { - const char *value_ext; - CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); - (*fun_str) (m, value_ext); - } - return Qnil; } @@ -912,15 +946,15 @@ if (!VALID_TOOLTALK_MESSAGEP (m)) return Qnil; { - const char *vtype_ext; + CONST char *vtype_ext; - TO_EXTERNAL_FORMAT (LISP_STRING, vtype, C_STRING_ALLOCA, vtype_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (vtype, vtype_ext); if (NILP (value)) tt_message_arg_add (m, n, vtype_ext, NULL); else if (STRINGP (value)) { - const char *value_ext; - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + CONST char *value_ext; + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_message_arg_add (m, n, vtype_ext, value_ext); } else if (INTP (value)) @@ -1023,30 +1057,30 @@ } else if (EQ (attribute, Qtt_file)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_file_add (p, value_ext); } else if (EQ (attribute, Qtt_object)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_object_add (p, value_ext); } else if (EQ (attribute, Qtt_op)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_op_add (p, value_ext); } else if (EQ (attribute, Qtt_otype)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_otype_add (p, value_ext); } else if (EQ (attribute, Qtt_scope)) @@ -1056,23 +1090,23 @@ } else if (EQ (attribute, Qtt_sender)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_sender_add (p, value_ext); } else if (EQ (attribute, Qtt_sender_ptype)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_sender_ptype_add (p, value_ext); } else if (EQ (attribute, Qtt_session)) { - const char *value_ext; + CONST char *value_ext; CHECK_STRING (value); - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_session_add (p, value_ext); } else if (EQ (attribute, Qtt_state)) @@ -1111,15 +1145,15 @@ return Qnil; { - const char *vtype_ext; + CONST char *vtype_ext; - TO_EXTERNAL_FORMAT (LISP_STRING, vtype, C_STRING_ALLOCA, vtype_ext, Qnative); + GET_C_STRING_OS_DATA_ALLOCA (vtype, vtype_ext); if (NILP (value)) tt_pattern_arg_add (p, n, vtype_ext, NULL); else if (STRINGP (value)) { - const char *value_ext; - TO_EXTERNAL_FORMAT (LISP_STRING, value, C_STRING_ALLOCA, value_ext, Qnative); + CONST char *value_ext; + GET_C_STRING_OS_DATA_ALLOCA (value, value_ext); tt_pattern_arg_add (p, n, vtype_ext, value_ext); } else if (INTP (value)) @@ -1222,28 +1256,7 @@ 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; @@ -1301,9 +1314,6 @@ void syms_of_tooltalk (void) { - INIT_LRECORD_IMPLEMENTATION (tooltalk_message); - INIT_LRECORD_IMPLEMENTATION (tooltalk_pattern); - defsymbol (&Qtooltalk_messagep, "tooltalk-message-p"); DEFSUBR (Ftooltalk_message_p); defsymbol (&Qtooltalk_patternp, "tooltalk-pattern-p");