123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- #include <stdio.h>
- #include "tdef.h"
- #include "fns.h"
- #include "ext.h"
- char termtab[NS]; /* term type added in ptinit() */
- char fontdir[NS]; /* added in casefp; not used by nroff */
- char devname[20]; /* default output device */
- Numtab numtab[NN] = {
- { PAIR('%', 0) },
- { PAIR('n', 'l') },
- { PAIR('y', 'r') },
- { PAIR('h', 'p') },
- { PAIR('c', 't') },
- { PAIR('d', 'n') },
- { PAIR('m', 'o') },
- { PAIR('d', 'y') },
- { PAIR('d', 'w') },
- { PAIR('l', 'n') },
- { PAIR('d', 'l') },
- { PAIR('s', 't') },
- { PAIR('s', 'b') },
- { PAIR('c', '.') },
- { PAIR('$', '$') },
- };
- int alphabet = 256; /* latin-1 */
- int pto = 10000;
- int pfrom = 1;
- int print = 1;
- char nextf[NS] = TMACDIR;
- char mfiles[NMF][NS];
- int nmfi = 0;
- int oldbits = -1;
- int init = 1;
- int fc = IMP; /* field character */
- int eschar = '\\';
- int pl;
- int po;
- FILE *ptid = stdout;
- int dfact = 1;
- int dfactd = 1;
- int res = 1;
- int smnt = 0; /* beginning of special fonts */
- int ascii = 0; /* ascii normally off for troff, on for nroff; -a turns on */
- int lg;
- int pnlist[NPN] = { -1 };
- int *pnp = pnlist;
- int npn = 1;
- int npnflg = 1;
- int dpn = -1;
- int totout = 1;
- int ulfont = ULFONT;
- int tabch = TAB;
- int ldrch = LEADER;
- Contab contab[NM] = {
- C(PAIR('d', 's'), caseds),
- C(PAIR('a', 's'), caseas),
- C(PAIR('s', 'p'), casesp),
- C(PAIR('f', 't'), caseft),
- C(PAIR('p', 's'), caseps),
- C(PAIR('v', 's'), casevs),
- C(PAIR('n', 'r'), casenr),
- C(PAIR('i', 'f'), caseif),
- C(PAIR('i', 'e'), caseie),
- C(PAIR('e', 'l'), caseel),
- C(PAIR('p', 'o'), casepo),
- C(PAIR('t', 'l'), casetl),
- C(PAIR('t', 'm'), casetm),
- C(PAIR('f', 'm'), casefm),
- C(PAIR('b', 'p'), casebp),
- C(PAIR('c', 'h'), casech),
- C(PAIR('p', 'n'), casepn),
- C(PAIR('b', 'r'), tbreak),
- C(PAIR('t', 'i'), caseti),
- C(PAIR('n', 'e'), casene),
- C(PAIR('n', 'f'), casenf),
- C(PAIR('c', 'e'), casece),
- C(PAIR('f', 'i'), casefi),
- C(PAIR('i', 'n'), casein),
- C(PAIR('l', 'l'), casell),
- C(PAIR('n', 's'), casens),
- C(PAIR('m', 'k'), casemk),
- C(PAIR('r', 't'), casert),
- C(PAIR('a', 'm'), caseam),
- C(PAIR('d', 'e'), casede),
- C(PAIR('d', 'i'), casedi),
- C(PAIR('d', 'a'), caseda),
- C(PAIR('w', 'h'), casewh),
- C(PAIR('d', 't'), casedt),
- C(PAIR('i', 't'), caseit),
- C(PAIR('r', 'm'), caserm),
- C(PAIR('r', 'r'), caserr),
- C(PAIR('r', 'n'), casern),
- C(PAIR('a', 'd'), casead),
- C(PAIR('r', 's'), casers),
- C(PAIR('n', 'a'), casena),
- C(PAIR('p', 'l'), casepl),
- C(PAIR('t', 'a'), caseta),
- C(PAIR('t', 'r'), casetr),
- C(PAIR('u', 'l'), caseul),
- C(PAIR('c', 'u'), casecu),
- C(PAIR('l', 't'), caselt),
- C(PAIR('n', 'x'), casenx),
- C(PAIR('s', 'o'), caseso),
- C(PAIR('i', 'g'), caseig),
- C(PAIR('t', 'c'), casetc),
- C(PAIR('f', 'c'), casefc),
- C(PAIR('e', 'c'), caseec),
- C(PAIR('e', 'o'), caseeo),
- C(PAIR('l', 'c'), caselc),
- C(PAIR('e', 'v'), caseev),
- C(PAIR('r', 'd'), caserd),
- C(PAIR('a', 'b'), caseab),
- C(PAIR('f', 'l'), casefl),
- C(PAIR('e', 'x'), caseex),
- C(PAIR('s', 's'), casess),
- C(PAIR('f', 'p'), casefp),
- C(PAIR('c', 's'), casecs),
- C(PAIR('b', 'd'), casebd),
- C(PAIR('l', 'g'), caselg),
- C(PAIR('h', 'c'), casehc),
- C(PAIR('h', 'y'), casehy),
- C(PAIR('n', 'h'), casenh),
- C(PAIR('n', 'm'), casenm),
- C(PAIR('n', 'n'), casenn),
- C(PAIR('s', 'v'), casesv),
- C(PAIR('o', 's'), caseos),
- C(PAIR('l', 's'), casels),
- C(PAIR('c', 'c'), casecc),
- C(PAIR('c', '2'), casec2),
- C(PAIR('e', 'm'), caseem),
- C(PAIR('a', 'f'), caseaf),
- C(PAIR('h', 'a'), caseha),
- C(PAIR('h', 'w'), casehw),
- C(PAIR('m', 'c'), casemc),
- C(PAIR('p', 'm'), casepm),
- C(PAIR('p', 'i'), casepi),
- C(PAIR('u', 'f'), caseuf),
- C(PAIR('p', 'c'), casepc),
- C(PAIR('h', 't'), caseht),
- C(PAIR('c', 'f'), casecf),
- C(PAIR('s', 'y'), casesy),
- C(PAIR('l', 'f'), caself),
- C(PAIR('p', 't'), casept),
- C(PAIR('g', 'd'), casegd),
- };
- Tbuf _oline;
- /*
- * troff environment block
- */
- Env env[NEV] = { { /* this sets up env[0] */
- /* int ics */ 0, /* insertion character space, set by .mc */
- /* int sps */ 0,
- /* int spacesz */ 0,
- /* int lss */ 0,
- /* int lss1 */ 0,
- /* int ll */ 0,
- /* int ll1 */ 0,
- /* int lt */ 0,
- /* int lt1 */ 0,
- /* Tchar ic */ 0, /* insertion character (= margin character) */
- /* int icf */ 0, /* insertion character flag */
- /* Tchar chbits */ 0, /* size+font bits for current character */
- /* Tchar spbits */ 0,
- /* Tchar nmbits */ 0, /* size+font bits for number from .nm */
- /* int apts */ PS, /* actual point size -- as requested by user */
- /* int apts1 */ PS, /* need not match an existent size */
- /* int pts */ PS, /* hence, this is the size that really exists */
- /* int pts1 */ PS,
- /* int font */ FT,
- /* int font1 */ FT,
- /* int ls */ 1,
- /* int ls1 */ 1,
- /* int ad */ 1,
- /* int nms */ 1, /* .nm multiplier */
- /* int ndf */ 1, /* .nm separator */
- /* int nmwid */ 3, /* max width of .nm numbers */
- /* int fi */ 1,
- /* int cc */ '.',
- /* int c2 */ '\'',
- /* int ohc */ OHC,
- /* int tdelim */ IMP,
- /* int hyf */ 1,
- /* int hyoff */ 0,
- /* int hyphalg */ HYPHALG,
- /* int un1 */ -1,
- /* int tabc */ 0,
- /* int dotc */ '.',
- /* int adsp */ 0, /* add this much space to each padding point */
- /* int adrem */ 0, /* excess space to add until it runs out */
- /* int lastl */ 0, /* last text on current output line */
- /* int nel */ 0, /* how much space left on current output line */
- /* int admod */ 0, /* adjust mode */
- /* Tchar *wordp */ 0,
- /* int spflg */ 0, /* probably to indicate space after punctuation needed */
- /* Tchar *linep */ 0,
- /* Tchar *wdend */ 0,
- /* Tchar *wdstart */ 0,
- /* int wne */ 0,
- /* int ne */ 0, /* how much space taken on current output line */
- /* int nc */ 0, /* #characters (incl blank) on output line */
- /* int nb */ 0,
- /* int lnmod */ 0, /* line number mode, set by .nm */
- /* int nwd */ 0, /* number of words on current output line */
- /* int nn */ 0, /* from .nn command */
- /* int ni */ 0, /* indent of .nm numbers, probably */
- /* int ul */ 0,
- /* int cu */ 0,
- /* int ce */ 0,
- /* int in */ 0, /* indent and previous value */
- /* int in1 */ 0,
- /* int un */ 0, /* unindent of left margin in some way */
- /* int wch */ 0,
- /* int pendt */ 0,
- /* Tchar *pendw */ (Tchar *)0,
- /* int pendnf */ 0,
- /* int spread */ 0,
- /* int it */ 0, /* input trap count */
- /* int itmac */ 0,
- } };
- Env *envp = env; /* start off in env 0 */
- Numerr numerr;
- Stack *frame, *stk, *ejl;
- Stack *nxf;
- int pipeflg;
- int hflg; /* used in nroff only */
- int eqflg; /* used in nroff only */
- int xpts;
- int ppts;
- int pfont;
- int mpts;
- int mfont;
- int cs;
- int ccs;
- int bd;
- int stdi;
- int quiet;
- int stop;
- char ibuf[IBUFSZ];
- char xbuf[IBUFSZ];
- char *ibufp;
- char *xbufp;
- char *eibuf;
- char *xeibuf;
- Tchar pbbuf[NC]; /* pushback buffer for arguments, \n, etc. */
- Tchar *pbp = pbbuf; /* next free slot in pbbuf */
- Tchar *lastpbp = pbbuf; /* pbp in previous stack frame */
- int nx;
- int mflg;
- Tchar ch = 0;
- int ibf;
- int ifi;
- int iflg;
- int rargc;
- char **argp;
- Ushort trtab[NTRTAB];
- int lgf;
- int copyf;
- Offset ip;
- int nlflg;
- int donef;
- int nflush;
- int nfo;
- int padc;
- int raw;
- int flss;
- int nonumb;
- int trap;
- int tflg;
- int ejf;
- int dilev;
- Offset offset;
- int em;
- int ds;
- Offset woff;
- int app;
- int ndone;
- int lead;
- int ralss;
- Offset nextb;
- Tchar nrbits;
- int nform;
- int oldmn;
- int newmn;
- int macerr;
- Offset apptr;
- int diflg;
- int evi;
- int vflag;
- int noscale;
- int po1;
- int nlist[NTRAP];
- int mlist[NTRAP];
- int evlist[EVLSZ];
- int ev;
- int tty;
- int sfont = FT; /* appears to be "standard" font; used by .ul */
- int sv;
- int esc;
- int widthp;
- int xfont;
- int setwdf;
- int over;
- int nhyp;
- Tchar **hyp;
- Tchar *olinep;
- int dotT;
- char *unlkp;
- Wcache widcache[NWIDCACHE];
- Diver d[NDI];
- Diver *dip;
- int c_hyphen;
- int c_emdash;
- int c_rule;
- int c_minus;
- int c_fi;
- int c_fl;
- int c_ff;
- int c_ffi;
- int c_ffl;
- int c_acute;
- int c_grave;
- int c_under;
- int c_rooten;
- int c_boxrule;
- int c_lefthand;
- int c_dagger;
- int c_isalnum;
- Spnames spnames[] =
- {
- &c_hyphen, "hy",
- &c_emdash, "em",
- &c_rule, "ru",
- &c_minus, "\\-",
- &c_fi, "fi",
- &c_fl, "fl",
- &c_ff, "ff",
- &c_ffi, "Fi",
- &c_ffl, "Fl",
- &c_acute, "aa",
- &c_grave, "ga",
- &c_under, "ul",
- &c_rooten, "rn",
- &c_boxrule, "br",
- &c_lefthand, "lh",
- &c_dagger, "dg", /* not in nroff?? */
- &c_isalnum, "__",
- 0, 0
- };
- Tchar (*hmot)(void);
- Tchar (*makem)(int i);
- Tchar (*setabs)(void);
- Tchar (*setch)(int c);
- Tchar (*sethl)(int k);
- Tchar (*setht)(void);
- Tchar (*setslant)(void);
- Tchar (*vmot)(void);
- Tchar (*xlss)(void);
- int (*findft)(int i);
- int (*width)(Tchar j);
- void (*mchbits)(void);
- void (*ptlead)(void);
- void (*ptout)(Tchar i);
- void (*ptpause)(void);
- void (*setfont)(int a);
- void (*setps)(void);
- void (*setwd)(void);
|