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