Mercurial > hg > xemacs-beta
annotate tests/tooltalk/emacs-eval.c @ 5940:c608d4b0b75e cygwin64 tip
rescue lost branch from 64bit.backup
author | Henry Thompson <ht@markup.co.uk> |
---|---|
date | Thu, 16 Dec 2021 18:48:58 +0000 |
parents | 9fc91aa3a927 |
children |
rev | line source |
---|---|
5408
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
1 /* emacs-eval.c - send an s-expression to XEmacs for evaluation via ToolTalk |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
2 Copyright (C) 1995 Sun Microsystems, Inc |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
3 |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
4 Author: Vladimir Ivanovic <vladimir@Eng.Sun.COM> |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
5 |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
6 This file is part of XEmacs. |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
7 |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
8 XEmacs is free software: you can redistribute it and/or modify it |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
9 under the terms of the GNU General Public License as published by the |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
10 Free Software Foundation, either version 3 of the License, or (at your |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
11 option) any later version. |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
12 |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
16 for more details. |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
17 |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
18 You should have received a copy of the GNU General Public License |
9fc91aa3a927
Converted tooltalk to GPLv3 according to GPLv3 source survey analysis.
Mats Lidell <matsl@xemacs.org>
parents:
70
diff
changeset
|
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
70 | 20 |
21 /* See `tooltalk-eval-handler' in the file lisp/tooltalk/tooltalk-init.el for | |
22 the receiver side. */ | |
23 | |
24 #include <desktop/tt_c.h> | |
25 #include <stdio.h> | |
26 #include <stdlib.h> | |
27 #include <sys/wait.h> | |
28 | |
29 Tt_status tter; | |
30 | |
31 #define exit_err_ptr(ptr) \ | |
32 if ((tter = tt_ptr_error(ptr)) != TT_OK) \ | |
33 { fprintf(stderr, "%d:%s\n", __LINE__, tt_status_message(tter)); exit(1); } | |
34 | |
35 #define exit_err(stat) \ | |
36 if ((tter = stat) != TT_OK) \ | |
37 { fprintf(stderr, "%d:%s\n", __LINE__, tt_status_message(tter)); exit(1); } | |
38 | |
39 Tt_callback_action callback_fn(Tt_message msg, Tt_pattern pat); | |
40 static Tt_message create_new_message(char *s_expression); | |
41 static int initialize_tooltalk(void); | |
42 static void usage(void); | |
43 | |
44 static char* tt_procid; | |
45 | |
46 Tt_callback_action | |
47 callback_fn(Tt_message msg, Tt_pattern pat) | |
48 { | |
49 tt_message_destroy(msg); | |
50 return TT_CALLBACK_PROCESSED; | |
51 } | |
52 | |
53 static Tt_message | |
54 create_new_message(char *s_expression) | |
55 { | |
56 Tt_message msg; | |
57 | |
58 msg = tt_message_create(); | |
59 exit_err_ptr(msg); | |
60 | |
61 exit_err(tt_message_address_set (msg, TT_PROCEDURE)); | |
62 exit_err(tt_message_class_set (msg, TT_REQUEST)); | |
63 exit_err(tt_message_scope_set (msg, TT_SESSION)); | |
64 exit_err(tt_message_op_set (msg, "emacs-eval")); | |
65 exit_err(tt_message_arg_add (msg, TT_IN, "string", s_expression)); | |
66 exit_err(tt_message_callback_add(msg, callback_fn)); | |
67 | |
68 return msg; | |
69 } | |
70 | |
71 static int | |
72 initialize_tooltalk(void) { | |
73 int rcode; | |
74 | |
75 tt_procid = tt_open(); | |
76 if ((rcode = tt_ptr_error(tt_procid)) != TT_OK) { | |
77 return rcode; | |
78 } | |
79 | |
80 if ((rcode = tt_session_join(tt_default_session())) != TT_OK) { | |
81 return (rcode); | |
82 } | |
83 } | |
84 | |
85 | |
86 static void | |
87 usage(void) | |
88 { | |
89 fprintf(stderr, | |
90 "Usage: emacs-eval \"<s-expression>\"\n\n"); | |
91 } | |
92 | |
93 void | |
94 main(argc, argv) | |
95 int argc; | |
96 char *argv[]; | |
97 { | |
98 | |
99 Tt_message msg; | |
100 | |
101 if (argc != 2) { | |
102 usage(); | |
103 exit(0); | |
104 } | |
105 | |
106 exit_err(initialize_tooltalk()); | |
107 | |
108 msg = create_new_message(argv[1]); | |
109 | |
110 exit_err(tt_message_send(msg)); | |
111 | |
112 return; | |
113 } |