diff options
Diffstat (limited to 'troff/tdef.h')
| -rw-r--r-- | troff/tdef.h | 959 |
1 files changed, 959 insertions, 0 deletions
diff --git a/troff/tdef.h b/troff/tdef.h new file mode 100644 index 0000000000000..f5b3d4de7e0dd --- /dev/null +++ b/troff/tdef.h @@ -0,0 +1,959 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +/* from OpenSolaris "tdef.h 1.11 05/06/08 SMI" */ + +/* + * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany + * + * Sccsid @(#)tdef.h 1.165 (gritter) 10/23/09 + * + * Portions Copyright (c) 2014 Carsten Kunze <carsten.kunze@arcor.de> + */ + +/* + * University Copyright- Copyright (c) 1982, 1986, 1988 + * The Regents of the University of California + * All Rights Reserved + * + * University Acknowledgment- Portions of this document are derived from + * software developed by the University of California, Berkeley, and its + * contributors. + */ + +#include "global.h" + +/* starting values for typesetting parameters: */ + +#define PS 10 /* default point size */ +#define FT 1 /* default font position */ +#define ULFONT 2 /* default underline font */ +#define BDFONT 3 /* default emboldening font */ +#define BIFONT 4 /* default bold italic font */ +#define LL (unsigned) 65*INCH/10 /* line length; 39picas=6.5in */ +#define VS ((12*INCH)/72) /* initial vert space */ + +#ifdef NROFF +# define EM t.Em +# define HOR t.Adj +# define VERT t.Vert +# define INCH 240 /* increments per inch */ +# define SPS INCH/10 /* space size */ +# define SS INCH/10 /* " */ +# define SES SPS /* sentence space size */ +# define SSS SS /* " */ +# define TRAILER 0 +# define PO 0 /* page offset */ +# define ASCII 1 +# define PTID 1 +# define LG 0 +# define DTAB 0 /* set at 8 Ems at init time */ +# define ICS 2*SPS +#endif +#ifndef NROFF /* TROFF */ + /* Inch is set by ptinit() when troff started. */ + /* all derived values set then too + */ +# define INCH Inch /* troff resolution -- number of goobies/inch */ +# define POINT (INCH/72) /* goobies per point (1/72 inch) */ +# define HOR Hor /* horizontal resolution in goobies */ +# define VERT Vert /* vertical resolution in goobies */ +# define SPS (EM/3) /* space size */ +# define SES SPS /* sentence space size */ +# define SS 12 /* space size in 36ths of an em */ +# define SSS SS /* sentence space size in 36ths of an em */ +# define PO (INCH) /* page offset 1 inch */ +/* # define EM (POINT * pts) */ +#define EM (((long) INCH * u2pts(pts) + 36) / 72) /* don't lose significance */ +#define EMPTS(pts) (((long) INCH * u2pts(pts) + 36) / 72) +# define ASCII 0 +# define PTID 1 +# define LG 1 +# define DTAB (INCH/2) +# define ICS 3*SPS +#endif + +/* These "characters" are used to encode various internal functions + * Some make use of the fact that most ascii characters between + * 0 and 040 don't have any graphic or other function. + * The few that do have a purpose (e.g., \n, \b, \t, ... + * are avoided by the ad hoc choices here. + * See ifilt[] in n1.c for others -- 1, 2, 3, 5, 6, 7, 010, 011, 012 + */ + +#define LEADER 001 +#define IMP 004 /* impossible char; glues things together */ +#define TAB 011 +#define RPT 014 /* next character is to be repeated many times */ +#define CHARHT 015 /* size field sets character height */ +#define SLANT 016 /* size field sets amount of slant */ +#define DRAWFCN 017 /* next several chars describe arb drawing fcn */ + /* line: 'l' dx dy char */ + /* circle: 'c' r */ + /* ellipse: 'e' rx ry */ + /* arc: 'a' dx dy r */ + /* wiggly line '~' x y x y ... */ +#define DRAWLINE 'l' +#define DRAWCIRCLE 'c' /* circle */ +#define DRAWCIRCLEFI 'C' /* filled circle */ +#define DRAWELLIPSE 'e' +#define DRAWELLIPSEFI 'E' /* filled ellipse */ +#define DRAWARC 'a' /* arbitrary arc */ +#define DRAWSPLINE '~' /* quadratic B spline */ +#define DRAWTHICKNESS 't' /* line thickness */ +#define DRAWPOLYGON 'p' /* polygon */ +#define DRAWPOLYGONFI 'P' /* filled polygon */ + +#define LEFT 020 /* \{ */ +#define RIGHT 021 /* \} */ +#define FILLER 022 /* \& and similar purposes */ +#define XON 023 /* \X'...' starts here */ +#define OHC 024 /* optional hyphenation character \% */ +#define CONT 025 /* \c character */ +#define PRESC 026 /* printable escape */ +#define UNPAD 027 /* unpaddable blank */ +#define STRETCH 037 /* stretchable but unbreakable blank */ +#define XPAR 030 /* transparent mode indicator */ +#define FLSS 031 +#define WORDSP 032 /* paddable word space */ +#define ESC 033 +#define XOFF 034 /* \X'...' ends here */ + +#define iscontrol(n) (n==035 || n==036) /* used to test the next two */ +#define HX 035 /* next character is value of \x'...' */ +#define FONTPOS 036 /* position of font \f(XX encoded in top */ + +#define XFUNC 013 /* extended function codes, type in fbits: */ +#define ANCHOR 0001 /* anchor definition */ +#define LINKON 0002 /* link start */ +#define LINKOFF 0003 /* link end */ +#define LETSP 0004 /* positive letter spacing */ +#define NLETSP 0005 /* negative letter spacing */ +#define FLDMARK 0006 /* field marker */ +#define LETSH 0007 /* expanded letter shapes */ +#define NLETSH 0010 /* condensed letter shapes */ +#define HYPHED 0011 /* previous character is an automatic hyphen */ +#define OLT 0012 /* output line trap */ +#define YON 0013 /* indirect copy through */ +#define CC 0014 /* unchangeable control character */ +#define RQ 0015 /* request number */ +#define CHAR 0022 /* formatted result of a .char execution */ +#define INDENT 0023 /* current indent (informational only, no move) */ +#define PENALTY 0024 /* line breaking penalty */ +#define DPENAL 0025 /* default line breaking penalty change */ +#define ULINKON 0026 /* ulink start */ +#define ULINKOFF 0027 /* ulink end */ + +#define isxfunc(c, x) (cbits(c) == XFUNC && fbits(c) == (x)) + +#define LAFACT 1000 /* letter adjustment float-to-int conversion factor */ + +#define HYPHEN c_hyphen +#define EMDASH c_emdash /* \(em */ +#define RULE c_rule /* \(ru */ +#define MINUS c_minus /* minus sign on current font */ +#define LIG_FI c_fi /* \(ff */ +#define LIG_FL c_fl /* \(fl */ +#define LIG_FF c_ff /* \(ff */ +#define LIG_FFI c_ffi /* \(Fi */ +#define LIG_FFL c_ffl /* \(Fl */ +#define ACUTE c_acute /* acute accent \(aa */ +#define GRAVE c_grave /* grave accent \(ga */ +#define UNDERLINE c_under /* \(ul */ +#define ROOTEN c_rooten /* root en \(rn */ +#define BOXRULE c_boxrule /* box rule \(br */ +#define LEFTHAND c_lefthand /* left hand for word overflow */ +#define DAGGER c_dagger /* dagger for footnotes */ + +/* array sizes, and similar limits: */ + +#define NFONT 10 /* maximum number of fonts (including specials, !afm) */ +#define EXTRAFONT 500 /* extra space for swapping a font */ +extern int NN; /* number registers */ +#define NNAMES 15 /* predefined reg names */ +extern int NS; /* name buffer */ +#define NTM 4096 /* tm buffer */ +#define NEV 3 /* environments */ +#define EVLSZ 10 /* size of ev stack */ +#define DSIZE 512 /* disk sector size in chars */ + +extern int NM; /* requests + macros */ +#define NHYP 40 /* max hyphens per word */ +#define NTAB 40 /* tab stops */ +#define NSO 5 /* "so" depth */ +extern int NMF; /* size of space for -m flags */ +#define WDSIZE 540 /* default word buffer size */ +#define LNSIZE 680 /* default line buffer size */ +extern int NDI; /* number of diversions */ +extern int NCHARS; /* maximum size of troff character set */ +#define NTRTAB NCHARS /* number of items in trtab[] */ +#define NWIDCACHE NCHARS /* number of items in widcache */ +#define NTRAP 20 /* number of traps */ +#define NPN 20 /* numbers in "-o" */ +#define FBUFSZ 512 /* field buf size words */ +#define OBUFSZ 4096 /* bytes */ +#define IBUFSZ 4096L /* bytes */ +#define NC 1024 /* cbuf size words */ +#define NOV 10 /* number of overstrike chars */ +#define NPP 10 /* pads per field */ +#define NSENT 40 /* number of sentence end characters */ + +/* + Internal character representation: + Internally, every character is carried around as + a 64 bit cookie, called a "tchar" (typedef int64_t). + Bits are numbered 63..0 from left to right. + If bit 21 is 1, the character is motion, with + if bit 22 it's vertical motion + if bit 23 it's negative motion + If bit 21 is 0, the character is a real character. + if bit 63 zero motion + bits 62..40 size + bits 39..32 font +*/ + +/* in the following, "LL" should really be a tchar, but ... */ + +#define MOT (01LL<<21) /* motion character indicator */ +#define VMOT (01LL<<22) /* vert motion bit */ +#define NMOT (01LL<<23) /* negative motion indicator*/ +#define BMBITS 0x001FFFFFLL /* basic absolute motion bits */ +#define XMBITS 0x03000000LL /* extended absolute motion bits */ +#define XMSHIFT 3 /* extended absolute motion shift */ +#define MAXMOT 0x007FFFFFLL /* bad way to write this!!! */ + +#define ismot(n) ((n) & MOT) +#define isvmot(n) ((n) & VMOT) /* must have tested MOT previously */ +#define isnmot(n) ((n) & NMOT) /* ditto */ +#define absmot(n) (unsigned long)((BMBITS&(n)) | ((n)&XMBITS)>>XMSHIFT) +#define sabsmot(n) (!xflag || (n) <= MAXMOT ? ((n)&BMBITS) | ((n)&~BMBITS)<<XMSHIFT : moflo(n)) + +#define ZBIT (01ULL << 63) /* zero width char */ +#define iszbit(n) ((n) & ZBIT) +#define BLBIT (01ULL << 31) /* optional break-line char */ +#define isblbit(n) ((n) & BLBIT) +#define COPYBIT (01ULL << 30) /* wide character in copy mode */ +#define iscopy(n) ((n) & COPYBIT && !ismot(n) && cbits(n) & ~0177) +#define ADJBIT (01ULL << 30) /* adjusted space */ +#define isadjspc(n) ((n) & ADJBIT && !ismot(n) && (cbits(n) & ~0177) == 0 \ + && cbits(n) != FILLER) +#define isadjmot(n) ((n) & ADJBIT && ismot(n)) +#define TRANBIT (01ULL << 30) /* transparent filler */ +#define istrans(n) ((n) & TRANBIT && cbits(n) == FILLER) +#define AUTOLIG (01ULL << 29) /* ligature substituted automatically */ +#define islig(n) ((n) & AUTOLIG) +#define TAILBIT (01ULL << 29) /* tail recursion */ +#define istail(n) (((n) & (TAILBIT|MOT|'\n')) == (TAILBIT|'\n')) +#define SENTSP (01ULL << 29) /* sentence space */ +#define issentsp(n) ((n) & SENTSP) +#define DIBIT (01ULL << 28) /* written in a diversion */ +#define isdi(n) ((n) & DIBIT) + +#define SMASK (037777777LL << 40) +#define FMASK (0377LL << 32) +#define SFMASK (SMASK|FMASK) /* size and font in a tchar */ +#define sbits(n) (unsigned)(((n) >> 40) & 037777777) +#define fbits(n) (((n) >> 32) & 0377) +#define sfbits(n) (unsigned)(037777777777UL & (((n) & SFMASK) >> 32)) +#define cbits(n) (unsigned)(0x003FFFFFLL & (n)) /* isolate bottom 22 bits */ + +#define setsbits(n,s) n = (n & ~SMASK) | (tchar)(s) << 40 +#define setfbits(n,f) n = (n & ~FMASK) | (tchar)(f) << 32 +#define setsfbits(n,sf) n = (n & ~SFMASK) | (tchar)(sf) << 32 +#define setcbits(n,c) n = ((n & ~0x001FFFFFLL) | (c)) /* set character bits */ + +#define BYTEMASK 0377 +#define BYTE 8 + +#define ischar(n) (((n) & ~BYTEMASK) == 0) + +#if defined (NROFF) && defined (EUC) && defined (ZWDELIMS) +#define ZWDELIM1 ZBIT | FIRSTOFMB | ' ' /* non-ASCII word delimiter 1 */ +#define ZWDELIM2 ZBIT | MIDDLEOFMB | ' ' /* non-ASCII word delimiter 2 */ +#define ZWDELIM(c) ((c) == 0) ? ' ' : ((c) == 1) ? ZWDELIM1 : ZWDELIM2 +#endif /* NROFF && EUC && ZWDELIMS */ + +#define ZONE 5 /* 5 hrs for EST */ +#define TABMASK 0x3FFFFFFF +#define RTAB (unsigned) 0x80000000 +#define CTAB 0x40000000 + +#define TABBIT 02 /* bits in gchtab */ +#define LDRBIT 04 +#define FCBIT 010 +#define LGBIT 020 +#define CHBIT 040 + +#define INFPENALTY0 (1e6) +#define INFPENALTY (1e9) +#define MAXPENALTY (1e6) +#define PENALSCALE (1.0/50) + +#define PAIR(A,B) (A|(B<<BYTE)) +#define LOOP (-4) + +#ifndef EUC +#define oput(c) if ((*obufp++ = (c)), obufp >= &obuf[OBUFSZ]) flusho(); else +#else +#define oput(c) if ((*obufp++ = cbits(c) & BYTEMASK), obufp >= &obuf[OBUFSZ]) flusho(); else +#endif /* EUC */ + +#ifdef NROFF +#define ftrans(f, c) (c) +#else +#define ftrans(f, c) (f >= 0 && f <= nfonts ? ftrtab[f][ftrtab[f][c]] : (c)) +#endif + +#define hex2nibble(x) ((x)>='0' && (x)<='9' ? (x)-'0' : \ + (x)>='A' && (x)<='F' ? (x)-'A'+10 : \ + (x)-'a'+10 ) + +/* + * "temp file" parameters. macros and strings + * are stored in an array of linked blocks, + * which may be in memory and an array called + * corebuf[]. + + * The numerology is delicate if filep is 16 bits: + #define BLK 128 + #define NBLIST 512 + * i.e., the product is 16 bits long. + + * If filep is a long then NBLIST + * can be a lot bigger. Of course that makes + * the file or core image a lot bigger too, + * and means you don't detect missing diversion + * terminations as quickly... . + * It also means that you may have trouble running + * on non-swapping systems, since the core image + * will be over 1Mb. + + * Note: As of 8/14/05, NBLIST has gone, and corebuf is + * grown dynamically as needed. + + * filep must be a signed integer since the value -1 + * is special (it indicates that input is read from tty). + + * filep must be an int for LP64 platforms since it is + * casted to unsigned at some places (or changed there) + + * BLK must be a power of 2 + */ + +typedef int filep; + +#define BLK 128 /* alloc block in tchars */ + +/* Other things are stored in the temp file or corebuf: + * a single block for .rd input, at offset RD_OFFSET + * NEV copies of the environment block, at offset ENV_OFFSET + + * The existing implementation assumes very strongly that + * these are respectively NBLIST*BLK and 0. + + */ + +#define RD_OFFSET (NBLIST * BLK) +#define ENV_OFFSET 0 +#define ENV_BLK ((NEV * sizeof(env) / sizeof(tchar) + BLK-1) / BLK) + /* rounded up to even BLK */ + +#include <setjmp.h> +#include <inttypes.h> +typedef int64_t tchar; + +extern int Inch, Hor, Vert, Unitwidth; + +/* BSD systems have a function devname(); avoid a collision */ +#define devname troff_devname + +/* these characters are used as various signals or values + * in miscellaneous places. + * values are set in specnames in t10.c + */ + +extern int c_hyphen; +extern int c_emdash; +extern int c_rule; +extern int c_minus; +extern int c_fi; +extern int c_fl; +extern int c_ff; +extern int c_ffi; +extern int c_ffl; +extern int c_acute; +extern int c_grave; +extern int c_under; +extern int c_rooten; +extern int c_boxrule; +extern int c_lefthand; +extern int c_dagger; + +struct lgtab { + struct lgtab *next; + struct lgtab *link; + int from; + int to; +}; + +#ifdef DEBUG +extern int debug; /*debug flag*/ +#define DB_MAC 01 /*print out macro calls*/ +#define DB_ALLC 02 /*print out message from alloc()*/ +#define DB_GETC 04 /*print out message from getch()*/ +#define DB_LOOP 010 /*print out message before "Eileen's loop" fix*/ +#define DB_ABRT 020 /*abort on errprint()*/ +#endif /* DEBUG */ + +extern enum warn { + WARN_NONE = 0, + WARN_CHAR = 1, + WARN_NUMBER = 2, + WARN_BREAK = 4, + WARN_DELIM = 8, + WARN_EL = 16, + WARN_SCALE = 32, + WARN_RANGE = 64, + WARN_SYNTAX = 128, + WARN_DI = 256, + WARN_MAC = 512, + WARN_REG = 1024, + WARN_RIGHT_BRACE= 4096, + WARN_MISSING = 8192, + WARN_INPUT = 16384, + WARN_ESCAPE = 32768, + WARN_SPACE = 65536, + WARN_FONT = 131072, + WARN_ALL = 2147481855, /* all except di, mac, reg */ + WARN_W = 2147483647 +} warn; + +enum flags { + FLAG_WATCH = 01, + FLAG_STRING = 02, + FLAG_USED = 04, + FLAG_DIVERSION = 010, + FLAG_LOCAL = 020, + FLAG_PARAGRAPH = 040 +}; + +enum { + PG_NONE = 00, + PG_NEWIN = 01, + PG_NEWLL = 02 +}; + +struct d { /* diversion */ + filep op; + int dnl; + int dimac; + int ditrap; + int ditf; + int alss; + int blss; + int nls; + int mkline; + int maxl; + int hnl; + int curd; + int flss; + struct contab *soff; + int mlist[NTRAP]; + int nlist[NTRAP]; + struct env *boxenv; +}; + +struct charout { /* formatted result of .char */ + filep op; + int width; + int height; + int depth; + tchar ch; +}; + +struct s { /* stack frame */ + int nargs; + struct s *pframe; + filep pip; + filep newip; + int *argt; + tchar *argsp; + int ppendt; + tchar pch; + int lastpbp; + int mname; + int frame_cnt; + int tail_cnt; + struct contab *contp; + struct numtab *numtab; + struct numtab **nhash; + struct contab *contab; + struct contab **mhash; + int NN; + int NM; + enum { + LOOP_FREE = 01, + LOOP_NEXT = 02, + LOOP_EVAL = 04 + } loopf; + enum flags flags; + jmp_buf *jmp; +}; + +extern struct contab { + unsigned int rq; + struct contab *link; + void (*f)(int); + unsigned mx; + unsigned int als; + int nlink; + enum flags flags; +} *contab; +extern const struct contab initcontab[]; + +extern struct numtab { + int r; /* name */ + short fmt; + int inc; + int val; + struct numtab *link; + int aln; + int nlink; + float fval; + float finc; + enum flags flags; +} *numtab; +extern const struct numtab initnumtab[]; + +#define PN 0 +#define NL 1 +#define YR 2 +#define HP 3 +#define CT 4 +#define DN 5 +#define MO 6 +#define DY 7 +#define DW 8 +#define LN 9 +#define DL 10 +#define ST 11 +#define SB 12 +#define CD 13 +#define PID 14 + +struct acc { + long long n; + double f; +}; + +/* inline environment */ +struct inlev { + int _apts; + int _apts1; + int _pts; + int _pts1; + int _font; + int _font1; + int _cc; + int _c2; + int _ohc; + int _hyf; + int _tabc; + int _dotc; + int _dpenal; +}; + +/* the infamous environment block */ + +#define ics env._ics +#define sps env._sps +#define ses env._ses +#define spacesz env._spacesz +#define sesspsz env._sesspsz +#ifndef NROFF +#define minsps env._minsps +#define minspsz env._minspsz +#define letspsz env._letspsz +#define letsps env._letsps +#define lspmin env._lspmin +#define lspmax env._lspmax +#define lspnc env._lspnc +#define lsplow env._lsplow +#define lsphigh env._lsphigh +#define lspcur env._lspcur +#define lsplast env._lsplast +#define lshmin env._lshmin +#define lshmax env._lshmax +#define lshwid env._lshwid +#define lshlow env._lshlow +#define lshhigh env._lshhigh +#define lshcur env._lshcur +#else /* NROFF */ +#define minsps 0 +#define minspsz 0 +#define letspsz 0 +#define letsps 0 +#define lspmin 0 +#define lspmax 0 +#define lspnc 0 +#define lsplow 0 +#define lsphigh 0 +#define lspcur 0 +#define lsplast 0 +#define lshmin 0 +#define lshmax 0 +#define lshwid 0 +#define lshlow 0 +#define lshhigh 0 +#define lshcur 0 +#endif /* NROFF */ +#define fldcnt env._fldcnt +#define lss env._lss +#define lss1 env._lss1 +#define ll env._ll +#define ll1 env._ll1 +#define lt env._lt +#define lt1 env._lt1 +#define ic env._ic +#define icf env._icf +#define chbits env._chbits +#define spbits env._spbits +#define nmbits env._nmbits +#define apts env._apts +#define apts1 env._apts1 +#define pts env._pts +#define pts1 env._pts1 +#define font env._font +#define font1 env._font1 +#define ls env._ls +#define ls1 env._ls1 +#define ad env._ad +#define nms env._nms +#define ndf env._ndf +#define fi env._fi +#define cc env._cc +#define c2 env._c2 +#define ohc env._ohc +#define tdelim env._tdelim +#define hyf env._hyf +#define hyoff env._hyoff +#define hlm env._hlm +#define hlc env._hlc +#define hylen env._hylen +#define hypp env._hypp +#define hypp2 env._hypp2 +#define hypp3 env._hypp3 +#define un1 env._un1 +#define tabc env._tabc +#define dotc env._dotc +#define adsp env._adsp +#define adrem env._adrem +#define lastl env._lastl +#define nel env._nel +#define admod env._admod +#define adflg env._adflg +#define adspc env._adspc +#define pa env._pa +#define wordp env._wordp +#define spflg env._spflg +#define seflg env._seflg +#define linep env._linep +#define wdend env._wdend +#define wdstart env._wdstart +#define wne env._wne +#define wsp env._wsp +#define ne env._ne +#define nc env._nc +#define nb env._nb +#define lnmod env._lnmod +#define nwd env._nwd +#define nn env._nn +#define ni env._ni +#define ul env._ul +#define cu env._cu +#define ce env._ce +#define rj env._rj +#define brnl env._brnl +#define brpnl env._brpnl +#define in env._in +#define in1 env._in1 +#define un env._un +#define wch env._wch +#define rhang env._rhang +#define pendt env._pendt +#define pendw env._pendw +#define pendnf env._pendnf +#define spread env._spread +#define dpenal env._dpenal +#define it env._it +#define itc env._itc +#define itmac env._itmac +#define lnsize env._lnsize +#define wdsize env._wdsize +#define pgsize env._pgsize +#define pgcsize env._pgcsize +#define pgssize env._pgssize +#define pgchars env._pgchars +#define pgspacs env._pgspacs +#define pgwords env._pgwords +#define pglines env._pglines +#define pglnout env._pglnout +#define pshapes env._pshapes +#define pgne env._pgne +#define pglastw env._pglastw +#define linkin env._linkin +#define linkout env._linkout +#define linkhp env._linkhp +#define hylang env._hylang +#define dicthnj env._dicthnj +#define hyext env._hyext +#define hcode env._hcode +#define nhcode env._nhcode +#define shc env._shc +#define lpfx env._lpfx +#define nlpfx env._nlpfx +#define stopch env._stopch +#define cht env._cht +#define cdp env._cdp +#define maxcht env._maxcht +#define maxcdp env._maxcdp +#define wdhyf env._wdhyf +#define hyptr env._hyptr +#define tabtab env._tabtab +#define line env._line +#define word env._word +#define wdpenal env._wdpenal +#define sentch env._sentch +#define transch env._transch +#define breakch env._breakch +#define nhych env._nhych +#define connectch env._connectch +#define para env._para +#define parsp env._parsp +#define pgwordp env._pgwordp +#define pgspacp env._pgspacp +#define pgwordw env._pgwordw +#define pghyphw env._pghyphw +#define pgadspc env._pgadspc +#define pglsphc env._pglsphc +#define pgopt env._pgopt +#define pgspacw env._pgspacw +#define pglgsc env._pglgsc +#define pglgec env._pglgec +#define pglgsw env._pglgsw +#define pglgew env._pglgew +#define pglgsh env._pglgsh +#define pglgeh env._pglgeh +#define pgin env._pgin +#define pgll env._pgll +#define pgwdin env._pgwdin +#define pgwdll env._pgwdll +#define pgflags env._pgflags +#define pglno env._pglno +#define pgpenal env._pgpenal +#define ninlev env._ninlev +#define ainlev env._ainlev +#define inlevp env._inlevp +#define evname env._evname + +extern struct env { + int _ics; + int _sps; + int _ses; + int _spacesz; + int _sesspsz; +#ifndef NROFF + int _minsps; + int _minspsz; + int _letspsz; + int _letsps; + int _lspmin; + int _lspmax; + int _lspnc; + int _lsplow; + int _lsphigh; + int _lspcur; + int _lsplast; + int _lshmin; + int _lshmax; + int _lshwid; + int _lshlow; + int _lshhigh; + int _lshcur; +#endif /* !NROFF */ + int _fldcnt; + int _lss; + int _lss1; + int _ll; + int _ll1; + int _lt; + int _lt1; + tchar _ic; + int _icf; + tchar _chbits; + tchar _spbits; + tchar _nmbits; + int _apts; + int _apts1; + int _pts; + int _pts1; + int _font; + int _font1; + int _ls; + int _ls1; + int _ad; + int _nms; + int _ndf; + int _fi; + int _cc; + int _c2; + int _ohc; + int _tdelim; + int _hyf; + int _hyoff; + int _hlm; + int _hlc; + int _hylen; + float _hypp; + float _hypp2; + float _hypp3; + int _un1; + int _tabc; + int _dotc; + int _adsp; + int _adrem; + int _lastl; + int _nel; + int _admod; + int _adflg; + int _adspc; + int _pa; + tchar *_wordp; + int _spflg; + int _seflg; + tchar *_linep; + tchar *_wdend; + tchar *_wdstart; + int _wne; + int _wsp; + int _ne; + int _nc; + int _nb; + int _lnmod; + int _nwd; + int _nn; + int _ni; + int _ul; + int _cu; + int _ce; + int _rj; + int _brnl; + int _brpnl; + int _in; + int _in1; + int _un; + int _wch; + int _rhang; + int _pendt; + tchar *_pendw; + int _pendnf; + int _spread; + int _dpenal; + int _it; + int _itc; + int _itmac; + int _lnsize; + int _wdsize; + int _pgsize; + int _pgcsize; + int _pgssize; + int _pgchars; + int _pgspacs; + int _pgwords; + int _pglines; + int _pglnout; + int _pshapes; + int _pgne; + int _pglastw; + int _linkin; + int _linkout; + int _linkhp; + char *_hylang; + void *_dicthnj; + int _hyext; + int *_hcode; + int _nhcode; + tchar *_lpfx; + int _nlpfx; + int _shc; + tchar _stopch; + int _cht; + int _cdp; + int _maxcht; + int _maxcdp; + int _wdhyf; + tchar *_hyptr[NHYP]; + int _tabtab[NTAB]; + int _sentch[NSENT]; + int _transch[NSENT]; + int _breakch[NSENT]; + int _nhych[NSENT]; + int _connectch[NSENT]; + tchar *_line; + tchar *_word; + int *_wdpenal; + tchar *_para; + tchar *_parsp; + int *_pgwordp; + int *_pgspacp; + int *_pgwordw; + int *_pghyphw; + int *_pgadspc; + int *_pglsphc; + int *_pgopt; + int *_pgspacw; + tchar *_pglgsc; + tchar *_pglgec; + tchar *_pglgsw; + tchar *_pglgew; + tchar *_pglgsh; + tchar *_pglgeh; + int *_pgin; + int *_pgll; + int *_pgwdin; + int *_pgwdll; + int *_pglno; + int *_pgflags; + float *_pgpenal; + int _ninlev; + int _ainlev; + struct inlev *_inlevp; + char *_evname; +} env, initenv; |
