annotate src/systty.h @ 1785:19755499df90

* window.c (window_internal_width): New function, which accounts for scrollbars if present. * lisp.h (window_internal_height, window_internal_width): Add extern declarations for these. * dispnew.c (direct_output_for_insert, direct_output_forward_char, buffer_posn_from_coords): Use window_internal_width instead of writing out its definition. * indent.c (compute_motion): Doc fix; mention scrollbars and window_internal_width. (pos_tab_offset, Fvertical_motion): Use window_internal_width instead of writing it out. * window.c (Fpos_visible_in_window_p, Fwindow_width, Fscroll_left, Fscroll_right): Same. * xdisp.c (redisplay, try_window, try_window_id, display_text_line): Same. * xdisp.c (display_string): Add new variable `f', to be W's frame. Use it to set desired_glyphs, and to get the frame's width to decide whether or not to draw vertical bars. * xdisp.c (display_text_line): If we're using vertical scrollbars, don't draw the vertical bars separating side-by-side windows. (display_string): Same thing. Draw spaces to fill in the part of the mode line that is under the scrollbar in partial-width windows. * xdisp.c (display_text_line): Use the usable internal width of the window, as calculated above, as the limit on the length of the overlay arrow's image, rather than using the window's width field, less one. * xdisp.c (redisplay): Call condemn_scrollbars_hook and judge_scrollbars_hook whenever they are set, not just when the frame has vertical scrollbars. * termhooks.h (mouse_position_hook): Doc fix. (set_vertical_scrollbar_hook): This doesn't return anything any more, and doesn't take a struct scrollbar * argument any more. (condemn_scrollbars_hook, redeem_scrollbar_hook, judge_scrollbars_hook): Doc fixes. * term.c (mouse_position_hook): Doc fix. (set_vertical_scrollbar_hook): This doesn't return anything any more. Doc fixes. * keyboard.c (kbd_buffer_get_event): Receive the scrollbar's window from *mouse_position_hook and pass it to make_lispy_movement, instead of working with a pointer to a struct scrollbar. (make_lispy_event): We don't need a window_from_scrollbar function anymore; we are given the window directly in *EVENT. Unify the code which generates text-area mouse clicks and scrollbar clicks; use the same code to distinguish clicks from drags on the scrollbar as in the text area. Distinguish clicks from drags by storing a copy of the lispy position list returned as part of the event. (button_down_location): Make this a lisp vector, rather than an array of random structures. (struct mouse_position): Remove this; it's been replaced by a lisp list. (make_lispy_movement): Accept the scrollbar's window as a parameter, rather than the scrollbar itself. If FRAME is zero, assume that the other arguments are garbage. (syms_of_keyboard): No need to staticpro each window of button_down_location now; just initialize and staticpro it. * window.c (window_from_scrollbar): Function deleted; no longer needed. * xdisp.c (redisplay_window): Just pass the window to set_vertical_scrollbar hook; don't pass the scrollbar object too. * xterm.c (XTmouse_position): Don't return a pointer to the scrollbar for scrollbar motion; instead, return the scrollbar's window. * xdisp.c (echo_area_display): Move the assignment of f and the check for visibility out of the "#ifdef MULTI_FRAME" clause; they should work under any circumstances. * xdisp.c (redisplay_window): If we're not going to redisplay this window because it's a minibuffer whose contents have already been updated, go ahead and jump to the scrollbar refreshing code anyway; they still need to be updated. Initialize opoint, so it's known to be valid when we jump. Calculate the scrollbar settings properly for minibuffers, no matter what they are displaying at the time. * xdisp.c (redisplay_windows): Don't restore the current buffer and its point before refreshing the scrollbars; we need the buffer accurate.
author Jim Blandy <jimb@redhat.com>
date Thu, 14 Jan 1993 15:18:53 +0000
parents 60566fdb3a25
children 8ca19160362b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1597
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
1 /* systty.h - System-dependent definitions for terminals.
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2 Copyright (C) 1992 Free Software Foundation, Inc.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 /* Include the proper files. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #ifdef HAVE_TERMIO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include <termio.h>
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include <fcntl.h>
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include <termio.h>
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include <termios.h>
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 #else /* neither HAVE_TERMIO nor HAVE_TERMIOS */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 #ifndef VMS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include <sgtty.h>
1597
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
32 #else /* VMS */
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
33 #include <descrip.h>
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
34 static struct iosb
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
35 {
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
36 short status;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
37 short offset;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
38 short termlen;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
39 short term;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
40 } input_iosb;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
41
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
42 extern int waiting_for_ast;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
43 extern int stop_input;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
44 extern int input_ef = 0;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
45 extern int timer_ef = 0;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
46 extern int process_ef = 0;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
47 extern int input_eflist;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
48 extern int timer_eflist;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
49
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
50 static $DESCRIPTOR (input_dsc, "TT");
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
51 static int terminator_mask[2] = { 0, 0 };
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
52
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
53 static struct sensemode {
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
54 short status;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
55 unsigned char xmit_baud;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
56 unsigned char rcv_baud;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
57 unsigned char crfill;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
58 unsigned char lffill;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
59 unsigned char parity;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
60 unsigned char unused;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
61 char class;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
62 char type;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
63 short scr_wid;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
64 unsigned long tt_char : 24, scr_len : 8;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
65 unsigned long tt2_char;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
66 } sensemode_iosb;
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
67 #endif /* VMS */
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 #endif /* not HAVE_TERMIOS */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 #endif /* not HAVE_TERMIO */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
71 #ifdef AIX
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
72 /* Get files for keyboard remapping */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
73 #define HFNKEYS 2
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
74 #include <sys/hft.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
75 #include <sys/devinfo.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
76 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
77
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
78 /* Get rid of LLITOUT in 4.1, since it is said to stimulate kernel bugs. */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
79 #ifdef BSD4_1
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
80 #undef LLITOUT
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
81 #define LLITOUT 0
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
82 #endif /* 4.1 */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
83
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
84 #ifdef NEED_BSDTTY
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
85 #include <sys/bsdtty.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
86 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
87
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
88 #if defined (HPUX) && defined (HAVE_PTYS)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
89 #include <sys/ptyio.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
90 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
91
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
92 #ifdef AIX
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
93 #include <sys/pty.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
94 #include <unistd.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
95 #endif /* AIX */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
96
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
97 #ifdef SYSV_PTYS
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
98 #include <sys/tty.h>
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
99 #ifdef titan
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
100 #include <sys/ttyhw.h>
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
101 #include <sys/stream.h>
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
102 #endif
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
103 #include <sys/pty.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
104 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
105
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
106 /* saka@pfu.fujitsu.co.JP writes:
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
107 FASYNC defined in this file. But, FASYNC don't working.
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
108 so no problem, because unrequest_sigio only need. */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
109 #if defined (pfa)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
110 #include <sys/file.h>
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
111 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
112
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 /* Special cases - inhibiting the use of certain features. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 #ifdef APOLLO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 #undef TIOCSTART
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
120 #ifdef XENIX
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
121 #undef TIOCGETC /* Avoid confusing some conditionals that test this. */
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
122 #endif
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
123
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 #ifdef BROKEN_TIOCGETC
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 #undef TIOCGETC /* Avoid confusing some conditionals that test this. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 /* UNIPLUS systems may have FIONREAD. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 #ifdef UNIPLUS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 #include <sys.ioctl.h>
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 /* Allow m- file to inhibit use of FIONREAD. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 #ifdef BROKEN_FIONREAD
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 #undef FIONREAD
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 #undef ASYNC
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 /* Interupt input is not used if there is no FIONREAD. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 #ifndef FIONREAD
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 #undef SIGIO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144
1101
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
145 /* Try to establish the correct character to disable terminal functions
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
146 in a system-independent manner. Note that USG (at least) define
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
147 _POSIX_VDISABLE as 0! */
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
148
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
149 #ifdef _POSIX_VDISABLE
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
150 #define CDISABLE _POSIX_VDISABLE
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
151 #else /* not _POSIX_VDISABLE */
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
152 #ifdef CDEL
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
153 #define CDISABLE CDEL
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
154 #else /* not CDEL */
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
155 #define CDISABLE 255
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
156 #endif /* not CDEL */
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
157 #endif /* not _POSIX_VDISABLE */
3e06965680fd entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1039
diff changeset
158
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 /* Get the number of characters queued for output. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 /* EMACS_OUTQSIZE(FD, int *SIZE) stores the number of characters
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 queued for output to the terminal FD in *SIZE, if FD is a tty.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 Returns -1 if there was an error (i.e. FD is not a tty), 0
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 otherwise. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 #ifdef TIOCOUTQ
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 #define EMACS_OUTQSIZE(fd, size) (ioctl ((fd), TIOCOUTQ, (size)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 #ifdef HAVE_TERMIO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 #ifdef TCOUTQ
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 #undef EMACS_OUTQSIZE
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 #define EMACS_OUTQSIZE(fd, size) (ioctl ((fd), TCOUTQ, (size)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 /* Manipulate a terminal's current process group. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 /* EMACS_HAVE_TTY_PGRP is true if we can get and set the tty's current
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 controlling process group.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 EMACS_GET_TTY_PGRP(int FD, int *PGID) sets *PGID the terminal FD's
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 current process group. Return -1 if there is an error.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 EMACS_SET_TTY_PGRP(int FD, int *PGID) sets the terminal FD's
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 current process group to *PGID. Return -1 if there is an error. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
188 #ifdef HPUX
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
189 /* HPUX tty process group stuff doesn't work, says the anonymous voice
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
190 from the past. */
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
191 #else
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 #ifdef TIOCGPGRP
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 #define EMACS_HAVE_TTY_PGRP
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 #define EMACS_HAVE_TTY_PGRP
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 #endif
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
199 #endif
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 #ifdef EMACS_HAVE_TTY_PGRP
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 #define EMACS_GET_TTY_PGRP(fd, pgid) (*(pgid) = tcgetpgrp ((fd)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 #define EMACS_SET_TTY_PGRP(fd, pgid) (*(pgid) = tcsetpgrp ((fd)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 #ifdef TIOCSPGRP
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 #define EMACS_GET_TTY_PGRP(fd, pgid) (ioctl ((fd), TIOCGPGRP, (pgid)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 #define EMACS_SET_TTY_PGRP(fd, pgid) (ioctl ((fd), TIOCSPGRP, (pgid)))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 /* Just ignore this for now and hope for the best */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 #define EMACS_GET_TTY_PGRP(fd, pgid) 0
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 648
diff changeset
221 #define EMACS_SET_TTY_PGRP(fd, pgif) 0
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 /* Manipulate a TTY's input/output processing parameters. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 /* struct emacs_tty is a structure used to hold the current tty
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 parameters. If the terminal has several structures describing its
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 state, for example a struct tchars, a struct sgttyb, a struct
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 tchars, a struct ltchars, and a struct pagechars, struct
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 emacs_tty should contain an element for each parameter struct
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 that Emacs may change.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 EMACS_GET_TTY (int FD, struct emacs_tty *P) stores the
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 parameters of the tty on FD in *P.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 EMACS_SET_TTY (int FD, struct emacs_tty *P, int waitp)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 sets the parameters of the tty on FD according to the contents of
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 *P. If waitp is non-zero, we wait for all queued output to be
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 written before making the change; otherwise, we forget any queued
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 input and make the change immediately.
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 EMACS_TTY_TABS_OK (struct emacs_tty *P) is false iff the kernel
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 expands tabs to spaces upon output; in that case, there is no
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 advantage to using tabs over spaces. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 /* For each tty parameter structure that Emacs might want to save and restore,
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 - include an element for it in this structure,
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 - define a pair of numbered macros to get and set it and return
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 true iff the call succeeded,
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 - give alternative definitions for when the component is not implemented
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 which always succeed, and
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 - extend the definition of EMACS_{GET,SET}_TTY_CHARS to include the
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 new macros. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 struct emacs_tty {
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 /* There is always one of the following elements, so there is no need
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 for dummy get and set definitions. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 struct termios main;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 #ifdef HAVE_TERMIO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 struct termio main;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 #ifdef VMS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 struct sensemode main;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 struct sgttyb main;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 #define HAVE_TCATTR
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 #ifdef HAVE_TCATTR
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 #define EMACS_GET_TTY_1(fd, p) (tcgetattr ((fd), &(p)->main) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 #define EMACS_SET_TTY_1(fd, p, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 (tcsetattr ((fd), (waitp) ? TCSAFLUSH : TCSADRAIN, &(p)->main) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 #else
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
288 #ifdef HAVE_TERMIO
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
289
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
290 #define EMACS_GET_TTY_1(fd, p) (ioctl ((fd), TCGETA, &(p)->main) != -1)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
291 #define EMACS_SET_TTY_1(fd, p, waitp) \
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
292 (ioctl ((fd), (waitp) ? TCSETAW : TCSETAF, &(p)->main) != -1)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
293
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
294 #else
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 #ifdef VMS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 /* These definitions will really only work in sysdep.c, because of their
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 use of input_iosb. I don't know enough about VMS QIO to fix this. */
1597
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
299 #define EMACS_GET_TTY_1(fd, p) \
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
300 (1 & SYS$QIOW (0, (fd), IO$_SENSEMODE, (p), 0, 0, \
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
301 &(p)->main.class, 12, 0, 0, 0, 0))
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
302 #define EMACS_SET_TTY_1(fd, p, waitp) \
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
303 (1 & SYS$QIOW (0, (fd), IO$_SETMODE, &input_iosb, 0, 0, \
60566fdb3a25 * systty.h: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1101
diff changeset
304 &(p)->main.class, 12, 0, 0, 0, 0))
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 #define EMACS_GET_TTY_1(fd, p) (ioctl ((fd), TIOCGETP, &(p)->main) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 #define EMACS_SET_TTY_1(fd, p, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 (ioctl ((fd), (waitp) ? TIOCSETP : TIOCSETN, &(p)->main) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 #endif
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 #endif
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 578
diff changeset
314 #endif
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 #ifdef TIOCGLTC
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 struct ltchars ltchars;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 #define EMACS_GET_TTY_2(fd, p) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 (ioctl ((fd), TIOCGLTC, &(p)->ltchars) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 #define EMACS_SET_TTY_2(fd, p, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 (ioctl ((fd), TIOCSLTC, &(p)->ltchars) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 #define EMACS_GET_TTY_2(fd, p) 1
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 #define EMACS_SET_TTY_2(fd, p, waitp) 1
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 #endif /* TIOCGLTC */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 #ifdef TIOCGETC
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 struct tchars tchars;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 int lmode;
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 #define EMACS_GET_TTY_3(fd, p) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 (ioctl ((fd), TIOCGETC, &(p)->tchars) != -1 \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 && ioctl ((fd), TIOCLGET, &(p)->lmode) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 #define EMACS_SET_TTY_3(fd, p, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 (ioctl ((fd), TIOCSETC, &(p)->tchars) != -1 \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 && ioctl ((fd), TIOCLSET, &(p)->lmode) != -1)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 #define EMACS_GET_TTY_3(fd, p) 1
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 #define EMACS_SET_TTY_3(fd, p, waitp) 1
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 #endif /* TIOCGLTC */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 };
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
1039
8ab465f7a7ff *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 999
diff changeset
343 /* Define these to be a concatenation of all the EMACS_{GET,SET}_TTY_n
578
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 macros. */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 #define EMACS_GET_TTY(fd, tc) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 (EMACS_GET_TTY_1 (fd, tc) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 && EMACS_GET_TTY_2 (fd, tc) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 && EMACS_GET_TTY_3 (fd, tc))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 #define EMACS_SET_TTY(fd, tc, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 (EMACS_SET_TTY_1 (fd, tc, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 && EMACS_SET_TTY_2 (fd, tc, waitp) \
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 && EMACS_SET_TTY_3 (fd, tc, waitp))
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 #ifdef HAVE_TERMIOS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 #define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & TABDLY) != TAB3)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 #else /* not def HAVE_TERMIOS */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 #ifdef HAVE_TERMIO
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 #define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & TABDLY) != TAB3)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 #else /* neither HAVE_TERMIO nor HAVE_TERMIOS */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 #ifdef VMS
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 #define EMACS_TTY_TABS_OK(p) (((p)->main.tt_char & TT$M_MECHTAB) != 0)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 #else
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 #define EMACS_TTY_TABS_OK(p) (((p)->main.sg_flags & XTABS) != XTABS)
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 #endif /* not def VMS */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 #endif /* not def HAVE_TERMIO */
a4591b4d5435 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 #endif /* not def HAVE_TERMIOS */