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