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