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