xref: /dflybsd-src/contrib/libedit/src/tty.h (revision 32fe07f89d87adfc65eebe9f2812a999af20d10f)
1*32fe07f8SJohn Marino /*	$NetBSD: tty.h,v 1.13 2011/08/16 16:25:15 christos Exp $	*/
2*32fe07f8SJohn Marino 
3*32fe07f8SJohn Marino /*-
4*32fe07f8SJohn Marino  * Copyright (c) 1992, 1993
5*32fe07f8SJohn Marino  *	The Regents of the University of California.  All rights reserved.
6*32fe07f8SJohn Marino  *
7*32fe07f8SJohn Marino  * This code is derived from software contributed to Berkeley by
8*32fe07f8SJohn Marino  * Christos Zoulas of Cornell University.
9*32fe07f8SJohn Marino  *
10*32fe07f8SJohn Marino  * Redistribution and use in source and binary forms, with or without
11*32fe07f8SJohn Marino  * modification, are permitted provided that the following conditions
12*32fe07f8SJohn Marino  * are met:
13*32fe07f8SJohn Marino  * 1. Redistributions of source code must retain the above copyright
14*32fe07f8SJohn Marino  *    notice, this list of conditions and the following disclaimer.
15*32fe07f8SJohn Marino  * 2. Redistributions in binary form must reproduce the above copyright
16*32fe07f8SJohn Marino  *    notice, this list of conditions and the following disclaimer in the
17*32fe07f8SJohn Marino  *    documentation and/or other materials provided with the distribution.
18*32fe07f8SJohn Marino  * 3. Neither the name of the University nor the names of its contributors
19*32fe07f8SJohn Marino  *    may be used to endorse or promote products derived from this software
20*32fe07f8SJohn Marino  *    without specific prior written permission.
21*32fe07f8SJohn Marino  *
22*32fe07f8SJohn Marino  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23*32fe07f8SJohn Marino  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24*32fe07f8SJohn Marino  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25*32fe07f8SJohn Marino  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26*32fe07f8SJohn Marino  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27*32fe07f8SJohn Marino  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28*32fe07f8SJohn Marino  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29*32fe07f8SJohn Marino  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30*32fe07f8SJohn Marino  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31*32fe07f8SJohn Marino  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32*32fe07f8SJohn Marino  * SUCH DAMAGE.
33*32fe07f8SJohn Marino  *
34*32fe07f8SJohn Marino  *	@(#)tty.h	8.1 (Berkeley) 6/4/93
35*32fe07f8SJohn Marino  */
36*32fe07f8SJohn Marino 
37*32fe07f8SJohn Marino /*
38*32fe07f8SJohn Marino  * el.tty.h: Local terminal header
39*32fe07f8SJohn Marino  */
40*32fe07f8SJohn Marino #ifndef _h_el_tty
41*32fe07f8SJohn Marino #define	_h_el_tty
42*32fe07f8SJohn Marino 
43*32fe07f8SJohn Marino #include "sys.h"
44*32fe07f8SJohn Marino #include "histedit.h"
45*32fe07f8SJohn Marino #include <termios.h>
46*32fe07f8SJohn Marino #include <unistd.h>
47*32fe07f8SJohn Marino 
48*32fe07f8SJohn Marino /* Define our own since everyone gets it wrong! */
49*32fe07f8SJohn Marino #define	CONTROL(A)	((A) & 037)
50*32fe07f8SJohn Marino 
51*32fe07f8SJohn Marino /*
52*32fe07f8SJohn Marino  * Aix compatible names
53*32fe07f8SJohn Marino  */
54*32fe07f8SJohn Marino # if defined(VWERSE) && !defined(VWERASE)
55*32fe07f8SJohn Marino #  define VWERASE VWERSE
56*32fe07f8SJohn Marino # endif /* VWERSE && !VWERASE */
57*32fe07f8SJohn Marino 
58*32fe07f8SJohn Marino # if defined(VDISCRD) && !defined(VDISCARD)
59*32fe07f8SJohn Marino #  define VDISCARD VDISCRD
60*32fe07f8SJohn Marino # endif /* VDISCRD && !VDISCARD */
61*32fe07f8SJohn Marino 
62*32fe07f8SJohn Marino # if defined(VFLUSHO) && !defined(VDISCARD)
63*32fe07f8SJohn Marino #  define VDISCARD VFLUSHO
64*32fe07f8SJohn Marino # endif  /* VFLUSHO && VDISCARD */
65*32fe07f8SJohn Marino 
66*32fe07f8SJohn Marino # if defined(VSTRT) && !defined(VSTART)
67*32fe07f8SJohn Marino #  define VSTART VSTRT
68*32fe07f8SJohn Marino # endif /* VSTRT && ! VSTART */
69*32fe07f8SJohn Marino 
70*32fe07f8SJohn Marino # if defined(VSTAT) && !defined(VSTATUS)
71*32fe07f8SJohn Marino #  define VSTATUS VSTAT
72*32fe07f8SJohn Marino # endif /* VSTAT && ! VSTATUS */
73*32fe07f8SJohn Marino 
74*32fe07f8SJohn Marino # ifndef ONLRET
75*32fe07f8SJohn Marino #  define ONLRET 0
76*32fe07f8SJohn Marino # endif /* ONLRET */
77*32fe07f8SJohn Marino 
78*32fe07f8SJohn Marino # ifndef TAB3
79*32fe07f8SJohn Marino #  ifdef OXTABS
80*32fe07f8SJohn Marino #   define TAB3 OXTABS
81*32fe07f8SJohn Marino #  else
82*32fe07f8SJohn Marino #   define TAB3 0
83*32fe07f8SJohn Marino #  endif /* OXTABS */
84*32fe07f8SJohn Marino # endif /* !TAB3 */
85*32fe07f8SJohn Marino 
86*32fe07f8SJohn Marino # if defined(OXTABS) && !defined(XTABS)
87*32fe07f8SJohn Marino #  define XTABS OXTABS
88*32fe07f8SJohn Marino # endif /* OXTABS && !XTABS */
89*32fe07f8SJohn Marino 
90*32fe07f8SJohn Marino # ifndef ONLCR
91*32fe07f8SJohn Marino #  define ONLCR 0
92*32fe07f8SJohn Marino # endif /* ONLCR */
93*32fe07f8SJohn Marino 
94*32fe07f8SJohn Marino # ifndef IEXTEN
95*32fe07f8SJohn Marino #  define IEXTEN 0
96*32fe07f8SJohn Marino # endif /* IEXTEN */
97*32fe07f8SJohn Marino 
98*32fe07f8SJohn Marino # ifndef ECHOCTL
99*32fe07f8SJohn Marino #  define ECHOCTL 0
100*32fe07f8SJohn Marino # endif /* ECHOCTL */
101*32fe07f8SJohn Marino 
102*32fe07f8SJohn Marino # ifndef PARENB
103*32fe07f8SJohn Marino #  define PARENB 0
104*32fe07f8SJohn Marino # endif /* PARENB */
105*32fe07f8SJohn Marino 
106*32fe07f8SJohn Marino # ifndef EXTPROC
107*32fe07f8SJohn Marino #  define EXTPROC 0
108*32fe07f8SJohn Marino # endif /* EXTPROC */
109*32fe07f8SJohn Marino 
110*32fe07f8SJohn Marino # ifndef FLUSHO
111*32fe07f8SJohn Marino #  define FLUSHO  0
112*32fe07f8SJohn Marino # endif /* FLUSHO */
113*32fe07f8SJohn Marino 
114*32fe07f8SJohn Marino 
115*32fe07f8SJohn Marino # if defined(VDISABLE) && !defined(_POSIX_VDISABLE)
116*32fe07f8SJohn Marino #  define _POSIX_VDISABLE VDISABLE
117*32fe07f8SJohn Marino # endif /* VDISABLE && ! _POSIX_VDISABLE */
118*32fe07f8SJohn Marino 
119*32fe07f8SJohn Marino /*
120*32fe07f8SJohn Marino  * Work around ISC's definition of IEXTEN which is
121*32fe07f8SJohn Marino  * XCASE!
122*32fe07f8SJohn Marino  */
123*32fe07f8SJohn Marino # ifdef ISC
124*32fe07f8SJohn Marino #  if defined(IEXTEN) && defined(XCASE)
125*32fe07f8SJohn Marino #   if IEXTEN == XCASE
126*32fe07f8SJohn Marino #    undef IEXTEN
127*32fe07f8SJohn Marino #    define IEXTEN 0
128*32fe07f8SJohn Marino #   endif /* IEXTEN == XCASE */
129*32fe07f8SJohn Marino #  endif /* IEXTEN && XCASE */
130*32fe07f8SJohn Marino #  if defined(IEXTEN) && !defined(XCASE)
131*32fe07f8SJohn Marino #   define XCASE IEXTEN
132*32fe07f8SJohn Marino #   undef IEXTEN
133*32fe07f8SJohn Marino #   define IEXTEN 0
134*32fe07f8SJohn Marino #  endif /* IEXTEN && !XCASE */
135*32fe07f8SJohn Marino # endif /* ISC */
136*32fe07f8SJohn Marino 
137*32fe07f8SJohn Marino /*
138*32fe07f8SJohn Marino  * Work around convex weirdness where turning off IEXTEN makes us
139*32fe07f8SJohn Marino  * lose all postprocessing!
140*32fe07f8SJohn Marino  */
141*32fe07f8SJohn Marino #if defined(convex) || defined(__convex__)
142*32fe07f8SJohn Marino # if defined(IEXTEN) && IEXTEN != 0
143*32fe07f8SJohn Marino #  undef IEXTEN
144*32fe07f8SJohn Marino #  define IEXTEN 0
145*32fe07f8SJohn Marino # endif /* IEXTEN != 0 */
146*32fe07f8SJohn Marino #endif /* convex || __convex__ */
147*32fe07f8SJohn Marino 
148*32fe07f8SJohn Marino /*
149*32fe07f8SJohn Marino  * So that we don't lose job control.
150*32fe07f8SJohn Marino  */
151*32fe07f8SJohn Marino #ifdef __SVR4
152*32fe07f8SJohn Marino # undef CSWTCH
153*32fe07f8SJohn Marino #endif
154*32fe07f8SJohn Marino 
155*32fe07f8SJohn Marino #ifndef _POSIX_VDISABLE
156*32fe07f8SJohn Marino # define _POSIX_VDISABLE ((unsigned char) -1)
157*32fe07f8SJohn Marino #endif /* _POSIX_VDISABLE */
158*32fe07f8SJohn Marino 
159*32fe07f8SJohn Marino #if !defined(CREPRINT) && defined(CRPRNT)
160*32fe07f8SJohn Marino # define CREPRINT CRPRNT
161*32fe07f8SJohn Marino #endif /* !CREPRINT && CRPRNT */
162*32fe07f8SJohn Marino #if !defined(CDISCARD) && defined(CFLUSH)
163*32fe07f8SJohn Marino # define CDISCARD CFLUSH
164*32fe07f8SJohn Marino #endif /* !CDISCARD && CFLUSH */
165*32fe07f8SJohn Marino 
166*32fe07f8SJohn Marino #ifndef CINTR
167*32fe07f8SJohn Marino # define CINTR		CONTROL('c')
168*32fe07f8SJohn Marino #endif /* CINTR */
169*32fe07f8SJohn Marino #ifndef CQUIT
170*32fe07f8SJohn Marino # define CQUIT		034	/* ^\ */
171*32fe07f8SJohn Marino #endif /* CQUIT */
172*32fe07f8SJohn Marino #ifndef CERASE
173*32fe07f8SJohn Marino # define CERASE		0177	/* ^? */
174*32fe07f8SJohn Marino #endif /* CERASE */
175*32fe07f8SJohn Marino #ifndef CKILL
176*32fe07f8SJohn Marino # define CKILL		CONTROL('u')
177*32fe07f8SJohn Marino #endif /* CKILL */
178*32fe07f8SJohn Marino #ifndef CEOF
179*32fe07f8SJohn Marino # define CEOF		CONTROL('d')
180*32fe07f8SJohn Marino #endif /* CEOF */
181*32fe07f8SJohn Marino #ifndef CEOL
182*32fe07f8SJohn Marino # define CEOL		_POSIX_VDISABLE
183*32fe07f8SJohn Marino #endif /* CEOL */
184*32fe07f8SJohn Marino #ifndef CEOL2
185*32fe07f8SJohn Marino # define CEOL2		_POSIX_VDISABLE
186*32fe07f8SJohn Marino #endif /* CEOL2 */
187*32fe07f8SJohn Marino #ifndef CSWTCH
188*32fe07f8SJohn Marino # define CSWTCH		_POSIX_VDISABLE
189*32fe07f8SJohn Marino #endif /* CSWTCH */
190*32fe07f8SJohn Marino #ifndef CDSWTCH
191*32fe07f8SJohn Marino # define CDSWTCH	_POSIX_VDISABLE
192*32fe07f8SJohn Marino #endif /* CDSWTCH */
193*32fe07f8SJohn Marino #ifndef CERASE2
194*32fe07f8SJohn Marino # define CERASE2	_POSIX_VDISABLE
195*32fe07f8SJohn Marino #endif /* CERASE2 */
196*32fe07f8SJohn Marino #ifndef CSTART
197*32fe07f8SJohn Marino # define CSTART		CONTROL('q')
198*32fe07f8SJohn Marino #endif /* CSTART */
199*32fe07f8SJohn Marino #ifndef CSTOP
200*32fe07f8SJohn Marino # define CSTOP		CONTROL('s')
201*32fe07f8SJohn Marino #endif /* CSTOP */
202*32fe07f8SJohn Marino #ifndef CSUSP
203*32fe07f8SJohn Marino # define CSUSP		CONTROL('z')
204*32fe07f8SJohn Marino #endif /* CSUSP */
205*32fe07f8SJohn Marino #ifndef CDSUSP
206*32fe07f8SJohn Marino # define CDSUSP		CONTROL('y')
207*32fe07f8SJohn Marino #endif /* CDSUSP */
208*32fe07f8SJohn Marino 
209*32fe07f8SJohn Marino #ifdef hpux
210*32fe07f8SJohn Marino 
211*32fe07f8SJohn Marino # ifndef CREPRINT
212*32fe07f8SJohn Marino #  define CREPRINT	_POSIX_VDISABLE
213*32fe07f8SJohn Marino # endif /* CREPRINT */
214*32fe07f8SJohn Marino # ifndef CDISCARD
215*32fe07f8SJohn Marino #  define CDISCARD	_POSIX_VDISABLE
216*32fe07f8SJohn Marino # endif /* CDISCARD */
217*32fe07f8SJohn Marino # ifndef CLNEXT
218*32fe07f8SJohn Marino #  define CLNEXT	_POSIX_VDISABLE
219*32fe07f8SJohn Marino # endif /* CLNEXT */
220*32fe07f8SJohn Marino # ifndef CWERASE
221*32fe07f8SJohn Marino #  define CWERASE	_POSIX_VDISABLE
222*32fe07f8SJohn Marino # endif /* CWERASE */
223*32fe07f8SJohn Marino 
224*32fe07f8SJohn Marino #else /* !hpux */
225*32fe07f8SJohn Marino 
226*32fe07f8SJohn Marino # ifndef CREPRINT
227*32fe07f8SJohn Marino #  define CREPRINT	CONTROL('r')
228*32fe07f8SJohn Marino # endif /* CREPRINT */
229*32fe07f8SJohn Marino # ifndef CDISCARD
230*32fe07f8SJohn Marino #  define CDISCARD	CONTROL('o')
231*32fe07f8SJohn Marino # endif /* CDISCARD */
232*32fe07f8SJohn Marino # ifndef CLNEXT
233*32fe07f8SJohn Marino #  define CLNEXT	CONTROL('v')
234*32fe07f8SJohn Marino # endif /* CLNEXT */
235*32fe07f8SJohn Marino # ifndef CWERASE
236*32fe07f8SJohn Marino #  define CWERASE	CONTROL('w')
237*32fe07f8SJohn Marino # endif /* CWERASE */
238*32fe07f8SJohn Marino 
239*32fe07f8SJohn Marino #endif /* hpux */
240*32fe07f8SJohn Marino 
241*32fe07f8SJohn Marino #ifndef CSTATUS
242*32fe07f8SJohn Marino # define CSTATUS	CONTROL('t')
243*32fe07f8SJohn Marino #endif /* CSTATUS */
244*32fe07f8SJohn Marino #ifndef CPAGE
245*32fe07f8SJohn Marino # define CPAGE		' '
246*32fe07f8SJohn Marino #endif /* CPAGE */
247*32fe07f8SJohn Marino #ifndef CPGOFF
248*32fe07f8SJohn Marino # define CPGOFF		CONTROL('m')
249*32fe07f8SJohn Marino #endif /* CPGOFF */
250*32fe07f8SJohn Marino #ifndef CKILL2
251*32fe07f8SJohn Marino # define CKILL2		_POSIX_VDISABLE
252*32fe07f8SJohn Marino #endif /* CKILL2 */
253*32fe07f8SJohn Marino #ifndef CBRK
254*32fe07f8SJohn Marino # ifndef masscomp
255*32fe07f8SJohn Marino #  define CBRK		0377
256*32fe07f8SJohn Marino # else
257*32fe07f8SJohn Marino #  define CBRK		'\0'
258*32fe07f8SJohn Marino # endif /* masscomp */
259*32fe07f8SJohn Marino #endif /* CBRK */
260*32fe07f8SJohn Marino #ifndef CMIN
261*32fe07f8SJohn Marino # define CMIN		CEOF
262*32fe07f8SJohn Marino #endif /* CMIN */
263*32fe07f8SJohn Marino #ifndef CTIME
264*32fe07f8SJohn Marino # define CTIME		CEOL
265*32fe07f8SJohn Marino #endif /* CTIME */
266*32fe07f8SJohn Marino 
267*32fe07f8SJohn Marino /*
268*32fe07f8SJohn Marino  * Fix for sun inconsistency. On termio VSUSP and the rest of the
269*32fe07f8SJohn Marino  * ttychars > NCC are defined. So we undefine them.
270*32fe07f8SJohn Marino  */
271*32fe07f8SJohn Marino #if defined(TERMIO) || defined(POSIX)
272*32fe07f8SJohn Marino # if defined(POSIX) && defined(NCCS)
273*32fe07f8SJohn Marino #  define NUMCC		NCCS
274*32fe07f8SJohn Marino # else
275*32fe07f8SJohn Marino #  ifdef NCC
276*32fe07f8SJohn Marino #   define NUMCC	NCC
277*32fe07f8SJohn Marino #  endif /* NCC */
278*32fe07f8SJohn Marino # endif /* POSIX && NCCS */
279*32fe07f8SJohn Marino # ifdef NUMCC
280*32fe07f8SJohn Marino #  ifdef VINTR
281*32fe07f8SJohn Marino #   if NUMCC <= VINTR
282*32fe07f8SJohn Marino #    undef VINTR
283*32fe07f8SJohn Marino #   endif /* NUMCC <= VINTR */
284*32fe07f8SJohn Marino #  endif /* VINTR */
285*32fe07f8SJohn Marino #  ifdef VQUIT
286*32fe07f8SJohn Marino #   if NUMCC <= VQUIT
287*32fe07f8SJohn Marino #    undef VQUIT
288*32fe07f8SJohn Marino #   endif /* NUMCC <= VQUIT */
289*32fe07f8SJohn Marino #  endif /* VQUIT */
290*32fe07f8SJohn Marino #  ifdef VERASE
291*32fe07f8SJohn Marino #   if NUMCC <= VERASE
292*32fe07f8SJohn Marino #    undef VERASE
293*32fe07f8SJohn Marino #   endif /* NUMCC <= VERASE */
294*32fe07f8SJohn Marino #  endif /* VERASE */
295*32fe07f8SJohn Marino #  ifdef VKILL
296*32fe07f8SJohn Marino #   if NUMCC <= VKILL
297*32fe07f8SJohn Marino #    undef VKILL
298*32fe07f8SJohn Marino #   endif /* NUMCC <= VKILL */
299*32fe07f8SJohn Marino #  endif /* VKILL */
300*32fe07f8SJohn Marino #  ifdef VEOF
301*32fe07f8SJohn Marino #   if NUMCC <= VEOF
302*32fe07f8SJohn Marino #    undef VEOF
303*32fe07f8SJohn Marino #   endif /* NUMCC <= VEOF */
304*32fe07f8SJohn Marino #  endif /* VEOF */
305*32fe07f8SJohn Marino #  ifdef VEOL
306*32fe07f8SJohn Marino #   if NUMCC <= VEOL
307*32fe07f8SJohn Marino #    undef VEOL
308*32fe07f8SJohn Marino #   endif /* NUMCC <= VEOL */
309*32fe07f8SJohn Marino #  endif /* VEOL */
310*32fe07f8SJohn Marino #  ifdef VEOL2
311*32fe07f8SJohn Marino #   if NUMCC <= VEOL2
312*32fe07f8SJohn Marino #    undef VEOL2
313*32fe07f8SJohn Marino #   endif /* NUMCC <= VEOL2 */
314*32fe07f8SJohn Marino #  endif /* VEOL2 */
315*32fe07f8SJohn Marino #  ifdef VSWTCH
316*32fe07f8SJohn Marino #   if NUMCC <= VSWTCH
317*32fe07f8SJohn Marino #    undef VSWTCH
318*32fe07f8SJohn Marino #   endif /* NUMCC <= VSWTCH */
319*32fe07f8SJohn Marino #  endif /* VSWTCH */
320*32fe07f8SJohn Marino #  ifdef VDSWTCH
321*32fe07f8SJohn Marino #   if NUMCC <= VDSWTCH
322*32fe07f8SJohn Marino #    undef VDSWTCH
323*32fe07f8SJohn Marino #   endif /* NUMCC <= VDSWTCH */
324*32fe07f8SJohn Marino #  endif /* VDSWTCH */
325*32fe07f8SJohn Marino #  ifdef VERASE2
326*32fe07f8SJohn Marino #   if NUMCC <= VERASE2
327*32fe07f8SJohn Marino #    undef VERASE2
328*32fe07f8SJohn Marino #   endif /* NUMCC <= VERASE2 */
329*32fe07f8SJohn Marino #  endif /* VERASE2 */
330*32fe07f8SJohn Marino #  ifdef VSTART
331*32fe07f8SJohn Marino #   if NUMCC <= VSTART
332*32fe07f8SJohn Marino #    undef VSTART
333*32fe07f8SJohn Marino #   endif /* NUMCC <= VSTART */
334*32fe07f8SJohn Marino #  endif /* VSTART */
335*32fe07f8SJohn Marino #  ifdef VSTOP
336*32fe07f8SJohn Marino #   if NUMCC <= VSTOP
337*32fe07f8SJohn Marino #    undef VSTOP
338*32fe07f8SJohn Marino #   endif /* NUMCC <= VSTOP */
339*32fe07f8SJohn Marino #  endif /* VSTOP */
340*32fe07f8SJohn Marino #  ifdef VWERASE
341*32fe07f8SJohn Marino #   if NUMCC <= VWERASE
342*32fe07f8SJohn Marino #    undef VWERASE
343*32fe07f8SJohn Marino #   endif /* NUMCC <= VWERASE */
344*32fe07f8SJohn Marino #  endif /* VWERASE */
345*32fe07f8SJohn Marino #  ifdef VSUSP
346*32fe07f8SJohn Marino #   if NUMCC <= VSUSP
347*32fe07f8SJohn Marino #    undef VSUSP
348*32fe07f8SJohn Marino #   endif /* NUMCC <= VSUSP */
349*32fe07f8SJohn Marino #  endif /* VSUSP */
350*32fe07f8SJohn Marino #  ifdef VDSUSP
351*32fe07f8SJohn Marino #   if NUMCC <= VDSUSP
352*32fe07f8SJohn Marino #    undef VDSUSP
353*32fe07f8SJohn Marino #   endif /* NUMCC <= VDSUSP */
354*32fe07f8SJohn Marino #  endif /* VDSUSP */
355*32fe07f8SJohn Marino #  ifdef VREPRINT
356*32fe07f8SJohn Marino #   if NUMCC <= VREPRINT
357*32fe07f8SJohn Marino #    undef VREPRINT
358*32fe07f8SJohn Marino #   endif /* NUMCC <= VREPRINT */
359*32fe07f8SJohn Marino #  endif /* VREPRINT */
360*32fe07f8SJohn Marino #  ifdef VDISCARD
361*32fe07f8SJohn Marino #   if NUMCC <= VDISCARD
362*32fe07f8SJohn Marino #    undef VDISCARD
363*32fe07f8SJohn Marino #   endif /* NUMCC <= VDISCARD */
364*32fe07f8SJohn Marino #  endif /* VDISCARD */
365*32fe07f8SJohn Marino #  ifdef VLNEXT
366*32fe07f8SJohn Marino #   if NUMCC <= VLNEXT
367*32fe07f8SJohn Marino #    undef VLNEXT
368*32fe07f8SJohn Marino #   endif /* NUMCC <= VLNEXT */
369*32fe07f8SJohn Marino #  endif /* VLNEXT */
370*32fe07f8SJohn Marino #  ifdef VSTATUS
371*32fe07f8SJohn Marino #   if NUMCC <= VSTATUS
372*32fe07f8SJohn Marino #    undef VSTATUS
373*32fe07f8SJohn Marino #   endif /* NUMCC <= VSTATUS */
374*32fe07f8SJohn Marino #  endif /* VSTATUS */
375*32fe07f8SJohn Marino #  ifdef VPAGE
376*32fe07f8SJohn Marino #   if NUMCC <= VPAGE
377*32fe07f8SJohn Marino #    undef VPAGE
378*32fe07f8SJohn Marino #   endif /* NUMCC <= VPAGE */
379*32fe07f8SJohn Marino #  endif /* VPAGE */
380*32fe07f8SJohn Marino #  ifdef VPGOFF
381*32fe07f8SJohn Marino #   if NUMCC <= VPGOFF
382*32fe07f8SJohn Marino #    undef VPGOFF
383*32fe07f8SJohn Marino #   endif /* NUMCC <= VPGOFF */
384*32fe07f8SJohn Marino #  endif /* VPGOFF */
385*32fe07f8SJohn Marino #  ifdef VKILL2
386*32fe07f8SJohn Marino #   if NUMCC <= VKILL2
387*32fe07f8SJohn Marino #    undef VKILL2
388*32fe07f8SJohn Marino #   endif /* NUMCC <= VKILL2 */
389*32fe07f8SJohn Marino #  endif /* VKILL2 */
390*32fe07f8SJohn Marino #  ifdef VBRK
391*32fe07f8SJohn Marino #   if NUMCC <= VBRK
392*32fe07f8SJohn Marino #    undef VBRK
393*32fe07f8SJohn Marino #   endif /* NUMCC <= VBRK */
394*32fe07f8SJohn Marino #  endif /* VBRK */
395*32fe07f8SJohn Marino #  ifdef VMIN
396*32fe07f8SJohn Marino #   if NUMCC <= VMIN
397*32fe07f8SJohn Marino #    undef VMIN
398*32fe07f8SJohn Marino #   endif /* NUMCC <= VMIN */
399*32fe07f8SJohn Marino #  endif /* VMIN */
400*32fe07f8SJohn Marino #  ifdef VTIME
401*32fe07f8SJohn Marino #   if NUMCC <= VTIME
402*32fe07f8SJohn Marino #    undef VTIME
403*32fe07f8SJohn Marino #   endif /* NUMCC <= VTIME */
404*32fe07f8SJohn Marino #  endif /* VTIME */
405*32fe07f8SJohn Marino # endif /* NUMCC */
406*32fe07f8SJohn Marino #endif /* !POSIX */
407*32fe07f8SJohn Marino 
408*32fe07f8SJohn Marino #define	C_INTR		 0
409*32fe07f8SJohn Marino #define	C_QUIT		 1
410*32fe07f8SJohn Marino #define	C_ERASE		 2
411*32fe07f8SJohn Marino #define	C_KILL		 3
412*32fe07f8SJohn Marino #define	C_EOF		 4
413*32fe07f8SJohn Marino #define	C_EOL		 5
414*32fe07f8SJohn Marino #define	C_EOL2		 6
415*32fe07f8SJohn Marino #define	C_SWTCH		 7
416*32fe07f8SJohn Marino #define	C_DSWTCH	 8
417*32fe07f8SJohn Marino #define	C_ERASE2	 9
418*32fe07f8SJohn Marino #define	C_START		10
419*32fe07f8SJohn Marino #define	C_STOP		11
420*32fe07f8SJohn Marino #define	C_WERASE	12
421*32fe07f8SJohn Marino #define	C_SUSP		13
422*32fe07f8SJohn Marino #define	C_DSUSP		14
423*32fe07f8SJohn Marino #define	C_REPRINT	15
424*32fe07f8SJohn Marino #define	C_DISCARD	16
425*32fe07f8SJohn Marino #define	C_LNEXT		17
426*32fe07f8SJohn Marino #define	C_STATUS	18
427*32fe07f8SJohn Marino #define	C_PAGE		19
428*32fe07f8SJohn Marino #define	C_PGOFF		20
429*32fe07f8SJohn Marino #define	C_KILL2		21
430*32fe07f8SJohn Marino #define	C_BRK		22
431*32fe07f8SJohn Marino #define	C_MIN		23
432*32fe07f8SJohn Marino #define	C_TIME		24
433*32fe07f8SJohn Marino #define	C_NCC		25
434*32fe07f8SJohn Marino #define	C_SH(A)		((unsigned int)(1 << (A)))
435*32fe07f8SJohn Marino 
436*32fe07f8SJohn Marino /*
437*32fe07f8SJohn Marino  * Terminal dependend data structures
438*32fe07f8SJohn Marino  */
439*32fe07f8SJohn Marino #define	EX_IO	0	/* while we are executing	*/
440*32fe07f8SJohn Marino #define	ED_IO	1	/* while we are editing		*/
441*32fe07f8SJohn Marino #define	TS_IO	2	/* new mode from terminal	*/
442*32fe07f8SJohn Marino #define	QU_IO	2	/* used only for quoted chars	*/
443*32fe07f8SJohn Marino #define	NN_IO	3	/* The number of entries	*/
444*32fe07f8SJohn Marino 
445*32fe07f8SJohn Marino #define	MD_INP	0
446*32fe07f8SJohn Marino #define	MD_OUT	1
447*32fe07f8SJohn Marino #define	MD_CTL	2
448*32fe07f8SJohn Marino #define	MD_LIN	3
449*32fe07f8SJohn Marino #define	MD_CHAR	4
450*32fe07f8SJohn Marino #define	MD_NN	5
451*32fe07f8SJohn Marino 
452*32fe07f8SJohn Marino typedef struct {
453*32fe07f8SJohn Marino 	const char	*t_name;
454*32fe07f8SJohn Marino 	unsigned int	 t_setmask;
455*32fe07f8SJohn Marino 	unsigned int	 t_clrmask;
456*32fe07f8SJohn Marino } ttyperm_t[NN_IO][MD_NN];
457*32fe07f8SJohn Marino 
458*32fe07f8SJohn Marino typedef unsigned char ttychar_t[NN_IO][C_NCC];
459*32fe07f8SJohn Marino 
460*32fe07f8SJohn Marino protected int	tty_init(EditLine *);
461*32fe07f8SJohn Marino protected void	tty_end(EditLine *);
462*32fe07f8SJohn Marino protected int	tty_stty(EditLine *, int, const Char **);
463*32fe07f8SJohn Marino protected int	tty_rawmode(EditLine *);
464*32fe07f8SJohn Marino protected int	tty_cookedmode(EditLine *);
465*32fe07f8SJohn Marino protected int	tty_quotemode(EditLine *);
466*32fe07f8SJohn Marino protected int	tty_noquotemode(EditLine *);
467*32fe07f8SJohn Marino protected void	tty_bind_char(EditLine *, int);
468*32fe07f8SJohn Marino 
469*32fe07f8SJohn Marino typedef struct {
470*32fe07f8SJohn Marino     ttyperm_t t_t;
471*32fe07f8SJohn Marino     ttychar_t t_c;
472*32fe07f8SJohn Marino     struct termios t_ex, t_ed, t_ts;
473*32fe07f8SJohn Marino     int t_tabs;
474*32fe07f8SJohn Marino     int t_eight;
475*32fe07f8SJohn Marino     speed_t t_speed;
476*32fe07f8SJohn Marino     int t_mode;
477*32fe07f8SJohn Marino     unsigned char t_vdisable;
478*32fe07f8SJohn Marino } el_tty_t;
479*32fe07f8SJohn Marino 
480*32fe07f8SJohn Marino 
481*32fe07f8SJohn Marino #endif /* _h_el_tty */
482