1 H
   2 !rm -f bool num str boolnames numnames strnames boolvals numvals strvals tnames.c tinames.c tifnames.c term.h ./tmp/term.h.new ./tmp/tmp.awk ./tmp/term.h
   3 e caps
   4 g/^#/d
   5 /--- begin bool/+1,/--- end bool/-1 w bool
   6 /--- begin num/+1,/--- end num/-1 w num
   7 /--- begin str/+1,/--- end str/-1 w str
   8 E bool
   9 1,$s/"  .*/", /
  10 1,$s/.* "/"/
  11 1,$-10g/^/.,+9j
  12 +,$j
  13 1i
  14 char    *boolnames[] =
  15         {
  16 .
  17 $a
  18 0
  19         };
  20 
  21 .
  22 w tinames.c
  23 e bool
  24 1,$s/^[^"]*"[^"]*".//
  25 1,$s/"  .*/", /
  26 1,$-10g/^/.,+9j
  27 +,$j
  28 1i
  29 char    *boolcodes[] =
  30         {
  31 .
  32 $a
  33 0
  34         };
  35 
  36 .
  37 w tnames.c
  38 e bool
  39 1,$s/^\([a-z][0-9a-z_]*\),.*/"\1", /
  40 1,$-4g/^/.,+3j
  41 +,$j
  42 1i
  43 char    *boolfnames[] =
  44         {
  45 .
  46 $a
  47 0
  48         };
  49 
  50 .
  51 w tifnames.c
  52 e bool
  53 1,$s;"[^"]*"[   ]*".."  ;/* ;
  54 1,$s;$; */;
  55 1,$s;^; ;
  56 1i
  57     char
  58 .
  59 $a
  60         Sentinel;               /* End of bools. DO NOT MOVE! */
  61 .
  62 w boolvals
  63 e num
  64 1,$s/"  .*/", /
  65 1,$s/.* "/"/
  66 1,$-10g/^/.,+9j
  67 +,$j
  68 1i
  69 char    *numnames[] =
  70         {
  71 .
  72 $a
  73 0
  74         };
  75 
  76 .
  77 0r tinames.c
  78 w tinames.c
  79 e num
  80 1,$s/^[^"]*"[^"]*".//
  81 1,$s/"  .*/", /
  82 1,$-10g/^/.,+9j
  83 +,$j
  84 1i
  85 char    *numcodes[] =
  86         {
  87 .
  88 $a
  89 0
  90         };
  91 
  92 .
  93 0r tnames.c
  94 w tnames.c
  95 e num
  96 1,$s/^\([a-z][0-9a-z_]*\),.*/"\1", /
  97 1,$-4g/^/.,+3j
  98 +,$j
  99 1i
 100 char    *numfnames[] =
 101         {
 102 .
 103 $a
 104 0
 105         };
 106 
 107 .
 108 0r tifnames.c
 109 w tifnames.c
 110 e num
 111 1,$s;"[^"]*"[   ]*".."  ;/* ;
 112 1,$s;$; */;
 113 1,$s;^; ;
 114 1i
 115     short
 116 .
 117 $a
 118         Sentinel;               /* End of nums. DO NOT MOVE! */
 119 .
 120 w numvals
 121 e str
 122 1,$s/"  .*/", /
 123 1,$s/.* "/"/
 124 1,$-10g/^/.,+9j
 125 +,$j
 126 1i
 127 char    *strnames[] =
 128         {
 129 .
 130 $a
 131 0
 132         };
 133 
 134 .
 135 0r tinames.c
 136 w tinames.c
 137 e str
 138 1,$s/^[^"]*"[^"]*".//
 139 1,$s/"  .*/", /
 140 1,$-10g/^/.,+9j
 141 +,$j
 142 1i
 143 char    *strcodes[] =
 144         {
 145 .
 146 $a
 147 0
 148         };
 149 
 150 .
 151 0r tnames.c
 152 w tnames.c
 153 e str
 154 1,$s/^\([a-z][0-9a-z_]*\),.*/"\1", /
 155 1,$-4g/^/.,+3j
 156 +,$j
 157 1i
 158 char    *strfnames[] =
 159         {
 160 .
 161 $a
 162 0
 163         };
 164 
 165 .
 166 0r tifnames.c
 167 w tifnames.c
 168 e str
 169 1,$s;"[^"]*"[   ]*".."  ;/* ;
 170 1,$s;$; */;
 171 1,$s;^; strs.;
 172 $a
 173         Sentinel;               /* End of strings. DO NOT MOVE! */
 174 .
 175 w strvals
 176 1,$d
 177 r tnames.c
 178 1i
 179 /* tnames.c: Made automatically from caps and maketerm.ed - don't edit me! */
 180 .
 181 1,$s/ $//
 182 0r copyright.h
 183 1,.g/#pragma ident/d
 184 w tnames.c
 185 1,$d
 186 r tinames.c
 187 1i
 188 /* tinames.c: Made automatically from caps and maketerm.ed - don't edit me! */
 189 .
 190 1,$s/ $//
 191 0r copyright.h
 192 1,.g/#pragma ident/d
 193 w tinames.c
 194 1,$d
 195 r tifnames.c
 196 1i
 197 /* tifnames.c: Made automatically from caps and maketerm.ed - don't edit me! */
 198 .
 199 1,$s/ $//
 200 0r copyright.h
 201 1,.g/#pragma ident/d
 202 w tifnames.c
 203 e bool
 204 1,$d
 205 a
 206 
 207 typedef char *charptr;
 208 struct strs {
 209     charptr
 210 .
 211 r strvals
 212 1,.s/strs\.//
 213 $a
 214 };
 215 
 216 struct _bool_struct {
 217 .
 218 r boolvals
 219 a
 220 };
 221 
 222 struct _num_struct {
 223 .
 224 r numvals
 225 a
 226 };
 227 .
 228 w ./tmp/term.h.new
 229 e ./tmp/term.h.new
 230 g/^     ./s/^   /       _/
 231 w ./tmp/term.h.new
 232 e boolvals
 233 .kb
 234 .r numvals
 235 .kn
 236 1,$v/^  /d
 237 1,$s/^  //
 238 1,$s/   [^      ].*/    /
 239 1,$s/,/ /
 240 1,'bs/.*/#define        &   CURB _&/
 241 'b+1,'ns/.*/#define     &   CURN _&/
 242 1,$g/;/d
 243 w ./tmp/term.h.new2
 244 e strvals
 245 1,$v/^  /d
 246 1,$s/^  //
 247 1,$s/   [^      ].*/    /
 248 1,$s/,/ /
 249 1,$s/.*/#define &   CURS _&/
 250 1,$s/strs\.//
 251 1,$s/strs.\(.\)/strs._\1/
 252 1,$g/;/d
 253 w
 254 e ./tmp/term.h.new2
 255 $r strvals
 256 w ./tmp/term.h.new1
 257 e ./tmp/term.h.new1
 258 $r ./tmp/term.h.new
 259 w ./tmp/term.h.new
 260 e ./tmp/term.h.new
 261 1,$s/[  ]*$//
 262 1,$s/CURS _strs/CURS strs/
 263 w ./tmp/term.h.new
 264 e ./tmp/term.h.new
 265 1;/CURS strs/+100;.,+99s/CURS strs/CURS strs2/
 266 .+1,+100s/CURS strs/CURS strs3/
 267 .+1,$s/CURS strs/CURS strs4/
 268 /^struct strs/+101s/,/;/
 269 a
 270 };
 271 
 272 struct strs2 {
 273     charptr
 274 .
 275 +100s/,/;/
 276 a
 277 };
 278 
 279 struct strs3 {
 280     charptr
 281 .
 282 +100s/,/;/
 283 a
 284 };
 285 
 286 struct strs4 {
 287     charptr
 288 .
 289 1,$s/_Sentinel/Sentinel/
 290 w ./tmp/term.h.new
 291 e ./tmp/term.h.new
 292 g/[     .]_cursor_/s/_cursor_/_crsr_/
 293 g/[     .]_delete_/s/_delete_/_dlt_/
 294 g/[     .]_enter_/s/_enter_/_entr_/
 295 g/[     .]_insert_/s/_insert_/_ins_/
 296 g/[     .]_key_/s/_key_/_ky_/
 297 g/[     .]_keypad_/s/_keypad_/_kpad_/
 298 g/[     .]_label_/s/_label_/_labl_/
 299 g/[     .]_memory_/s/_memory_/_mem_/
 300 g/[     .]_parm_/s/_parm_/_prm_/
 301 g/[     .]_scroll_/s/_scroll_/_scrll_/
 302 g/^     _......[,;]                     \//s/,  /,/
 303 g/^     _..............[,;]             \//s/,  /,/
 304 g/^     _......................[,;]     \//s/,  /,/
 305 w ./tmp/term.h.new
 306 e ./tmp/term.h.new
 307 !# the following lines GO away when Vr2 compat code goes away
 308 1;/^#define     auto_left_margin/,/^#define     xon_xoff/s/CURB.*/CUR _b/
 309 1;/^#define     auto_left_margin/,/^#define     xon_xoff/w ./tmp/tmp.term.h
 310 1;/^#define     auto_left_margin/,/^#define     xon_xoff/d
 311 !/usr/bin/print '{printf "\%s\%d\\n", $0,++i}' > ./tmp/tmp.awk
 312 .-1r !awk -f ./tmp/tmp.awk < ./tmp/tmp.term.h
 313 1;/^#define     columns/,/^#define      width_status_line/s/CURN.*/CUR _c/
 314 1;/^#define     columns/,/^#define      width_status_line/w ./tmp/tmp.term.h
 315 1;/^#define     columns/,/^#define      width_status_line/d
 316 !/usr/bin/print '{printf "\%s\%d\\n", $0,++i}' > ./tmp/tmp.awk
 317 .-1r !awk -f ./tmp/tmp.awk < ./tmp/tmp.term.h
 318 1;/^#define     back_tab/,/^#define     lab_f8/s/CURS.*/CUR _Vr2_Astrs._s/
 319 1;/^#define     back_tab/,/^#define     lab_f8/w ./tmp/tmp.term.h
 320 1;/^#define     back_tab/,/^#define     lab_f8/d
 321 !/usr/bin/print '{printf "\%s\%d\\n", $0,++i}' > ./tmp/tmp.awk
 322 .-1r !awk -f ./tmp/tmp.awk < ./tmp/tmp.term.h
 323 1;/^#define     lab_f9/,/^#define       prtr_non/s/CURS.*/CUR _Vr2_Bstrs._s/
 324 1;/^#define     lab_f9/,/^#define       prtr_non/w ./tmp/tmp.term.h
 325 1;/^#define     lab_f9/,/^#define       prtr_non/d
 326 !/usr/bin/print 'BEGIN{i=100}\n{printf "\%s\%d\\n", $0,++i}' > ./tmp/tmp.awk
 327 .-1r !awk -f ./tmp/tmp.awk < ./tmp/tmp.term.h
 328 !rm -f ./tmp/tmp.term.h ./tmp/tmp.awk
 329 w ./tmp/term.h.new
 330 e ./tmp/term.h.new
 331 !# Vr2 compat code ends here
 332 1i
 333 #ifndef _TERM_H
 334 #define _TERM_H
 335 
 336 /*
 337  * term.h - this file is automatically made from caps and maketerm.ed.
 338  * Don't make changes directly to term.h.
 339  */
 340 
 341 #ifdef  __cplusplus
 342 extern "C" {
 343 #endif
 344 
 345 .
 346 $a
 347 
 348 struct _str_struct {
 349         struct strs strs;
 350         struct strs2 strs2;
 351         struct strs3 strs3;
 352         struct strs4 strs4;
 353 };
 354 
 355 #define NUM_ATTRIBUTES  9
 356 #define UNACCESSIBLE            1
 357 #define NO_TERMINAL             2
 358 #define CORRUPTED               3
 359 #define ENTRY_TOO_LONG          4
 360 #define TERMINFO_TOO_LONG       5
 361 #define TERM_BAD_MALLOC         6
 362 #define NOT_READABLE            7
 363 #define _VR2_COMPAT_CODE
 364 #ifdef _VR2_COMPAT_CODE
 365 struct _Vr2_Astrs {
 366     charptr
 367         _s1,  _s2,  _s3,  _s4,  _s5,  _s6,  _s7,  _s8,  _s9,  _s10,
 368         _s11, _s12, _s13, _s14, _s15, _s16, _s17, _s18, _s19, _s20,
 369         _s21, _s22, _s23, _s24, _s25, _s26, _s27, _s28, _s29, _s30,
 370         _s31, _s32, _s33, _s34, _s35, _s36, _s37, _s38, _s39, _s40,
 371         _s41, _s42, _s43, _s44, _s45, _s46, _s47, _s48, _s49, _s50,
 372         _s51, _s52, _s53, _s54, _s55, _s56, _s57, _s58, _s59, _s60,
 373         _s61, _s62, _s63, _s64, _s65, _s66, _s67, _s68, _s69, _s70,
 374         _s71, _s72, _s73, _s74, _s75, _s76, _s77, _s78, _s79, _s80,
 375         _s81, _s82, _s83, _s84, _s85, _s86, _s87, _s88, _s89, _s90,
 376         _s91, _s92, _s93, _s94, _s95, _s96, _s97, _s98, _s99, _s100;
 377 };
 378 
 379 struct _Vr2_Bstrs {
 380     charptr
 381         _s101, _s102, _s103, _s104, _s105, _s106, _s107, _s108, _s109, _s110,
 382         _s111, _s112, _s113, _s114, _s115, _s116, _s117, _s118, _s119, _s120,
 383         _s121, _s122, _s123, _s124, _s125, _s126, _s127, _s128, _s129, _s130,
 384         _s131, _s132, _s133, _s134, _s135, _s136, _s137, _s138, _s139, _s140,
 385         _s141, _s142, _s143, _s144, _s145;
 386 };
 387 #endif /* _VR2_COMPAT_CODE */
 388 
 389 typedef struct {
 390         char    *_sends;        /* Characters sent when key is pressed */
 391         short   _keyval;        /* "char" we pass back to program */
 392 } _KEY_MAP;
 393 
 394 typedef struct {
 395         short   foreground;     /* foreground color */
 396         short   background;     /* background color */
 397         bool    init;           /* TRUE if pair was initialized */
 398 } _Color_pair;
 399 
 400 
 401 typedef struct {
 402         short   r, g, b;
 403 } _Color;
 404 
 405 
 406 /*
 407  * This definition for the term struct allows the boolean, number
 408  * and string information to grow in the future and still allow .o
 409  * compatibility.
 410  */
 411 
 412 struct term {
 413 #ifdef _VR2_COMPAT_CODE
 414     char
 415         _b1,  _b2,  _b3,  _b4,  _b5,  _b6,  _b7,  _b8,  _b9,  _b10,
 416         _b11, _b12, _b13, _b14, _b15, _b16, _b17, _b18, _b19, _b20, _b21;
 417     short
 418         _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8;
 419         struct _Vr2_Astrs _Vr2_Astrs;
 420         struct _Vr2_Bstrs _Vr2_Bstrs;
 421 #endif /* _VR2_COMPAT_CODE */
 422         short   Filedes;        /* file descriptor being written to */
 423         SGTTY   Ottyb,          /* original state of the terminal */
 424                 Nttyb;          /* current state of the terminal */
 425 #ifdef SYSV
 426         SGTTYS  Ottybs,         /* original state of the terminal */
 427                 Nttybs;         /* current state of the terminal */
 428 #endif
 429 #ifdef DIOCSETT
 430         struct termcb new, old; /* CB/UNIX virtual terminals */
 431 #endif
 432 #ifdef LTILDE
 433         int newlmode, oldlmode; /* BSD tty driver */
 434 #endif
 435         /* end of Vr2 structure */
 436         struct _bool_struct *_bools;
 437         struct _num_struct *_nums;
 438         struct _str_struct *_strs;
 439         char    *_strtab;
 440 #ifdef FIONREAD
 441         long    timeout;                /* for BSD halfdelay mode */
 442 #endif
 443         /* end of Vr3 structure */
 444         chtype  sgr_mode;               /* current phys. graphic rendition */
 445         chtype  sgr_faked;              /* attributes faked by vidputs */
 446         int     _delay;                 /* timeout for inputs */
 447         int     _inputfd;               /* input file descriptor */
 448         int     _check_fd;              /* typeahead file descriptor */
 449         _KEY_MAP        **_keys,        /* key map */
 450                         *internal_keys; /* pointer to free key structures */
 451         short           _ksz,           /* size of keymap */
 452                         _lastkey_ordered, /* where the last ordered key is */
 453                         _lastmacro_ordered, /* where last ordered macro is */
 454                         _first_macro;
 455         bool            funckeystarter[0400];
 456                                         /* map of which chars start fn keys */
 457         bool            _fl_rawmode,    /* in cbreak(=1) or raw(=2) mode */
 458                         fl_typeahdok,   /* ok to use typeahead */
 459                         _cursorstate,   /* cursor: 0=invis, 1=norm, 2=vvis */
 460                         _iwait;         /* true if input-pending */
 461         short           _regs[26];      /* tparm static registers */
 462 #define INP_QSIZE       32
 463         chtype                          /* a place to put stuff ungetch'ed */
 464                         _input_queue[INP_QSIZE];
 465         short   _ungotten;      /* # chars ungotten by ungetch() */
 466         char            _chars_on_queue; /* # chars on queue */
 467 #ifdef _VR3_COMPAT_CODE
 468         _ochtype        *_acsmap;
 469         chtype          *_acs32map;     /* map of alternate char set chars */
 470 #else /* _VR3_COMPAT_CODE */
 471         chtype          *_acsmap;       /* map of alternate char set chars */
 472 #endif /* _VR3_COMPAT_CODE */
 473         char            *turn_on_seq[NUM_ATTRIBUTES];
 474         chtype          bit_vector;
 475         char            *cursor_seq[3];
 476         char            _termname[15];
 477         char            *turn_off_seq[3];
 478         chtype          check_turn_off;
 479         chtype          non_faked_mode;
 480         _Color_pair     _cur_pair;
 481         _Color_pair     *_pairs_tbl;
 482         _Color          *_color_tbl;
 483 };
 484 
 485 typedef struct term TERMINAL;
 486 
 487 /* allow old names for these capabilities */
 488 #define beehive_glitch  no_esc_ctlc
 489 #define teleray_glitch  dest_tabs_magic_smso
 490 
 491 extern TERMINAL                 *cur_term;
 492 extern struct _bool_struct      *cur_bools;
 493 extern struct _num_struct       *cur_nums;
 494 extern struct _str_struct       *cur_strs;
 495 
 496 #ifdef  SINGLE
 497 extern TERMINAL                 _first_term;
 498 extern struct _bool_struct      _frst_bools;
 499 extern struct _num_struct       _frst_nums;
 500 extern struct _str_struct       _frst_strs;
 501 
 502 #define CUR                     _first_term.
 503 #define CURB                    _frst_bools.
 504 #define CURN                    _frst_nums.
 505 #define CURS                    _frst_strs.
 506 #define PROGTTY                 _first_term.Nttyb
 507 #define SHELLTTY                _first_term.Ottyb
 508 #ifdef SYSV
 509 #define PROGTTYS                _first_term.Nttybs
 510 #define SHELLTTYS               _first_term.Ottybs
 511 #endif
 512 #else
 513 #define CUR                     cur_term->
 514 #define CURB                    cur_bools->
 515 #define CURN                    cur_nums->
 516 #define CURS                    cur_strs->
 517 #define PROGTTY                 (cur_term->Nttyb)
 518 #define SHELLTTY                (cur_term->Ottyb)
 519 #ifdef SYSV
 520 #define PROGTTYS                (cur_term->Nttybs)
 521 #define SHELLTTYS               (cur_term->Ottybs)
 522 #endif
 523 #endif
 524 
 525 #ifndef NOMACROS
 526 #define set_curterm     setcurterm
 527 #define del_curterm     delterm
 528 #else   /* NOMACROS */
 529 
 530 #ifdef  __STDC__
 531 extern  TERMINAL        *set_curterm(TERMINAL *);
 532 extern  int             del_curterm(TERMINAL *);
 533 #else   /* __STDC__ */
 534 extern  TERMINAL        *set_curterm();
 535 extern  int             del_curterm();
 536 #endif  /* __STDC__ */
 537 
 538 #endif  /* NOMACROS */
 539 
 540 extern  short   term_errno;
 541 
 542 #ifdef SYSV
 543 extern  int     prog_istermios;
 544 extern  int     shell_istermios;
 545 #endif
 546 
 547 extern  char    term_parm_err[], *term_err_strings[], *Def_term,
 548                 *boolnames[], *boolcodes[], *boolfnames[],
 549                 *numnames[], *numcodes[], *numfnames[],
 550                 *strnames[], *strcodes[], *strfnames[];
 551 
 552 #ifdef __STDC__
 553 extern  TERMINAL        *setcurterm(TERMINAL *);
 554 
 555 #if defined(_XPG4_2) || defined(_LP64) || defined(__cplusplus)
 556 extern  char
 557         *tparm(char *, long, long, long, long, long, long, long, long, long);
 558 #else
 559 /* this is wrong, but is needed for historical reasons */
 560 extern  char    *tparm();
 561 #endif
 562 
 563 extern char     *tgoto(char *, int, int),
 564                 *tgetstr(char *, char **),
 565                 *tigetstr(char *),
 566                 *termname(void);
 567 
 568 extern  int     tgetent(char *, char *), tgetflag(char *), tgetnum(char *),
 569                 tputs(char *, int, int (*)(char)), putp(char *),
 570                 tigetint(char *), tigetflag(char *), tigetnum(char *),
 571                 vidputs(chtype, int (*)(char)), vidattr(chtype);
 572 
 573 extern  int     resetterm(void), fixterm(void), saveterm(void),
 574                 restartterm(char *, int, int *), delterm(TERMINAL *);
 575 
 576 extern  void    termerr(void), tinputfd(int);
 577 #else  /* __STDC__ */
 578 extern  TERMINAL        *setcurterm();
 579 extern  char    *tparm(), *tgoto(), *tgetstr(), *tigetstr(),
 580                 *termname();
 581 
 582 extern  int     tgetent(), tgetflag(), tgetnum(),
 583                 tigetint(), tigetflag(), tigetnum(),
 584                 tputs(), putp(), vidputs(), vidattr();
 585 
 586 extern  int     resetterm(), fixterm(), saveterm(),
 587                 restartterm(), delterm();
 588 
 589 extern  void    termerr(), tinputfd();
 590 #endif /* __STDC__ */
 591 
 592 #ifdef  __cplusplus
 593 }
 594 #endif
 595 
 596 #endif  /* _TERM_H */
 597 .
 598 0r copyright.h
 599 1,.g/#pragma ident/d
 600 g/\@(\#)maketerm.ed/s//\@(\#)term.h/
 601 1,$s/,\/\*/, \/\*/
 602 w term.h
 603 !rm -f boolnames boolvals bool numnames numvals num strnames strvals str ./tmp/term.h.new ./tmp/tmp.awk ./tmp/tmp.term.h
 604 q