annotate src/systty.h @ 4539:061e030e3270

Fix some bugs in load-history construction, built-in symbol file names. lib-src/ChangeLog addition: 2008-12-27 Aidan Kehoe <kehoea@parhasard.net> * make-docfile.c (main): Allow more than one -d argument, followed by a directory to change to. (put_filename): Don't strip directory information; with previous change, allows retrieval of Lisp function and variable origin files from #'built-in-symbol-file relative to lisp-directory. (scan_lisp_file): Don't add an extraneous newline after the file name, put_filename has added the newline already. lisp/ChangeLog addition: 2008-12-27 Aidan Kehoe <kehoea@parhasard.net> * loadup.el (load-history): Add the contents of current-load-list to load-history before clearing it. Move the variable declarations earlier in the file to a format understood by make-docfile.c. * custom.el (custom-declare-variable): Add the variable's symbol to the current file's load history entry correctly, don't use a cons. Eliminate a comment that we don't need to worry about, we don't need to check the `initialized' C variable in Lisp. * bytecomp.el (byte-compile-output-file-form): Merge Andreas Schwab's pre-GPLv3 GNU change of 19970831 here; treat #'custom-declare-variable correctly, generating the docstrings in a format understood by make-docfile.c. * loadhist.el (symbol-file): Correct behaviour for checking autoloaded macros and functions when supplied with a TYPE argument. Accept fully-qualified paths from #'built-in-symbol-file; if a path is not fully-qualified, return it relative to lisp-directory if the filename corresponds to a Lisp file, and relative to (concat source-directory "/src/") otherwise. * make-docfile.el (preloaded-file-list): Rationalise some let bindings a little. Use the "-d" argument to make-docfile.c to supply Lisp paths relative to lisp-directory, not absolutely. Add in loadup.el explicitly to the list of files to be processed by make-docfile.c--it doesn't make sense to add it to preloaded-file-list, since that is used for purposes of byte-compilation too. src/ChangeLog addition: 2008-12-27 Aidan Kehoe <kehoea@parhasard.net> * doc.c (Fbuilt_in_symbol_file): Return a subr's filename immediately if we've found it. Check for compiled function and compiled macro docstrings in DOC too, and return them if they exist. The branch of the if statement focused on functions may have executed, but we may still want to check variable bindings; an else clause isn't appropriate.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 27 Dec 2008 14:05:50 +0000
parents 943eaba38521
children aa5ed11f473b
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 later version.
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
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: FSF 19.30. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
23 #ifndef INCLUDED_systty_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
24 #define INCLUDED_systty_h_
428
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 #ifdef HAVE_TERMIOS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 # define HAVE_TCATTR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
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 /* Include the proper files. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 #ifdef HAVE_UNISTD_H
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 #include <unistd.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 /* 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
38 there. Since TERMIO is backward-compatibility stuff if both it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 and TERMIOS exist, it's more likely to be broken. */
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 #if defined (HAVE_TERMIOS)
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 /***** (1) The TERMIOS way (POSIX style) *****/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 # if defined (_AIX) && defined (_I386)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 # include <termios.h> /* termios.h needs to be before termio.h */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 # if !defined (NO_TERMIO)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 # include <termios.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 # endif /* _AIX && _I386 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 # ifndef INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 # define INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 # include <fcntl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 # endif
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 #elif defined (HAVE_TERMIO)
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 /***** (2) The TERMIO way (system V style) *****/
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 # ifdef __DGUX
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 # include <sys/ioctl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 # ifndef NO_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 # include <termio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 # endif /* not NO_TERMIO */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 # ifndef INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 # define INCLUDED_FCNTL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 # include <fcntl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
74 #elif defined (WIN32_NATIVE)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
76 /***** (3) The WIN32_NATIVE way *****/
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 /* Nothing doing */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 #else
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 /***** (4) The BSD way *****/
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 # ifdef linux /* XEmacs addition -- necessary? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 # include <bsd/sgtty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 # include <sgtty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 #endif /* HAVE_TERMIOS */
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 /* XEmacs: I don't think we need the following crap. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 #ifdef __GNU_LIBRARY__
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 #include <termios.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 /* Formerly there was a conditional that included sys/filio.h if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 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
100
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 /* Generally useful to include this file: */
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 /* But Sun OS has broken include files and doesn't want it included */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
104 #if !defined (WIN32_NATIVE) && !defined (SUNOS4)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 # include <sys/ioctl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 /* UNIPLUS systems may have FIONREAD. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 #ifdef UNIPLUS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 #include <sys.ioctl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 /* miscellaneous includes */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116
535
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
117 #ifdef AIXHFT /* obsolete - only found in AIX version 3. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 /* Get files for keyboard remapping */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 #define HFNKEYS 2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 #include <sys/hft.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 #include <sys/devinfo.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 #endif
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 /* Include files for PTY's */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125
535
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
126 #if defined (HAVE_SYS_PTYIO_H) /* HP-UX */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 #include <sys/ptyio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129
535
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
130 #if defined (HAVE_PTY_H)
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
131 #include <pty.h>
c69610198c35 [xemacs-hg @ 2001-05-14 04:52:02 by martinb]
martinb
parents: 513
diff changeset
132 #elif defined (HAVE_SYS_PTY_H)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 #include <sys/pty.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 /* XEmacs: removed some random if defined (pfa) crap for FASYNC (SIGIO).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 We've cleaned SIGIO up. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 /* inhibiting particular features */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 #if defined (XENIX) || defined (BROKEN_TIOCGETC)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 #undef TIOCGETC /* Avoid confusing some conditionals that test this. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 /* 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
150 with it (and FIONREAD and FASYNC, which are related). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 #ifdef BROKEN_TIOCGWINSZ /* XEmacs addition */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 #undef TIOCGWINSZ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 #undef TIOCSWINSZ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 /* On TERMIOS systems, the tcmumbleattr calls take care of these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 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
159 tty hang for a long time). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 #if defined (TIOCGLTC) && !defined (HAVE_TERMIOS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 #define HAVE_LTCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 #endif
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 #if defined (TIOCGETC) && !defined (HAVE_TERMIOS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 #define HAVE_TCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 #endif
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 /* disabling terminal functions */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 /* Try to establish the correct character to disable terminal functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 in a system-independent manner.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 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
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 #ifndef _POSIX_VDISABLE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 # if defined CDEL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 # define _POSIX_VDISABLE CDEL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 # define _POSIX_VDISABLE 255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 #endif /* ! _POSIX_VDISABLE */
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
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 /* Get the number of characters queued for output */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 /* ----------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 /* EMACS_OUTQSIZE(FD, int *SIZE) stores the number of characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 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
192 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
193 otherwise. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 #ifdef TIOCOUTQ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 #define EMACS_OUTQSIZE(fd, size) ioctl (fd, TIOCOUTQ, size)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 #endif
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 #ifdef HAVE_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 #ifdef TCOUTQ
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 #undef EMACS_OUTQSIZE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 #define EMACS_OUTQSIZE(fd, size) ioctl (fd, TCOUTQ, size)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 /* -------------------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 /* Manipulate a terminal's current (foreground) process group */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 /* -------------------------------------------------------------------- */
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 /* 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
211 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
212
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
213 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
214 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
215
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
216 We prefer using the ioctl (BSD) interface instead of its Posix
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
217 replacement tgetpgrp/tcsetpgrp since that is documented as being
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
218 restricted to processes sharing the same controlling tty. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
220 #if defined (TIOCGPGRP)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
222 #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
223 #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
224
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
225 #elif defined (HAVE_TCGETPGRP)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
227 #define EMACS_GET_TTY_PROCESS_GROUP(fd, pgid) (*(pgid) = tcgetpgrp (fd))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
228 #define EMACS_SET_TTY_PROCESS_GROUP(fd, pgid) tcsetpgrp (fd, *(pgid))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
230 #else
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
232 /* Just ignore this for now and hope for the best */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
233 #define EMACS_GET_TTY_PROCESS_GROUP(fd, pgid) 0
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
234 #define EMACS_SET_TTY_PROCESS_GROUP(fd, pgif) 0
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 /* EMACS_GETPGRP (arg) returns the process group of the terminal. */
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 #ifdef GETPGRP_VOID
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 #define EMACS_GETPGRP(x) getpgrp()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 #define EMACS_GETPGRP(x) getpgrp(x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 #endif /* GETPGRP_VOID */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 /* XEmacs backward-compatibility. Is 0 always a reasonable argument? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 #define EMACS_GET_PROCESS_GROUP() EMACS_GETPGRP (0)
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 /* XEmacs addition? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 /* EMACS_SEPARATE_PROCESS_GROUP () creates a separate process group for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 running process. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 /* EMACS_SET_PROCESS_GROUP () sets our process group as specified. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 /* POSIX calls for setpgid(), so we use it if it's available.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 Otherwise use setpgrp(), in USG or BSD flavor. Note that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 on newer systems, setpgrp() has unwanted effects (e.g.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 creating a new session), so we want to avoid its use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 if possible.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 NOTE: On some older systems, we should consider using setpgrp2()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 if it exists. This is sufficiently rare, though, that there
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 seems no point in autodetecting it. Currently dgux.h is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 only place where this has to be munged. */
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 #if defined (HAVE_SETPGID)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 # define EMACS_SEPARATE_PROCESS_GROUP() setpgid (0, 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 # define EMACS_SET_PROCESS_GROUP(pg) setpgid (0, pg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 #elif defined (USG)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 # define EMACS_SEPARATE_PROCESS_GROUP() setpgrp ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 /* 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
273 No big loss -- it just means that ^Z won't work right
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 if we're run from sh. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 # define EMACS_SET_PROCESS_GROUP(pg)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 535
diff changeset
276 #elif defined (WIN32_NATIVE)
432
3a7e78e1142d Import from CVS: tag r21-2-24
cvs
parents: 430
diff changeset
277 # define EMACS_SEPARATE_PROCESS_GROUP()
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 /* 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
280 your own process ID, so we go ahead and specify it explicitly. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 # define EMACS_SEPARATE_PROCESS_GROUP() setpgrp (0, getpid ())
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 # define EMACS_SET_PROCESS_GROUP(pg) setpgrp (0, pg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 #endif
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 /* Manipulate a TTY's input/output processing parameters */
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 /* struct emacs_tty is a structure used to hold the current tty
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 parameters. If the terminal has several structures describing its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 state, for example a struct tchars, a struct sgttyb, a struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 tchars, a struct ltchars, and a struct pagechars, struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 emacs_tty should contain an element for each parameter struct
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 that Emacs may change.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
297 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
298 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
299 into an error we couldn't deal with.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
301 emacs_set_tty (int FD, struct emacs_tty *P, int flushp)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 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
303 *P. If flushp is non-zero, we discard queued input to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 written before making the change.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 Return 0 if all went well, and -1 if anything failed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 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
308 expands tabs to spaces upon output; in that case, there is no
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 advantage to using tabs over spaces. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 /* 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
313 - include an element for it in this structure, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 - 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
315 new members. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 struct emacs_tty {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 /* 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
320 for dummy get and set definitions. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 #ifdef HAVE_TCATTR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 struct termios main;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 #else /* !HAVE_TCATTR */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 #ifdef HAVE_TERMIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 struct termio main;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 #else /* !HAVE_TERMIO */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
327 #ifdef WIN32_NATIVE
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 int main;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
329 #else /* not WIN32_NATIVE */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 struct sgttyb main;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
331 #endif /* not WIN32_NATIVE */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 #endif /* !HAVE_TERMIO */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 #endif /* !HAVE_TCATTR */
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 /* 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
336 by the tc*attr calls. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 #ifndef HAVE_TERMIOS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 #ifdef HAVE_LTCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 struct ltchars ltchars;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 #endif /* HAVE_LTCHARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 #ifdef HAVE_TCHARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 struct tchars tchars;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 int lmode;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 #endif /* HAVE_TCHARS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 #endif /* HAVE_TERMIOS */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348
430
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
349 int emacs_get_tty (int fd, struct emacs_tty *settings);
a5df635868b2 Import from CVS: tag r21-2-23
cvs
parents: 428
diff changeset
350 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
351
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 /* Define EMACS_TTY_TABS_OK */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 /* --------------------------------------------------------- */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356
513
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
357 #if defined (TABDLY) && defined (TAB3)
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
358 # 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
359 #elif defined (OXTABS)
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
360 # 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
361 #else
513
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
362 # define EMACS_TTY_TABS_OK(p) 1
e159a0b4bed4 [xemacs-hg @ 2001-05-07 07:49:18 by martinb]
martinb
parents: 442
diff changeset
363 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
365 #endif /* INCLUDED_systty_h_ */