xref: /dragonfly/contrib/libedit/src/tty.h (revision cdf8408c)
1*cdf8408cSAntonio Huete Jimenez /*	$NetBSD: tty.h,v 1.24 2021/07/31 20:51:32 andvar Exp $	*/
232fe07f8SJohn Marino 
332fe07f8SJohn Marino /*-
432fe07f8SJohn Marino  * Copyright (c) 1992, 1993
532fe07f8SJohn Marino  *	The Regents of the University of California.  All rights reserved.
632fe07f8SJohn Marino  *
732fe07f8SJohn Marino  * This code is derived from software contributed to Berkeley by
832fe07f8SJohn Marino  * Christos Zoulas of Cornell University.
932fe07f8SJohn Marino  *
1032fe07f8SJohn Marino  * Redistribution and use in source and binary forms, with or without
1132fe07f8SJohn Marino  * modification, are permitted provided that the following conditions
1232fe07f8SJohn Marino  * are met:
1332fe07f8SJohn Marino  * 1. Redistributions of source code must retain the above copyright
1432fe07f8SJohn Marino  *    notice, this list of conditions and the following disclaimer.
1532fe07f8SJohn Marino  * 2. Redistributions in binary form must reproduce the above copyright
1632fe07f8SJohn Marino  *    notice, this list of conditions and the following disclaimer in the
1732fe07f8SJohn Marino  *    documentation and/or other materials provided with the distribution.
1832fe07f8SJohn Marino  * 3. Neither the name of the University nor the names of its contributors
1932fe07f8SJohn Marino  *    may be used to endorse or promote products derived from this software
2032fe07f8SJohn Marino  *    without specific prior written permission.
2132fe07f8SJohn Marino  *
2232fe07f8SJohn Marino  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2332fe07f8SJohn Marino  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2432fe07f8SJohn Marino  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2532fe07f8SJohn Marino  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2632fe07f8SJohn Marino  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2732fe07f8SJohn Marino  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2832fe07f8SJohn Marino  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2932fe07f8SJohn Marino  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3032fe07f8SJohn Marino  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3132fe07f8SJohn Marino  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3232fe07f8SJohn Marino  * SUCH DAMAGE.
3332fe07f8SJohn Marino  *
3432fe07f8SJohn Marino  *	@(#)tty.h	8.1 (Berkeley) 6/4/93
3532fe07f8SJohn Marino  */
3632fe07f8SJohn Marino 
3732fe07f8SJohn Marino /*
3832fe07f8SJohn Marino  * el.tty.h: Local terminal header
3932fe07f8SJohn Marino  */
4032fe07f8SJohn Marino #ifndef _h_el_tty
4132fe07f8SJohn Marino #define	_h_el_tty
4232fe07f8SJohn Marino 
4332fe07f8SJohn Marino #include <termios.h>
4432fe07f8SJohn Marino #include <unistd.h>
4532fe07f8SJohn Marino 
4632fe07f8SJohn Marino /* Define our own since everyone gets it wrong! */
4732fe07f8SJohn Marino #define	CONTROL(A)	((A) & 037)
4832fe07f8SJohn Marino 
4932fe07f8SJohn Marino /*
5032fe07f8SJohn Marino  * Aix compatible names
5132fe07f8SJohn Marino  */
5232fe07f8SJohn Marino # if defined(VWERSE) && !defined(VWERASE)
5332fe07f8SJohn Marino #  define VWERASE VWERSE
5432fe07f8SJohn Marino # endif /* VWERSE && !VWERASE */
5532fe07f8SJohn Marino 
5632fe07f8SJohn Marino # if defined(VDISCRD) && !defined(VDISCARD)
5732fe07f8SJohn Marino #  define VDISCARD VDISCRD
5832fe07f8SJohn Marino # endif /* VDISCRD && !VDISCARD */
5932fe07f8SJohn Marino 
6032fe07f8SJohn Marino # if defined(VFLUSHO) && !defined(VDISCARD)
6132fe07f8SJohn Marino #  define VDISCARD VFLUSHO
6232fe07f8SJohn Marino # endif  /* VFLUSHO && VDISCARD */
6332fe07f8SJohn Marino 
6432fe07f8SJohn Marino # if defined(VSTRT) && !defined(VSTART)
6532fe07f8SJohn Marino #  define VSTART VSTRT
6632fe07f8SJohn Marino # endif /* VSTRT && ! VSTART */
6732fe07f8SJohn Marino 
6832fe07f8SJohn Marino # if defined(VSTAT) && !defined(VSTATUS)
6932fe07f8SJohn Marino #  define VSTATUS VSTAT
7032fe07f8SJohn Marino # endif /* VSTAT && ! VSTATUS */
7132fe07f8SJohn Marino 
7232fe07f8SJohn Marino # ifndef ONLRET
7332fe07f8SJohn Marino #  define ONLRET 0
7432fe07f8SJohn Marino # endif /* ONLRET */
7532fe07f8SJohn Marino 
7632fe07f8SJohn Marino # ifndef TAB3
7732fe07f8SJohn Marino #  ifdef OXTABS
7832fe07f8SJohn Marino #   define TAB3 OXTABS
7932fe07f8SJohn Marino #  else
8032fe07f8SJohn Marino #   define TAB3 0
8132fe07f8SJohn Marino #  endif /* OXTABS */
8232fe07f8SJohn Marino # endif /* !TAB3 */
8332fe07f8SJohn Marino 
8432fe07f8SJohn Marino # if defined(OXTABS) && !defined(XTABS)
8532fe07f8SJohn Marino #  define XTABS OXTABS
8632fe07f8SJohn Marino # endif /* OXTABS && !XTABS */
8732fe07f8SJohn Marino 
8832fe07f8SJohn Marino # ifndef ONLCR
8932fe07f8SJohn Marino #  define ONLCR 0
9032fe07f8SJohn Marino # endif /* ONLCR */
9132fe07f8SJohn Marino 
9232fe07f8SJohn Marino # ifndef IEXTEN
9332fe07f8SJohn Marino #  define IEXTEN 0
9432fe07f8SJohn Marino # endif /* IEXTEN */
9532fe07f8SJohn Marino 
9632fe07f8SJohn Marino # ifndef ECHOCTL
9732fe07f8SJohn Marino #  define ECHOCTL 0
9832fe07f8SJohn Marino # endif /* ECHOCTL */
9932fe07f8SJohn Marino 
10032fe07f8SJohn Marino # ifndef PARENB
10132fe07f8SJohn Marino #  define PARENB 0
10232fe07f8SJohn Marino # endif /* PARENB */
10332fe07f8SJohn Marino 
10432fe07f8SJohn Marino # ifndef EXTPROC
10532fe07f8SJohn Marino #  define EXTPROC 0
10632fe07f8SJohn Marino # endif /* EXTPROC */
10732fe07f8SJohn Marino 
10832fe07f8SJohn Marino # ifndef FLUSHO
10932fe07f8SJohn Marino #  define FLUSHO  0
11032fe07f8SJohn Marino # endif /* FLUSHO */
11132fe07f8SJohn Marino 
11232fe07f8SJohn Marino 
11332fe07f8SJohn Marino # if defined(VDISABLE) && !defined(_POSIX_VDISABLE)
11432fe07f8SJohn Marino #  define _POSIX_VDISABLE VDISABLE
11532fe07f8SJohn Marino # endif /* VDISABLE && ! _POSIX_VDISABLE */
11632fe07f8SJohn Marino 
11732fe07f8SJohn Marino /*
11832fe07f8SJohn Marino  * Work around ISC's definition of IEXTEN which is
11932fe07f8SJohn Marino  * XCASE!
12032fe07f8SJohn Marino  */
12132fe07f8SJohn Marino # ifdef ISC
12232fe07f8SJohn Marino #  if defined(IEXTEN) && defined(XCASE)
12332fe07f8SJohn Marino #   if IEXTEN == XCASE
12432fe07f8SJohn Marino #    undef IEXTEN
12532fe07f8SJohn Marino #    define IEXTEN 0
12632fe07f8SJohn Marino #   endif /* IEXTEN == XCASE */
12732fe07f8SJohn Marino #  endif /* IEXTEN && XCASE */
12832fe07f8SJohn Marino #  if defined(IEXTEN) && !defined(XCASE)
12932fe07f8SJohn Marino #   define XCASE IEXTEN
13032fe07f8SJohn Marino #   undef IEXTEN
13132fe07f8SJohn Marino #   define IEXTEN 0
13232fe07f8SJohn Marino #  endif /* IEXTEN && !XCASE */
13332fe07f8SJohn Marino # endif /* ISC */
13432fe07f8SJohn Marino 
13532fe07f8SJohn Marino /*
13632fe07f8SJohn Marino  * Work around convex weirdness where turning off IEXTEN makes us
13732fe07f8SJohn Marino  * lose all postprocessing!
13832fe07f8SJohn Marino  */
13932fe07f8SJohn Marino #if defined(convex) || defined(__convex__)
14032fe07f8SJohn Marino # if defined(IEXTEN) && IEXTEN != 0
14132fe07f8SJohn Marino #  undef IEXTEN
14232fe07f8SJohn Marino #  define IEXTEN 0
14332fe07f8SJohn Marino # endif /* IEXTEN != 0 */
14432fe07f8SJohn Marino #endif /* convex || __convex__ */
14532fe07f8SJohn Marino 
14632fe07f8SJohn Marino /*
14732fe07f8SJohn Marino  * So that we don't lose job control.
14832fe07f8SJohn Marino  */
14932fe07f8SJohn Marino #ifdef __SVR4
15032fe07f8SJohn Marino # undef CSWTCH
15132fe07f8SJohn Marino #endif
15232fe07f8SJohn Marino 
15332fe07f8SJohn Marino #ifndef _POSIX_VDISABLE
15432fe07f8SJohn Marino # define _POSIX_VDISABLE ((unsigned char) -1)
15532fe07f8SJohn Marino #endif /* _POSIX_VDISABLE */
15632fe07f8SJohn Marino 
15732fe07f8SJohn Marino #if !defined(CREPRINT) && defined(CRPRNT)
15832fe07f8SJohn Marino # define CREPRINT CRPRNT
15932fe07f8SJohn Marino #endif /* !CREPRINT && CRPRNT */
16032fe07f8SJohn Marino #if !defined(CDISCARD) && defined(CFLUSH)
16132fe07f8SJohn Marino # define CDISCARD CFLUSH
16232fe07f8SJohn Marino #endif /* !CDISCARD && CFLUSH */
16332fe07f8SJohn Marino 
16432fe07f8SJohn Marino #ifndef CINTR
16532fe07f8SJohn Marino # define CINTR		CONTROL('c')
16632fe07f8SJohn Marino #endif /* CINTR */
16732fe07f8SJohn Marino #ifndef CQUIT
16832fe07f8SJohn Marino # define CQUIT		034	/* ^\ */
16932fe07f8SJohn Marino #endif /* CQUIT */
17032fe07f8SJohn Marino #ifndef CERASE
17132fe07f8SJohn Marino # define CERASE		0177	/* ^? */
17232fe07f8SJohn Marino #endif /* CERASE */
17332fe07f8SJohn Marino #ifndef CKILL
17432fe07f8SJohn Marino # define CKILL		CONTROL('u')
17532fe07f8SJohn Marino #endif /* CKILL */
17632fe07f8SJohn Marino #ifndef CEOF
17732fe07f8SJohn Marino # define CEOF		CONTROL('d')
17832fe07f8SJohn Marino #endif /* CEOF */
17932fe07f8SJohn Marino #ifndef CEOL
18032fe07f8SJohn Marino # define CEOL		_POSIX_VDISABLE
18132fe07f8SJohn Marino #endif /* CEOL */
18232fe07f8SJohn Marino #ifndef CEOL2
18332fe07f8SJohn Marino # define CEOL2		_POSIX_VDISABLE
18432fe07f8SJohn Marino #endif /* CEOL2 */
18532fe07f8SJohn Marino #ifndef CSWTCH
18632fe07f8SJohn Marino # define CSWTCH		_POSIX_VDISABLE
18732fe07f8SJohn Marino #endif /* CSWTCH */
18832fe07f8SJohn Marino #ifndef CDSWTCH
18932fe07f8SJohn Marino # define CDSWTCH	_POSIX_VDISABLE
19032fe07f8SJohn Marino #endif /* CDSWTCH */
19132fe07f8SJohn Marino #ifndef CERASE2
19232fe07f8SJohn Marino # define CERASE2	_POSIX_VDISABLE
19332fe07f8SJohn Marino #endif /* CERASE2 */
19432fe07f8SJohn Marino #ifndef CSTART
19532fe07f8SJohn Marino # define CSTART		CONTROL('q')
19632fe07f8SJohn Marino #endif /* CSTART */
19732fe07f8SJohn Marino #ifndef CSTOP
19832fe07f8SJohn Marino # define CSTOP		CONTROL('s')
19932fe07f8SJohn Marino #endif /* CSTOP */
20032fe07f8SJohn Marino #ifndef CSUSP
20132fe07f8SJohn Marino # define CSUSP		CONTROL('z')
20232fe07f8SJohn Marino #endif /* CSUSP */
20332fe07f8SJohn Marino #ifndef CDSUSP
20432fe07f8SJohn Marino # define CDSUSP		CONTROL('y')
20532fe07f8SJohn Marino #endif /* CDSUSP */
20632fe07f8SJohn Marino 
20732fe07f8SJohn Marino #ifdef hpux
20832fe07f8SJohn Marino 
20932fe07f8SJohn Marino # ifndef CREPRINT
21032fe07f8SJohn Marino #  define CREPRINT	_POSIX_VDISABLE
21132fe07f8SJohn Marino # endif /* CREPRINT */
21232fe07f8SJohn Marino # ifndef CDISCARD
21332fe07f8SJohn Marino #  define CDISCARD	_POSIX_VDISABLE
21432fe07f8SJohn Marino # endif /* CDISCARD */
21532fe07f8SJohn Marino # ifndef CLNEXT
21632fe07f8SJohn Marino #  define CLNEXT	_POSIX_VDISABLE
21732fe07f8SJohn Marino # endif /* CLNEXT */
21832fe07f8SJohn Marino # ifndef CWERASE
21932fe07f8SJohn Marino #  define CWERASE	_POSIX_VDISABLE
22032fe07f8SJohn Marino # endif /* CWERASE */
22132fe07f8SJohn Marino 
22232fe07f8SJohn Marino #else /* !hpux */
22332fe07f8SJohn Marino 
22432fe07f8SJohn Marino # ifndef CREPRINT
22532fe07f8SJohn Marino #  define CREPRINT	CONTROL('r')
22632fe07f8SJohn Marino # endif /* CREPRINT */
22732fe07f8SJohn Marino # ifndef CDISCARD
22832fe07f8SJohn Marino #  define CDISCARD	CONTROL('o')
22932fe07f8SJohn Marino # endif /* CDISCARD */
23032fe07f8SJohn Marino # ifndef CLNEXT
23132fe07f8SJohn Marino #  define CLNEXT	CONTROL('v')
23232fe07f8SJohn Marino # endif /* CLNEXT */
23332fe07f8SJohn Marino # ifndef CWERASE
23432fe07f8SJohn Marino #  define CWERASE	CONTROL('w')
23532fe07f8SJohn Marino # endif /* CWERASE */
23632fe07f8SJohn Marino 
23732fe07f8SJohn Marino #endif /* hpux */
23832fe07f8SJohn Marino 
23932fe07f8SJohn Marino #ifndef CSTATUS
24032fe07f8SJohn Marino # define CSTATUS	CONTROL('t')
24132fe07f8SJohn Marino #endif /* CSTATUS */
24232fe07f8SJohn Marino #ifndef CPAGE
24332fe07f8SJohn Marino # define CPAGE		' '
24432fe07f8SJohn Marino #endif /* CPAGE */
24532fe07f8SJohn Marino #ifndef CPGOFF
24632fe07f8SJohn Marino # define CPGOFF		CONTROL('m')
24732fe07f8SJohn Marino #endif /* CPGOFF */
24832fe07f8SJohn Marino #ifndef CKILL2
24932fe07f8SJohn Marino # define CKILL2		_POSIX_VDISABLE
25032fe07f8SJohn Marino #endif /* CKILL2 */
25132fe07f8SJohn Marino #ifndef CBRK
25232fe07f8SJohn Marino # ifndef masscomp
25332fe07f8SJohn Marino #  define CBRK		0377
25432fe07f8SJohn Marino # else
25532fe07f8SJohn Marino #  define CBRK		'\0'
25632fe07f8SJohn Marino # endif /* masscomp */
25732fe07f8SJohn Marino #endif /* CBRK */
25832fe07f8SJohn Marino #ifndef CMIN
25932fe07f8SJohn Marino # define CMIN		CEOF
26032fe07f8SJohn Marino #endif /* CMIN */
26132fe07f8SJohn Marino #ifndef CTIME
26232fe07f8SJohn Marino # define CTIME		CEOL
26332fe07f8SJohn Marino #endif /* CTIME */
26432fe07f8SJohn Marino 
26532fe07f8SJohn Marino /*
26632fe07f8SJohn Marino  * Fix for sun inconsistency. On termio VSUSP and the rest of the
26732fe07f8SJohn Marino  * ttychars > NCC are defined. So we undefine them.
26832fe07f8SJohn Marino  */
26932fe07f8SJohn Marino #if defined(TERMIO) || defined(POSIX)
27032fe07f8SJohn Marino # if defined(POSIX) && defined(NCCS)
27132fe07f8SJohn Marino #  define NUMCC		NCCS
27232fe07f8SJohn Marino # else
27332fe07f8SJohn Marino #  ifdef NCC
27432fe07f8SJohn Marino #   define NUMCC	NCC
27532fe07f8SJohn Marino #  endif /* NCC */
27632fe07f8SJohn Marino # endif /* POSIX && NCCS */
27732fe07f8SJohn Marino # ifdef NUMCC
27832fe07f8SJohn Marino #  ifdef VINTR
27932fe07f8SJohn Marino #   if NUMCC <= VINTR
28032fe07f8SJohn Marino #    undef VINTR
28132fe07f8SJohn Marino #   endif /* NUMCC <= VINTR */
28232fe07f8SJohn Marino #  endif /* VINTR */
28332fe07f8SJohn Marino #  ifdef VQUIT
28432fe07f8SJohn Marino #   if NUMCC <= VQUIT
28532fe07f8SJohn Marino #    undef VQUIT
28632fe07f8SJohn Marino #   endif /* NUMCC <= VQUIT */
28732fe07f8SJohn Marino #  endif /* VQUIT */
28832fe07f8SJohn Marino #  ifdef VERASE
28932fe07f8SJohn Marino #   if NUMCC <= VERASE
29032fe07f8SJohn Marino #    undef VERASE
29132fe07f8SJohn Marino #   endif /* NUMCC <= VERASE */
29232fe07f8SJohn Marino #  endif /* VERASE */
29332fe07f8SJohn Marino #  ifdef VKILL
29432fe07f8SJohn Marino #   if NUMCC <= VKILL
29532fe07f8SJohn Marino #    undef VKILL
29632fe07f8SJohn Marino #   endif /* NUMCC <= VKILL */
29732fe07f8SJohn Marino #  endif /* VKILL */
29832fe07f8SJohn Marino #  ifdef VEOF
29932fe07f8SJohn Marino #   if NUMCC <= VEOF
30032fe07f8SJohn Marino #    undef VEOF
30132fe07f8SJohn Marino #   endif /* NUMCC <= VEOF */
30232fe07f8SJohn Marino #  endif /* VEOF */
30332fe07f8SJohn Marino #  ifdef VEOL
30432fe07f8SJohn Marino #   if NUMCC <= VEOL
30532fe07f8SJohn Marino #    undef VEOL
30632fe07f8SJohn Marino #   endif /* NUMCC <= VEOL */
30732fe07f8SJohn Marino #  endif /* VEOL */
30832fe07f8SJohn Marino #  ifdef VEOL2
30932fe07f8SJohn Marino #   if NUMCC <= VEOL2
31032fe07f8SJohn Marino #    undef VEOL2
31132fe07f8SJohn Marino #   endif /* NUMCC <= VEOL2 */
31232fe07f8SJohn Marino #  endif /* VEOL2 */
31332fe07f8SJohn Marino #  ifdef VSWTCH
31432fe07f8SJohn Marino #   if NUMCC <= VSWTCH
31532fe07f8SJohn Marino #    undef VSWTCH
31632fe07f8SJohn Marino #   endif /* NUMCC <= VSWTCH */
31732fe07f8SJohn Marino #  endif /* VSWTCH */
31832fe07f8SJohn Marino #  ifdef VDSWTCH
31932fe07f8SJohn Marino #   if NUMCC <= VDSWTCH
32032fe07f8SJohn Marino #    undef VDSWTCH
32132fe07f8SJohn Marino #   endif /* NUMCC <= VDSWTCH */
32232fe07f8SJohn Marino #  endif /* VDSWTCH */
32332fe07f8SJohn Marino #  ifdef VERASE2
32432fe07f8SJohn Marino #   if NUMCC <= VERASE2
32532fe07f8SJohn Marino #    undef VERASE2
32632fe07f8SJohn Marino #   endif /* NUMCC <= VERASE2 */
32732fe07f8SJohn Marino #  endif /* VERASE2 */
32832fe07f8SJohn Marino #  ifdef VSTART
32932fe07f8SJohn Marino #   if NUMCC <= VSTART
33032fe07f8SJohn Marino #    undef VSTART
33132fe07f8SJohn Marino #   endif /* NUMCC <= VSTART */
33232fe07f8SJohn Marino #  endif /* VSTART */
33332fe07f8SJohn Marino #  ifdef VSTOP
33432fe07f8SJohn Marino #   if NUMCC <= VSTOP
33532fe07f8SJohn Marino #    undef VSTOP
33632fe07f8SJohn Marino #   endif /* NUMCC <= VSTOP */
33732fe07f8SJohn Marino #  endif /* VSTOP */
33832fe07f8SJohn Marino #  ifdef VWERASE
33932fe07f8SJohn Marino #   if NUMCC <= VWERASE
34032fe07f8SJohn Marino #    undef VWERASE
34132fe07f8SJohn Marino #   endif /* NUMCC <= VWERASE */
34232fe07f8SJohn Marino #  endif /* VWERASE */
34332fe07f8SJohn Marino #  ifdef VSUSP
34432fe07f8SJohn Marino #   if NUMCC <= VSUSP
34532fe07f8SJohn Marino #    undef VSUSP
34632fe07f8SJohn Marino #   endif /* NUMCC <= VSUSP */
34732fe07f8SJohn Marino #  endif /* VSUSP */
34832fe07f8SJohn Marino #  ifdef VDSUSP
34932fe07f8SJohn Marino #   if NUMCC <= VDSUSP
35032fe07f8SJohn Marino #    undef VDSUSP
35132fe07f8SJohn Marino #   endif /* NUMCC <= VDSUSP */
35232fe07f8SJohn Marino #  endif /* VDSUSP */
35332fe07f8SJohn Marino #  ifdef VREPRINT
35432fe07f8SJohn Marino #   if NUMCC <= VREPRINT
35532fe07f8SJohn Marino #    undef VREPRINT
35632fe07f8SJohn Marino #   endif /* NUMCC <= VREPRINT */
35732fe07f8SJohn Marino #  endif /* VREPRINT */
35832fe07f8SJohn Marino #  ifdef VDISCARD
35932fe07f8SJohn Marino #   if NUMCC <= VDISCARD
36032fe07f8SJohn Marino #    undef VDISCARD
36132fe07f8SJohn Marino #   endif /* NUMCC <= VDISCARD */
36232fe07f8SJohn Marino #  endif /* VDISCARD */
36332fe07f8SJohn Marino #  ifdef VLNEXT
36432fe07f8SJohn Marino #   if NUMCC <= VLNEXT
36532fe07f8SJohn Marino #    undef VLNEXT
36632fe07f8SJohn Marino #   endif /* NUMCC <= VLNEXT */
36732fe07f8SJohn Marino #  endif /* VLNEXT */
36832fe07f8SJohn Marino #  ifdef VSTATUS
36932fe07f8SJohn Marino #   if NUMCC <= VSTATUS
37032fe07f8SJohn Marino #    undef VSTATUS
37132fe07f8SJohn Marino #   endif /* NUMCC <= VSTATUS */
37232fe07f8SJohn Marino #  endif /* VSTATUS */
37332fe07f8SJohn Marino #  ifdef VPAGE
37432fe07f8SJohn Marino #   if NUMCC <= VPAGE
37532fe07f8SJohn Marino #    undef VPAGE
37632fe07f8SJohn Marino #   endif /* NUMCC <= VPAGE */
37732fe07f8SJohn Marino #  endif /* VPAGE */
37832fe07f8SJohn Marino #  ifdef VPGOFF
37932fe07f8SJohn Marino #   if NUMCC <= VPGOFF
38032fe07f8SJohn Marino #    undef VPGOFF
38132fe07f8SJohn Marino #   endif /* NUMCC <= VPGOFF */
38232fe07f8SJohn Marino #  endif /* VPGOFF */
38332fe07f8SJohn Marino #  ifdef VKILL2
38432fe07f8SJohn Marino #   if NUMCC <= VKILL2
38532fe07f8SJohn Marino #    undef VKILL2
38632fe07f8SJohn Marino #   endif /* NUMCC <= VKILL2 */
38732fe07f8SJohn Marino #  endif /* VKILL2 */
38832fe07f8SJohn Marino #  ifdef VBRK
38932fe07f8SJohn Marino #   if NUMCC <= VBRK
39032fe07f8SJohn Marino #    undef VBRK
39132fe07f8SJohn Marino #   endif /* NUMCC <= VBRK */
39232fe07f8SJohn Marino #  endif /* VBRK */
39332fe07f8SJohn Marino #  ifdef VMIN
39432fe07f8SJohn Marino #   if NUMCC <= VMIN
39532fe07f8SJohn Marino #    undef VMIN
39632fe07f8SJohn Marino #   endif /* NUMCC <= VMIN */
39732fe07f8SJohn Marino #  endif /* VMIN */
39832fe07f8SJohn Marino #  ifdef VTIME
39932fe07f8SJohn Marino #   if NUMCC <= VTIME
40032fe07f8SJohn Marino #    undef VTIME
40132fe07f8SJohn Marino #   endif /* NUMCC <= VTIME */
40232fe07f8SJohn Marino #  endif /* VTIME */
40332fe07f8SJohn Marino # endif /* NUMCC */
40432fe07f8SJohn Marino #endif /* !POSIX */
40532fe07f8SJohn Marino 
40632fe07f8SJohn Marino #define	C_INTR		 0
40732fe07f8SJohn Marino #define	C_QUIT		 1
40832fe07f8SJohn Marino #define	C_ERASE		 2
40932fe07f8SJohn Marino #define	C_KILL		 3
41032fe07f8SJohn Marino #define	C_EOF		 4
41132fe07f8SJohn Marino #define	C_EOL		 5
41232fe07f8SJohn Marino #define	C_EOL2		 6
41332fe07f8SJohn Marino #define	C_SWTCH		 7
41432fe07f8SJohn Marino #define	C_DSWTCH	 8
41532fe07f8SJohn Marino #define	C_ERASE2	 9
41632fe07f8SJohn Marino #define	C_START		10
41732fe07f8SJohn Marino #define	C_STOP		11
41832fe07f8SJohn Marino #define	C_WERASE	12
41932fe07f8SJohn Marino #define	C_SUSP		13
42032fe07f8SJohn Marino #define	C_DSUSP		14
42132fe07f8SJohn Marino #define	C_REPRINT	15
42232fe07f8SJohn Marino #define	C_DISCARD	16
42332fe07f8SJohn Marino #define	C_LNEXT		17
42432fe07f8SJohn Marino #define	C_STATUS	18
42532fe07f8SJohn Marino #define	C_PAGE		19
42632fe07f8SJohn Marino #define	C_PGOFF		20
42732fe07f8SJohn Marino #define	C_KILL2		21
42832fe07f8SJohn Marino #define	C_BRK		22
42932fe07f8SJohn Marino #define	C_MIN		23
43032fe07f8SJohn Marino #define	C_TIME		24
43132fe07f8SJohn Marino #define	C_NCC		25
43232fe07f8SJohn Marino #define	C_SH(A)		((unsigned int)(1 << (A)))
43332fe07f8SJohn Marino 
43432fe07f8SJohn Marino /*
435*cdf8408cSAntonio Huete Jimenez  * Terminal dependent data structures
43632fe07f8SJohn Marino  */
43732fe07f8SJohn Marino #define	EX_IO	0	/* while we are executing	*/
43832fe07f8SJohn Marino #define	ED_IO	1	/* while we are editing		*/
43932fe07f8SJohn Marino #define	TS_IO	2	/* new mode from terminal	*/
44032fe07f8SJohn Marino #define	QU_IO	2	/* used only for quoted chars	*/
44132fe07f8SJohn Marino #define	NN_IO	3	/* The number of entries	*/
44232fe07f8SJohn Marino 
44384b940c1SJohn Marino /* Don't re-order */
44432fe07f8SJohn Marino #define	MD_INP	0
44532fe07f8SJohn Marino #define	MD_OUT	1
44632fe07f8SJohn Marino #define	MD_CTL	2
44732fe07f8SJohn Marino #define	MD_LIN	3
44832fe07f8SJohn Marino #define	MD_CHAR	4
44932fe07f8SJohn Marino #define	MD_NN	5
45032fe07f8SJohn Marino 
45132fe07f8SJohn Marino typedef struct {
45232fe07f8SJohn Marino 	const char	*t_name;
45332fe07f8SJohn Marino 	unsigned int	 t_setmask;
45432fe07f8SJohn Marino 	unsigned int	 t_clrmask;
45532fe07f8SJohn Marino } ttyperm_t[NN_IO][MD_NN];
45632fe07f8SJohn Marino 
45732fe07f8SJohn Marino typedef unsigned char ttychar_t[NN_IO][C_NCC];
45832fe07f8SJohn Marino 
45912db70c8Szrj libedit_private int	tty_init(EditLine *);
460ae19eda8Szrj libedit_private void	tty_end(EditLine *, int);
46112db70c8Szrj libedit_private int	tty_stty(EditLine *, int, const wchar_t **);
46212db70c8Szrj libedit_private int	tty_rawmode(EditLine *);
46312db70c8Szrj libedit_private int	tty_cookedmode(EditLine *);
46412db70c8Szrj libedit_private int	tty_quotemode(EditLine *);
46512db70c8Szrj libedit_private int	tty_noquotemode(EditLine *);
46612db70c8Szrj libedit_private void	tty_bind_char(EditLine *, int);
467ae19eda8Szrj libedit_private int	tty_get_signal_character(EditLine *, int);
46832fe07f8SJohn Marino 
46932fe07f8SJohn Marino typedef struct {
47032fe07f8SJohn Marino     ttyperm_t t_t;
47132fe07f8SJohn Marino     ttychar_t t_c;
472c8e4d2bfSJohn Marino     struct termios t_or, t_ex, t_ed, t_ts;
47332fe07f8SJohn Marino     int t_tabs;
47432fe07f8SJohn Marino     int t_eight;
47532fe07f8SJohn Marino     speed_t t_speed;
47612db70c8Szrj     unsigned char t_mode;
47732fe07f8SJohn Marino     unsigned char t_vdisable;
47812db70c8Szrj     unsigned char t_initialized;
47932fe07f8SJohn Marino } el_tty_t;
48032fe07f8SJohn Marino 
48132fe07f8SJohn Marino 
48232fe07f8SJohn Marino #endif /* _h_el_tty */
483