annotate src/systty.h @ 5887:6eca500211f4

Prototype for X509_check_host() has changed, detect this in configure.ac ChangeLog addition: 2015-04-09 Aidan Kehoe <kehoea@parhasard.net> * configure.ac: If X509_check_host() is available, check the number of arguments it takes. Don't use it if it takes any number of arguments other than five. Also don't use it if <openssl/x509v3.h> does not declare it, since if that is so there is no portable way to tell how many arguments it should take, and so we would end up smashing the stack. * configure: Regenerate. src/ChangeLog addition: 2015-04-09 Aidan Kehoe <kehoea@parhasard.net> * tls.c: #include <openssl/x509v3.h> for its prototype for X509_check_host(). * tls.c (tls_open): Pass the new fifth argument to X509_check_host().
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 09 Apr 2015 14:27:02 +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 /* systty.h - System-dependent definitions for terminals.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4759
diff changeset
6 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
7 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: 4759
diff changeset
8 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: 4759
diff changeset
9 option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 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
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 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: 4759
diff changeset
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 /* Synched up with: FSF 19.30. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
21 #ifndef INCLUDED_systty_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
22 #define INCLUDED_systty_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 #ifdef HAVE_TERMIOS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 # define HAVE_TCATTR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 /* Include the proper files. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 #ifdef HAVE_UNISTD_H
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include <unistd.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 /* XEmacs: TERMIOS is mo' better than TERMIO so we use it if it's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 there. Since TERMIO is backward-compatibility stuff if both it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 and TERMIOS exist, it's more likely to be broken. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 #if defined (HAVE_TERMIOS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 /***** (1) The TERMIOS way (POSIX style) *****/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 # if defined (_AIX) && defined (_I386)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 # include <termios.h> /* termios.h needs to be before termio.h */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 # if !defined (NO_TERMIO)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 # include <termios.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 # endif /* _AIX && _I386 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 # ifndef INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 # define INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 # include <fcntl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 #elif defined (HAVE_TERMIO)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 /***** (2) The TERMIO way (system V style) *****/
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 # ifndef NO_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 # endif /* not NO_TERMIO */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 # ifndef INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 # define INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 # include <fcntl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
69 #elif defined (WIN32_NATIVE)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
71 /***** (3) The WIN32_NATIVE way *****/
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 /* Nothing doing */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 /***** (4) The BSD way *****/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 # ifdef linux /* XEmacs addition -- necessary? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 # include <bsd/sgtty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 # include <sgtty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 #endif /* HAVE_TERMIOS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 /* XEmacs: I don't think we need the following crap. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 #ifdef __GNU_LIBRARY__
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 #include <termios.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 /* Formerly there was a conditional that included sys/filio.h if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 USG5_4 was defined, but this is already included in s/usg5-4.h */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 /* Generally useful to include this file: */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97
4759
aa5ed11f473b Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 771
diff changeset
98 #if !defined (WIN32_NATIVE)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 # include <sys/ioctl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 /* miscellaneous includes */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 /* Include files for PTY's */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108
535
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
109 #if defined (HAVE_SYS_PTYIO_H) /* HP-UX */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 #include <sys/ptyio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112
535
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
113 #if defined (HAVE_PTY_H)
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
114 #include <pty.h>
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
115 #elif defined (HAVE_SYS_PTY_H)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 #include <sys/pty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 /* XEmacs: removed some random if defined (pfa) crap for FASYNC (SIGIO).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 We've cleaned SIGIO up. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 /* inhibiting particular features */
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127
4759
aa5ed11f473b Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 771
diff changeset
128 #if defined (BROKEN_TIOCGETC)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 #undef TIOCGETC /* Avoid confusing some conditionals that test this. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 /* XEmacs: SIGIO is cleaned up so we remove the crap here that messes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 with it (and FIONREAD and FASYNC, which are related). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 /* On TERMIOS systems, the tcmumbleattr calls take care of these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 parameters, and it's a bad idea to use them (on AIX, it makes the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 tty hang for a long time). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 #if defined (TIOCGLTC) && !defined (HAVE_TERMIOS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 #define HAVE_LTCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 #if defined (TIOCGETC) && !defined (HAVE_TERMIOS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 #define HAVE_TCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 /* disabling terminal functions */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 /* Try to establish the correct character to disable terminal functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 in a system-independent manner.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 We use the POSIX standard way to do this, and emulate on other systems. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 #ifndef _POSIX_VDISABLE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 # if defined CDEL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 # define _POSIX_VDISABLE CDEL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 # define _POSIX_VDISABLE 255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 #endif /* ! _POSIX_VDISABLE */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162
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 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 /* Get the number of characters queued for output */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 /* EMACS_OUTQSIZE(FD, int *SIZE) stores the number of characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 queued for output to the terminal FD in *SIZE, if FD is a tty.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 Returns -1 if there was an error (i.e. FD is not a tty), 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 otherwise. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 #ifdef TIOCOUTQ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 #define EMACS_OUTQSIZE(fd, size) ioctl (fd, TIOCOUTQ, size)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 #ifdef HAVE_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 #ifdef TCOUTQ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 #undef EMACS_OUTQSIZE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 #define EMACS_OUTQSIZE(fd, size) ioctl (fd, TCOUTQ, size)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183
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 /* Manipulate a terminal's current (foreground) process group */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 /* -------------------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
188 /* EMACS_GET_TTY_PGRP(int FD, pid_t *PGID) sets *PGID to the terminal
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
189 FD's current foreground process group. Return -1 if there is an error.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
190
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
191 EMACS_SET_TTY_PGRP(int FD, pid_t *PGID) sets the terminal FD's current
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
192 foreground process group to *PGID. Return -1 if there is an error.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
194 We prefer using the ioctl (BSD) interface instead of its Posix
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
195 replacement tgetpgrp/tcsetpgrp since that is documented as being
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
196 restricted to processes sharing the same controlling tty. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
198 #if defined (TIOCGPGRP)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
200 #define EMACS_GET_TTY_PROCESS_GROUP(fd, pgid) ioctl (fd, TIOCGPGRP, pgid)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
201 #define EMACS_SET_TTY_PROCESS_GROUP(fd, pgid) ioctl (fd, TIOCSPGRP, pgid)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
202
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
203 #elif defined (HAVE_TCGETPGRP)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
205 #define EMACS_GET_TTY_PROCESS_GROUP(fd, pgid) (*(pgid) = tcgetpgrp (fd))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
206 #define EMACS_SET_TTY_PROCESS_GROUP(fd, pgid) tcsetpgrp (fd, *(pgid))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
208 #else
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
210 /* Just ignore this for now and hope for the best */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
211 #define EMACS_GET_TTY_PROCESS_GROUP(fd, pgid) 0
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
212 #define EMACS_SET_TTY_PROCESS_GROUP(fd, pgif) 0
428
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 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 /* EMACS_GETPGRP (arg) returns the process group of the terminal. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 #ifdef GETPGRP_VOID
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 #define EMACS_GETPGRP(x) getpgrp()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 #define EMACS_GETPGRP(x) getpgrp(x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 #endif /* GETPGRP_VOID */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 /* XEmacs backward-compatibility. Is 0 always a reasonable argument? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 #define EMACS_GET_PROCESS_GROUP() EMACS_GETPGRP (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 /* XEmacs addition? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 /* EMACS_SEPARATE_PROCESS_GROUP () creates a separate process group for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 running process. */
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 /* EMACS_SET_PROCESS_GROUP () sets our process group as specified. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 /* POSIX calls for setpgid(), so we use it if it's available.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 Otherwise use setpgrp(), in USG or BSD flavor. Note that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 on newer systems, setpgrp() has unwanted effects (e.g.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 creating a new session), so we want to avoid its use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 if possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 NOTE: On some older systems, we should consider using setpgrp2()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 if it exists. This is sufficiently rare, though, that there
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 seems no point in autodetecting it. Currently dgux.h is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 only place where this has to be munged. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 #if defined (HAVE_SETPGID)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 # define EMACS_SEPARATE_PROCESS_GROUP() setpgid (0, 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 # define EMACS_SET_PROCESS_GROUP(pg) setpgid (0, pg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 #elif defined (USG)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 # define EMACS_SEPARATE_PROCESS_GROUP() setpgrp ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 /* old (pre-SVR4) USG's don't provide any way to do this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 No big loss -- it just means that ^Z won't work right
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 if we're run from sh. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 # define EMACS_SET_PROCESS_GROUP(pg)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 535
diff changeset
254 #elif defined (WIN32_NATIVE)
432
3a7e78e1142d Import from CVS: tag r21-2-24
cvs
parents: 430
diff changeset
255 # define EMACS_SEPARATE_PROCESS_GROUP()
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 /* Under NeXTstep, a process group of 0 is not the same as specifying
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 your own process ID, so we go ahead and specify it explicitly. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 # define EMACS_SEPARATE_PROCESS_GROUP() setpgrp (0, getpid ())
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 # define EMACS_SET_PROCESS_GROUP(pg) setpgrp (0, pg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 /* Manipulate a TTY's input/output processing parameters */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 /* struct emacs_tty is a structure used to hold the current tty
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 parameters. If the terminal has several structures describing its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 state, for example a struct tchars, a struct sgttyb, a struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 tchars, a struct ltchars, and a struct pagechars, struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 emacs_tty should contain an element for each parameter struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 that Emacs may change.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
275 emacs_get_tty (int FD, struct emacs_tty *P) stores the parameters
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 of the tty on FD in *P. Return zero if all's well, or -1 if we ran
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 into an error we couldn't deal with.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
279 emacs_set_tty (int FD, struct emacs_tty *P, int flushp)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 sets the parameters of the tty on FD according to the contents of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 *P. If flushp is non-zero, we discard queued input to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 written before making the change.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 Return 0 if all went well, and -1 if anything failed.
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 EMACS_TTY_TABS_OK (struct emacs_tty *P) is false iff the kernel
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 expands tabs to spaces upon output; in that case, there is no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 advantage to using tabs over spaces. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 /* For each tty parameter structure that Emacs might want to save and restore,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 - include an element for it in this structure, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 - extend the emacs_{get,set}_tty functions in sysdep.c to deal with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 new members. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 struct emacs_tty {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 /* There is always one of the following elements, so there is no need
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 for dummy get and set definitions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 #ifdef HAVE_TCATTR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 struct termios main;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 #else /* !HAVE_TCATTR */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 #ifdef HAVE_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 struct termio main;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 #else /* !HAVE_TERMIO */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
305 #ifdef WIN32_NATIVE
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 int main;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
307 #else /* not WIN32_NATIVE */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 struct sgttyb main;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
309 #endif /* not WIN32_NATIVE */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 #endif /* !HAVE_TERMIO */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 #endif /* !HAVE_TCATTR */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 /* If we have TERMIOS, we don't need to do this - they're taken care of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 by the tc*attr calls. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 #ifndef HAVE_TERMIOS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 #ifdef HAVE_LTCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 struct ltchars ltchars;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 #endif /* HAVE_LTCHARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 #ifdef HAVE_TCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 struct tchars tchars;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 int lmode;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 #endif /* HAVE_TCHARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 #endif /* HAVE_TERMIOS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
327 int emacs_get_tty (int fd, struct emacs_tty *settings);
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
328 int emacs_set_tty (int fd, struct emacs_tty *settings, int flushp);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 /* Define EMACS_TTY_TABS_OK */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334
513
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
335 #if defined (TABDLY) && defined (TAB3)
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
336 # define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & TABDLY) != TAB3)
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
337 #elif defined (OXTABS)
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
338 # define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & OXTABS) != OXTABS)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 #else
513
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
340 # define EMACS_TTY_TABS_OK(p) 1
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
341 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
343 #endif /* INCLUDED_systty_h_ */