annotate src/event-tty.c @ 5518:3cc7470ea71c

gnuclient: if TMPDIR was set and connect failed, try again with /tmp 2011-06-03 Aidan Kehoe <kehoea@parhasard.net> * gnuslib.c (connect_to_unix_server): Retry with /tmp as a directory in which to search for Unix sockets if an attempt to connect with some other directory failed (which may be because gnuclient and gnuserv don't share an environment value for TMPDIR, or because gnuserv was compiled with USE_TMPDIR turned off).
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 03 Jun 2011 18:40:57 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* The event_stream interface for tty's.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 Copyright (C) 1995 Sun Microsystems, Inc.
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
4 Copyright (C) 1995, 2002, 2003 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
8 XEmacs is free software: you can redistribute it and/or modify it
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
10 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
11 option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 #include <config.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 #include "lisp.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #include "device.h"
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 853
diff changeset
27 #include "console-tty-impl.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #include "events.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 #include "frame.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 #include "process.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include "sysproc.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 #include "syswait.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 #include "systime.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 /* Mask of bits indicating the descriptors that we wait for input on */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 extern SELECT_TYPE input_wait_mask, non_fake_input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 extern SELECT_TYPE process_only_mask, tty_only_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 static struct event_stream *tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
42 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
43 extern int mswindows_is_blocking;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
44 #endif
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
45
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
46 static int last_quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
47
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 /* timeout events */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 /* The pending timers are stored in an ordered list, where the first timer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 on the list is the first one to fire. Times recorded here are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 absolute. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 static struct low_level_timeout *tty_timer_queue;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 static int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 emacs_tty_add_timeout (EMACS_TIME thyme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 return add_low_level_timeout (&tty_timer_queue, thyme);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 emacs_tty_remove_timeout (int id)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 remove_low_level_timeout (&tty_timer_queue, id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
71 tty_timeout_to_emacs_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 {
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
73 /* timeout events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
74 SET_EVENT_TYPE (emacs_event, timeout_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
75 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
76 SET_EVENT_TIMEOUT_INTERVAL_ID (emacs_event,
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
77 pop_low_level_timeout (&tty_timer_queue, 0));
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
78 SET_EVENT_TIMEOUT_FUNCTION (emacs_event, Qnil);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
79 SET_EVENT_TIMEOUT_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 static int
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
85 emacs_tty_event_pending_p (int how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 {
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
87 Lisp_Object event;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
88 int tick_count_val;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
89
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
90 /* Cf. the comments on emacs_Xt_event_pending_p in event-xlike-inc.c . */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
91
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
92 if (!how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 EMACS_TIME sometime;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
95
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
96 /* (1) Any pending events in the dispatch queue? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
97 if (!NILP(dispatch_event_queue))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
98 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
99 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
100 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
101
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
102 /* (2) Any TTY or process input available? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
103 if (poll_fds_for_input (non_fake_input_wait_mask))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
104 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
105
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
106 /* (3) Any timeout input available? */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 EMACS_GET_TIME (sometime);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 if (tty_timer_queue &&
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 EMACS_TIME_EQUAL_OR_GREATER (sometime, tty_timer_queue->time))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 return 1;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
111 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
112 else
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
113 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
114 /* HOW_MANY > 0 */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
115 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
116 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
117 if (command_event_p (event))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
118 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
119 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
120 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
121 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
122 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
123 }
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
124
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
127 tick_count_val = quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
128
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
129 /* Checking in_modal_loop here is a bit cargo-cultish, since its use is
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
130 specific to builds with a window system. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
131 if (!in_modal_loop &&
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
132 (last_quit_check_signal_tick_count != tick_count_val))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
133 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
134 last_quit_check_signal_tick_count = tick_count_val;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
135
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
136 /* We need to drain the entire queue now -- if we only drain part of
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
137 it, we may later on end up with events actually pending but
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
138 detect_input_pending() returning false because there wasn't
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
139 another SIGIO. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
140 event_stream_drain_queue ();
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
141
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
142 if (!how_many)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
143 return !NILP (dispatch_event_queue);
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
144
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
145 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
146 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
147 if (command_event_p (event))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
148 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
149 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
150 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
151 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
152 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
153 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
154 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
155
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
156 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
160 emacs_tty_next_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 while (1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 int ndesc;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 SELECT_TYPE temp_mask = input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 EMACS_TIME time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 EMACS_SELECT_TIME select_time_to_block, *pointer_to_this;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3541
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
170 if (!NILP (dispatch_event_queue))
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
171 {
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
172 Lisp_Object event, event2;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
173 event2 = wrap_event (emacs_event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
174 event = dequeue_dispatch_event ();
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
175 Fcopy_event (event, event2);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
176 Fdeallocate_event (event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
177 return;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
178 }
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
179
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 if (!get_low_level_timeout_interval (tty_timer_queue, &time_to_block))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 /* no timer events; block indefinitely */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 pointer_to_this = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 EMACS_TIME_TO_SELECT_TIME (time_to_block, select_time_to_block);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 pointer_to_this = &select_time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
189 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
190 mswindows_is_blocking = 1;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
191 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 ndesc = select (MAXDESC, &temp_mask, 0, 0, pointer_to_this);
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
193 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
194 mswindows_is_blocking = 0;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
195 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 if (ndesc > 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 /* Look for a TTY event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 /* To avoid race conditions (among other things, an infinite
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 loop when called from Fdiscard_input()), we must return
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 user events ahead of process events. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &tty_only_mask))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
206 struct console *c = find_tty_or_stream_console_from_fd (i);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 assert (c);
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 442
diff changeset
209 if (read_event_from_tty_or_stream_desc (emacs_event, c))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 /* Look for a process event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &process_only_mask))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 Lisp_Object process;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
220 Lisp_Process *p = get_process_from_usid (FD_TO_USID(i));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 assert (p);
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
223 process = wrap_process (p);
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
224 set_event_type (emacs_event, process_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
225 /* process events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
226 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
227 SET_EVENT_PROCESS_PROCESS (emacs_event, process);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 /* We might get here when a fake event came through a signal. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 /* Return a dummy event, so that a cycle of the command loop will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 occur. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 drain_signal_event_pipe ();
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
236 set_event_type (emacs_event, eval_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
237 /* eval events have nil as channel */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
238 SET_EVENT_EVAL_FUNCTION (emacs_event, Qidentity);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
239 SET_EVENT_EVAL_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 else if (ndesc == 0) /* timeout fired */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 tty_timeout_to_emacs_event (emacs_event);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
251 emacs_tty_format_magic_event (Lisp_Event *UNUSED (emacs_event),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
252 Lisp_Object UNUSED (pstream))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
253 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
254 /* Nothing to do currently */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
255 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
256
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
257 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
258 emacs_tty_compare_magic_event (Lisp_Event *UNUSED (e1),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
259 Lisp_Event *UNUSED (e2))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
260 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
261 return 1;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
262 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
263
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
264 static Hashcode
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
265 emacs_tty_hash_magic_event (Lisp_Event *UNUSED (e))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
266 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
267 return 0;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
268 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
269
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
270 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
271 emacs_tty_handle_magic_event (Lisp_Event *UNUSED (emacs_event))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 /* Nothing to do currently */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
278 emacs_tty_select_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
280 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
281
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
282 event_stream_unixoid_select_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
286 emacs_tty_unselect_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
288 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
289
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
290 event_stream_unixoid_unselect_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 emacs_tty_select_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 event_stream_unixoid_select_console (con);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 emacs_tty_unselect_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 event_stream_unixoid_unselect_console (con);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 static void
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
306 emacs_tty_drain_queue (void)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
308 drain_tty_devices ();
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
311 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
312 emacs_tty_create_io_streams (void* inhandle, void* outhandle,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
313 void *errhandle, Lisp_Object* instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
314 Lisp_Object* outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
315 Lisp_Object* errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
316 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
317 USID* err_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
318 int flags)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
320 event_stream_unixoid_create_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
321 (inhandle, outhandle, errhandle, instream, outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
322 errstream, in_usid, err_usid, flags);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
325 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
326 emacs_tty_delete_io_streams (Lisp_Object instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
327 Lisp_Object outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
328 Lisp_Object errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
329 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
330 USID* err_usid)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
332 event_stream_unixoid_delete_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
333 (instream, outstream, errstream, in_usid, err_usid);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 /* initialization */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 reinit_vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
344 tty_event_stream = xnew_and_zero (struct event_stream);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 tty_event_stream->event_pending_p = emacs_tty_event_pending_p;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 tty_event_stream->next_event_cb = emacs_tty_next_event;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 tty_event_stream->handle_magic_event_cb = emacs_tty_handle_magic_event;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
349 tty_event_stream->format_magic_event_cb = emacs_tty_format_magic_event;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
350 tty_event_stream->compare_magic_event_cb= emacs_tty_compare_magic_event;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
351 tty_event_stream->hash_magic_event_cb = emacs_tty_hash_magic_event;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 tty_event_stream->add_timeout_cb = emacs_tty_add_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 tty_event_stream->remove_timeout_cb = emacs_tty_remove_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 tty_event_stream->select_console_cb = emacs_tty_select_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 tty_event_stream->unselect_console_cb = emacs_tty_unselect_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 tty_event_stream->select_process_cb = emacs_tty_select_process;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 tty_event_stream->unselect_process_cb = emacs_tty_unselect_process;
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
358 tty_event_stream->drain_queue_cb = emacs_tty_drain_queue;
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
359 tty_event_stream->create_io_streams_cb = emacs_tty_create_io_streams;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
360 tty_event_stream->delete_io_streams_cb = emacs_tty_delete_io_streams;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
361
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
362 last_quit_check_signal_tick_count = 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 init_event_tty_late (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 event_stream = tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 }