17074Srrh #ifndef lint 2*42856Skarels static char sccsid[] = "@(#)ni.c 4.4 06/02/90"; 37074Srrh #endif lint 47074Srrh 57074Srrh #include "tdef.h" 638571Sbostic #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; 2738571Sbostic char nextf[NS] = _PATH_TMAC; 28*42856Skarels int nfi = sizeof(_PATH_TMAC) - 1; 297074Srrh #ifdef NROFF 30*42856Skarels char termtab[NS] = _PATH_TERM; 31*42856Skarels int tti = sizeof(_PATH_TERM) - 1; 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