xref: /csrg-svn/old/roff/common_source/ni.c (revision 38571)
17074Srrh #ifndef lint
2*38571Sbostic static char sccsid[] = "@(#)ni.c	4.3 08/05/89";
37074Srrh #endif lint
47074Srrh 
57074Srrh #include "tdef.h"
6*38571Sbostic #include "pathnames.h"
77074Srrh char obuf[OBUFSZ];
87074Srrh char *obufp = obuf;
97074Srrh int r[NN] = {
107074Srrh 	PAIR('%',0),
117074Srrh 	PAIR('n','l'),
127074Srrh 	PAIR('y','r'),
137074Srrh 	PAIR('h','p'),
147074Srrh 	PAIR('c','t'),
157074Srrh 	PAIR('d','n'),
167074Srrh 	PAIR('m','o'),
177074Srrh 	PAIR('d','y'),
187074Srrh 	PAIR('d','w'),
197074Srrh 	PAIR('l','n'),
207074Srrh 	PAIR('d','l'),
217074Srrh 	PAIR('s','t'),
227074Srrh 	PAIR('s','b'),
237074Srrh 	PAIR('c','.')};
247074Srrh int pto = 10000;
257074Srrh int pfrom = 1;
267074Srrh int print = 1;
27*38571Sbostic char nextf[NS] = _PATH_TMAC;
287074Srrh int nfi = 19;
297074Srrh #ifdef NROFF
30*38571Sbostic char termtab[NS] = _PATH_TABLPR;
317074Srrh int tti = 17;
327074Srrh #endif
337074Srrh #ifndef NROFF
347074Srrh int oldbits = -1;
357074Srrh #endif
367074Srrh int init = 1;
377074Srrh int fc = IMP;
387074Srrh int eschar = '\\';
397074Srrh int pl = 11*INCH;
407074Srrh int po = PO;
417074Srrh int dfact = 1;
427074Srrh int dfactd = 1;
437074Srrh int res = 1;
447074Srrh int smnt = 4;
457074Srrh int ascii = ASCII;
467074Srrh int ptid = PTID;
477074Srrh char ptname[] = "/dev/cat";
487074Srrh int lg = LG;
497074Srrh int pnlist[NPN] = {-1};
507074Srrh int *pnp = pnlist;
517074Srrh int npn = 1;
527074Srrh int npnflg = 1;
537074Srrh int xflg = 1;
547074Srrh int dpn = -1;
557074Srrh int totout = 1;
567074Srrh int ulfont = 1;
577074Srrh int ulbit = 1<<9;
587074Srrh int tabch = TAB;
597074Srrh int ldrch = LEADER;
607074Srrh int xxx;
617074Srrh extern caseds(), caseas(), casesp(), caseft(), caseps(), casevs(),
627074Srrh casenr(), caseif(), casepo(), casetl(), casetm(), casebp(), casech(),
637074Srrh casepn(), tbreak(), caseti(), casene(), casenf(), casece(), casefi(),
647074Srrh casein(), caseli(), casell(), casens(), casemk(), casert(), caseam(),
657074Srrh casede(), casedi(), caseda(), casewh(), casedt(), caseit(), caserm(),
667074Srrh casern(), casead(), casers(), casena(), casepl(), caseta(), casetr(),
677074Srrh caseul(), caselt(), casenx(), caseso(), caseig(), casetc(), casefc(),
687074Srrh caseec(), caseeo(), caselc(), caseev(), caserd(), caseab(), casefl(),
697074Srrh done(), casess(), casefp(), casecs(), casebd(), caselg(), casehc(),
707074Srrh casehy(), casenh(), casenm(), casenn(), casesv(), caseos(), casels(),
717074Srrh casecc(), casec2(), caseem(), caseaf(), casehw(), casemc(), casepm(),
727074Srrh casecu(), casepi(), caserr(), caseuf(), caseie(), caseel(), casepc(),
737074Srrh caseht();
747074Srrh #ifndef NROFF
757074Srrh extern casefz();
767074Srrh #endif
777074Srrh extern casecf();
787074Srrh struct contab {
797074Srrh 	int rq;
807074Srrh /*
817074Srrh 	union {
827074Srrh  */
837074Srrh 		int (*f)();
847074Srrh /*
857074Srrh 		unsigned mx;
867074Srrh 	}x;
877074Srrh  */
887074Srrh }contab[NM]= {
897074Srrh 	PAIR('d','s'),caseds,
907074Srrh 	PAIR('a','s'),caseas,
917074Srrh 	PAIR('s','p'),casesp,
927074Srrh 	PAIR('f','t'),caseft,
937074Srrh 	PAIR('p','s'),caseps,
947074Srrh 	PAIR('v','s'),casevs,
957074Srrh 	PAIR('n','r'),casenr,
967074Srrh 	PAIR('i','f'),caseif,
977074Srrh 	PAIR('i','e'),caseie,
987074Srrh 	PAIR('e','l'),caseel,
997074Srrh 	PAIR('p','o'),casepo,
1007074Srrh 	PAIR('t','l'),casetl,
1017074Srrh 	PAIR('t','m'),casetm,
1027074Srrh 	PAIR('b','p'),casebp,
1037074Srrh 	PAIR('c','h'),casech,
1047074Srrh 	PAIR('p','n'),casepn,
1057074Srrh 	PAIR('b','r'),tbreak,
1067074Srrh 	PAIR('t','i'),caseti,
1077074Srrh 	PAIR('n','e'),casene,
1087074Srrh 	PAIR('n','f'),casenf,
1097074Srrh 	PAIR('c','e'),casece,
1107074Srrh 	PAIR('f','i'),casefi,
1117074Srrh 	PAIR('i','n'),casein,
1127074Srrh 	PAIR('l','i'),caseli,
1137074Srrh 	PAIR('l','l'),casell,
1147074Srrh 	PAIR('n','s'),casens,
1157074Srrh 	PAIR('m','k'),casemk,
1167074Srrh 	PAIR('r','t'),casert,
1177074Srrh 	PAIR('a','m'),caseam,
1187074Srrh 	PAIR('d','e'),casede,
1197074Srrh 	PAIR('d','i'),casedi,
1207074Srrh 	PAIR('d','a'),caseda,
1217074Srrh 	PAIR('w','h'),casewh,
1227074Srrh 	PAIR('d','t'),casedt,
1237074Srrh 	PAIR('i','t'),caseit,
1247074Srrh 	PAIR('r','m'),caserm,
1257074Srrh 	PAIR('r','r'),caserr,
1267074Srrh 	PAIR('r','n'),casern,
1277074Srrh 	PAIR('a','d'),casead,
1287074Srrh 	PAIR('r','s'),casers,
1297074Srrh 	PAIR('n','a'),casena,
1307074Srrh 	PAIR('p','l'),casepl,
1317074Srrh 	PAIR('t','a'),caseta,
1327074Srrh 	PAIR('t','r'),casetr,
1337074Srrh 	PAIR('u','l'),caseul,
1347074Srrh 	PAIR('c','u'),casecu,
1357074Srrh 	PAIR('l','t'),caselt,
1367074Srrh 	PAIR('n','x'),casenx,
1377074Srrh 	PAIR('s','o'),caseso,
1387074Srrh 	PAIR('i','g'),caseig,
1397074Srrh 	PAIR('t','c'),casetc,
1407074Srrh 	PAIR('f','c'),casefc,
1417074Srrh 	PAIR('e','c'),caseec,
1427074Srrh 	PAIR('e','o'),caseeo,
1437074Srrh 	PAIR('l','c'),caselc,
1447074Srrh 	PAIR('e','v'),caseev,
1457074Srrh 	PAIR('r','d'),caserd,
1467074Srrh 	PAIR('a','b'),caseab,
1477074Srrh 	PAIR('f','l'),casefl,
1487074Srrh 	PAIR('e','x'),done,
1497074Srrh 	PAIR('s','s'),casess,
1507074Srrh 	PAIR('f','p'),casefp,
1517074Srrh 	PAIR('c','s'),casecs,
1527074Srrh 	PAIR('b','d'),casebd,
1537074Srrh 	PAIR('l','g'),caselg,
1547074Srrh 	PAIR('h','c'),casehc,
1557074Srrh 	PAIR('h','y'),casehy,
1567074Srrh 	PAIR('n','h'),casenh,
1577074Srrh 	PAIR('n','m'),casenm,
1587074Srrh 	PAIR('n','n'),casenn,
1597074Srrh 	PAIR('s','v'),casesv,
1607074Srrh 	PAIR('o','s'),caseos,
1617074Srrh 	PAIR('l','s'),casels,
1627074Srrh 	PAIR('c','c'),casecc,
1637074Srrh 	PAIR('c','2'),casec2,
1647074Srrh 	PAIR('e','m'),caseem,
1657074Srrh 	PAIR('a','f'),caseaf,
1667074Srrh 	PAIR('h','w'),casehw,
1677074Srrh 	PAIR('m','c'),casemc,
1687074Srrh 	PAIR('p','m'),casepm,
1697074Srrh #ifdef NROFF
1707074Srrh 	PAIR('p','i'),casepi,
1717074Srrh #endif
1727074Srrh 	PAIR('u','f'),caseuf,
1737074Srrh 	PAIR('p','c'),casepc,
1747074Srrh 	PAIR('h','t'),caseht,
1757074Srrh #ifndef NROFF
1767074Srrh 	PAIR('f','z'),casefz,
1777074Srrh #endif
1787074Srrh 	PAIR('c', 'f'),casecf,
1797074Srrh };
1807074Srrh 
1817074Srrh /*
1827074Srrh troff environment block
1837074Srrh */
1847074Srrh 
1857074Srrh int block = 0;
1867074Srrh int ics = ICS;
1877074Srrh int ic = 0;
1887074Srrh int icf = 0;
1897074Srrh int chbits = 0;
1907074Srrh int spbits = 0;
1917074Srrh int nmbits = 0;
1927074Srrh int apts = PS;
1937074Srrh int apts1 = PS;
1947074Srrh int pts = PS;
1957074Srrh int pts1 = PS;
1967074Srrh int font = FT;
1977074Srrh int font1 = FT;
1987074Srrh int sps = SPS;
1997074Srrh int spacesz = SS;
2007074Srrh int lss = VS;
2017074Srrh int lss1 = VS;
2027074Srrh int ls = 1;
2037074Srrh int ls1 = 1;
2047074Srrh int ll = LL;
2057074Srrh int ll1 = LL;
2067074Srrh int lt = LL;
2077074Srrh int lt1 = LL;
2087074Srrh int ad = 1;
2097074Srrh int nms = 1;
2107074Srrh int ndf = 1;
2117074Srrh int fi = 1;
2127074Srrh int cc = '.';
2137074Srrh int c2 = '\'';
2147074Srrh int ohc = OHC;
2157074Srrh int tdelim = IMP;
2167074Srrh int hyf = 1;
2177074Srrh int hyoff = 0;
2187074Srrh int un1 = -1;
2197074Srrh int tabc = 0;
2207074Srrh int dotc = '.';
2217074Srrh int adsp = 0;
2227074Srrh int adrem = 0;
2237074Srrh int lastl = 0;
2247074Srrh int nel = 0;
2257074Srrh int admod = 0;
2267074Srrh int *wordp = 0;
2277074Srrh int spflg = 0;
2287074Srrh int *linep = 0;
2297074Srrh int *wdend = 0;
2307074Srrh int *wdstart = 0;
2317074Srrh int wne = 0;
2327074Srrh int ne = 0;
2337074Srrh int nc = 0;
2347074Srrh int nb = 0;
2357074Srrh int lnmod = 0;
2367074Srrh int nwd = 0;
2377074Srrh int nn = 0;
2387074Srrh int ni = 0;
2397074Srrh int ul = 0;
2407074Srrh int cu = 0;
2417074Srrh int ce = 0;
2427074Srrh int in = 0;
2437074Srrh int in1 = 0;
2447074Srrh int un = 0;
2457074Srrh int wch = 0;
2467074Srrh int pendt = 0;
2477074Srrh int *pendw = 0;
2487074Srrh int pendnf = 0;
2497074Srrh int spread = 0;
2507074Srrh int it = 0;
2517074Srrh int itmac = 0;
2527074Srrh int lnsize = LNSIZE;
2537074Srrh int *hyptr[NHYP] = {0};
2547074Srrh int tabtab[NTAB] = {DTAB,DTAB*2,DTAB*3,DTAB*4,DTAB*5,DTAB*6,DTAB*7,DTAB*8,
2557074Srrh 	DTAB*9,DTAB*10,DTAB*11,DTAB*12,DTAB*13,DTAB*14,DTAB*15,0};
2567074Srrh int line[LNSIZE] = {0};
2577074Srrh int word[WDSIZE] = {0};
2587074Srrh int blockxxx[EVS-68-NHYP-NTAB-WDSIZE-LNSIZE] = {0};
2597074Srrh /*spare 5 words*/
2607074Srrh int oline[LNSIZE+1];
261