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