xref: /csrg-svn/old/roff/common_source/ni.c (revision 7074)
1*7074Srrh #ifndef lint
2*7074Srrh static char sccsid[] = "@(#)ni.c	4.1 06/07/82";
3*7074Srrh #endif lint
4*7074Srrh 
5*7074Srrh #include "tdef.h"
6*7074Srrh char obuf[OBUFSZ];
7*7074Srrh char *obufp = obuf;
8*7074Srrh int r[NN] = {
9*7074Srrh 	PAIR('%',0),
10*7074Srrh 	PAIR('n','l'),
11*7074Srrh 	PAIR('y','r'),
12*7074Srrh 	PAIR('h','p'),
13*7074Srrh 	PAIR('c','t'),
14*7074Srrh 	PAIR('d','n'),
15*7074Srrh 	PAIR('m','o'),
16*7074Srrh 	PAIR('d','y'),
17*7074Srrh 	PAIR('d','w'),
18*7074Srrh 	PAIR('l','n'),
19*7074Srrh 	PAIR('d','l'),
20*7074Srrh 	PAIR('s','t'),
21*7074Srrh 	PAIR('s','b'),
22*7074Srrh 	PAIR('c','.')};
23*7074Srrh int pto = 10000;
24*7074Srrh int pfrom = 1;
25*7074Srrh int print = 1;
26*7074Srrh char nextf[NS] = "/usr/lib/tmac/tmac.xxxxx";
27*7074Srrh int nfi = 19;
28*7074Srrh #ifdef NROFF
29*7074Srrh char termtab[NS] = "/usr/lib/term/tab37";
30*7074Srrh int tti = 17;
31*7074Srrh #endif
32*7074Srrh #ifndef NROFF
33*7074Srrh int oldbits = -1;
34*7074Srrh #endif
35*7074Srrh int init = 1;
36*7074Srrh int fc = IMP;
37*7074Srrh int eschar = '\\';
38*7074Srrh int pl = 11*INCH;
39*7074Srrh int po = PO;
40*7074Srrh int dfact = 1;
41*7074Srrh int dfactd = 1;
42*7074Srrh int res = 1;
43*7074Srrh int smnt = 4;
44*7074Srrh int ascii = ASCII;
45*7074Srrh int ptid = PTID;
46*7074Srrh char ptname[] = "/dev/cat";
47*7074Srrh int lg = LG;
48*7074Srrh int pnlist[NPN] = {-1};
49*7074Srrh int *pnp = pnlist;
50*7074Srrh int npn = 1;
51*7074Srrh int npnflg = 1;
52*7074Srrh int xflg = 1;
53*7074Srrh int dpn = -1;
54*7074Srrh int totout = 1;
55*7074Srrh int ulfont = 1;
56*7074Srrh int ulbit = 1<<9;
57*7074Srrh int tabch = TAB;
58*7074Srrh int ldrch = LEADER;
59*7074Srrh int xxx;
60*7074Srrh extern caseds(), caseas(), casesp(), caseft(), caseps(), casevs(),
61*7074Srrh casenr(), caseif(), casepo(), casetl(), casetm(), casebp(), casech(),
62*7074Srrh casepn(), tbreak(), caseti(), casene(), casenf(), casece(), casefi(),
63*7074Srrh casein(), caseli(), casell(), casens(), casemk(), casert(), caseam(),
64*7074Srrh casede(), casedi(), caseda(), casewh(), casedt(), caseit(), caserm(),
65*7074Srrh casern(), casead(), casers(), casena(), casepl(), caseta(), casetr(),
66*7074Srrh caseul(), caselt(), casenx(), caseso(), caseig(), casetc(), casefc(),
67*7074Srrh caseec(), caseeo(), caselc(), caseev(), caserd(), caseab(), casefl(),
68*7074Srrh done(), casess(), casefp(), casecs(), casebd(), caselg(), casehc(),
69*7074Srrh casehy(), casenh(), casenm(), casenn(), casesv(), caseos(), casels(),
70*7074Srrh casecc(), casec2(), caseem(), caseaf(), casehw(), casemc(), casepm(),
71*7074Srrh casecu(), casepi(), caserr(), caseuf(), caseie(), caseel(), casepc(),
72*7074Srrh caseht();
73*7074Srrh #ifndef NROFF
74*7074Srrh extern casefz();
75*7074Srrh #endif
76*7074Srrh extern casecf();
77*7074Srrh struct contab {
78*7074Srrh 	int rq;
79*7074Srrh /*
80*7074Srrh 	union {
81*7074Srrh  */
82*7074Srrh 		int (*f)();
83*7074Srrh /*
84*7074Srrh 		unsigned mx;
85*7074Srrh 	}x;
86*7074Srrh  */
87*7074Srrh }contab[NM]= {
88*7074Srrh 	PAIR('d','s'),caseds,
89*7074Srrh 	PAIR('a','s'),caseas,
90*7074Srrh 	PAIR('s','p'),casesp,
91*7074Srrh 	PAIR('f','t'),caseft,
92*7074Srrh 	PAIR('p','s'),caseps,
93*7074Srrh 	PAIR('v','s'),casevs,
94*7074Srrh 	PAIR('n','r'),casenr,
95*7074Srrh 	PAIR('i','f'),caseif,
96*7074Srrh 	PAIR('i','e'),caseie,
97*7074Srrh 	PAIR('e','l'),caseel,
98*7074Srrh 	PAIR('p','o'),casepo,
99*7074Srrh 	PAIR('t','l'),casetl,
100*7074Srrh 	PAIR('t','m'),casetm,
101*7074Srrh 	PAIR('b','p'),casebp,
102*7074Srrh 	PAIR('c','h'),casech,
103*7074Srrh 	PAIR('p','n'),casepn,
104*7074Srrh 	PAIR('b','r'),tbreak,
105*7074Srrh 	PAIR('t','i'),caseti,
106*7074Srrh 	PAIR('n','e'),casene,
107*7074Srrh 	PAIR('n','f'),casenf,
108*7074Srrh 	PAIR('c','e'),casece,
109*7074Srrh 	PAIR('f','i'),casefi,
110*7074Srrh 	PAIR('i','n'),casein,
111*7074Srrh 	PAIR('l','i'),caseli,
112*7074Srrh 	PAIR('l','l'),casell,
113*7074Srrh 	PAIR('n','s'),casens,
114*7074Srrh 	PAIR('m','k'),casemk,
115*7074Srrh 	PAIR('r','t'),casert,
116*7074Srrh 	PAIR('a','m'),caseam,
117*7074Srrh 	PAIR('d','e'),casede,
118*7074Srrh 	PAIR('d','i'),casedi,
119*7074Srrh 	PAIR('d','a'),caseda,
120*7074Srrh 	PAIR('w','h'),casewh,
121*7074Srrh 	PAIR('d','t'),casedt,
122*7074Srrh 	PAIR('i','t'),caseit,
123*7074Srrh 	PAIR('r','m'),caserm,
124*7074Srrh 	PAIR('r','r'),caserr,
125*7074Srrh 	PAIR('r','n'),casern,
126*7074Srrh 	PAIR('a','d'),casead,
127*7074Srrh 	PAIR('r','s'),casers,
128*7074Srrh 	PAIR('n','a'),casena,
129*7074Srrh 	PAIR('p','l'),casepl,
130*7074Srrh 	PAIR('t','a'),caseta,
131*7074Srrh 	PAIR('t','r'),casetr,
132*7074Srrh 	PAIR('u','l'),caseul,
133*7074Srrh 	PAIR('c','u'),casecu,
134*7074Srrh 	PAIR('l','t'),caselt,
135*7074Srrh 	PAIR('n','x'),casenx,
136*7074Srrh 	PAIR('s','o'),caseso,
137*7074Srrh 	PAIR('i','g'),caseig,
138*7074Srrh 	PAIR('t','c'),casetc,
139*7074Srrh 	PAIR('f','c'),casefc,
140*7074Srrh 	PAIR('e','c'),caseec,
141*7074Srrh 	PAIR('e','o'),caseeo,
142*7074Srrh 	PAIR('l','c'),caselc,
143*7074Srrh 	PAIR('e','v'),caseev,
144*7074Srrh 	PAIR('r','d'),caserd,
145*7074Srrh 	PAIR('a','b'),caseab,
146*7074Srrh 	PAIR('f','l'),casefl,
147*7074Srrh 	PAIR('e','x'),done,
148*7074Srrh 	PAIR('s','s'),casess,
149*7074Srrh 	PAIR('f','p'),casefp,
150*7074Srrh 	PAIR('c','s'),casecs,
151*7074Srrh 	PAIR('b','d'),casebd,
152*7074Srrh 	PAIR('l','g'),caselg,
153*7074Srrh 	PAIR('h','c'),casehc,
154*7074Srrh 	PAIR('h','y'),casehy,
155*7074Srrh 	PAIR('n','h'),casenh,
156*7074Srrh 	PAIR('n','m'),casenm,
157*7074Srrh 	PAIR('n','n'),casenn,
158*7074Srrh 	PAIR('s','v'),casesv,
159*7074Srrh 	PAIR('o','s'),caseos,
160*7074Srrh 	PAIR('l','s'),casels,
161*7074Srrh 	PAIR('c','c'),casecc,
162*7074Srrh 	PAIR('c','2'),casec2,
163*7074Srrh 	PAIR('e','m'),caseem,
164*7074Srrh 	PAIR('a','f'),caseaf,
165*7074Srrh 	PAIR('h','w'),casehw,
166*7074Srrh 	PAIR('m','c'),casemc,
167*7074Srrh 	PAIR('p','m'),casepm,
168*7074Srrh #ifdef NROFF
169*7074Srrh 	PAIR('p','i'),casepi,
170*7074Srrh #endif
171*7074Srrh 	PAIR('u','f'),caseuf,
172*7074Srrh 	PAIR('p','c'),casepc,
173*7074Srrh 	PAIR('h','t'),caseht,
174*7074Srrh #ifndef NROFF
175*7074Srrh 	PAIR('f','z'),casefz,
176*7074Srrh #endif
177*7074Srrh 	PAIR('c', 'f'),casecf,
178*7074Srrh };
179*7074Srrh 
180*7074Srrh /*
181*7074Srrh troff environment block
182*7074Srrh */
183*7074Srrh 
184*7074Srrh int block = 0;
185*7074Srrh int ics = ICS;
186*7074Srrh int ic = 0;
187*7074Srrh int icf = 0;
188*7074Srrh int chbits = 0;
189*7074Srrh int spbits = 0;
190*7074Srrh int nmbits = 0;
191*7074Srrh int apts = PS;
192*7074Srrh int apts1 = PS;
193*7074Srrh int pts = PS;
194*7074Srrh int pts1 = PS;
195*7074Srrh int font = FT;
196*7074Srrh int font1 = FT;
197*7074Srrh int sps = SPS;
198*7074Srrh int spacesz = SS;
199*7074Srrh int lss = VS;
200*7074Srrh int lss1 = VS;
201*7074Srrh int ls = 1;
202*7074Srrh int ls1 = 1;
203*7074Srrh int ll = LL;
204*7074Srrh int ll1 = LL;
205*7074Srrh int lt = LL;
206*7074Srrh int lt1 = LL;
207*7074Srrh int ad = 1;
208*7074Srrh int nms = 1;
209*7074Srrh int ndf = 1;
210*7074Srrh int fi = 1;
211*7074Srrh int cc = '.';
212*7074Srrh int c2 = '\'';
213*7074Srrh int ohc = OHC;
214*7074Srrh int tdelim = IMP;
215*7074Srrh int hyf = 1;
216*7074Srrh int hyoff = 0;
217*7074Srrh int un1 = -1;
218*7074Srrh int tabc = 0;
219*7074Srrh int dotc = '.';
220*7074Srrh int adsp = 0;
221*7074Srrh int adrem = 0;
222*7074Srrh int lastl = 0;
223*7074Srrh int nel = 0;
224*7074Srrh int admod = 0;
225*7074Srrh int *wordp = 0;
226*7074Srrh int spflg = 0;
227*7074Srrh int *linep = 0;
228*7074Srrh int *wdend = 0;
229*7074Srrh int *wdstart = 0;
230*7074Srrh int wne = 0;
231*7074Srrh int ne = 0;
232*7074Srrh int nc = 0;
233*7074Srrh int nb = 0;
234*7074Srrh int lnmod = 0;
235*7074Srrh int nwd = 0;
236*7074Srrh int nn = 0;
237*7074Srrh int ni = 0;
238*7074Srrh int ul = 0;
239*7074Srrh int cu = 0;
240*7074Srrh int ce = 0;
241*7074Srrh int in = 0;
242*7074Srrh int in1 = 0;
243*7074Srrh int un = 0;
244*7074Srrh int wch = 0;
245*7074Srrh int pendt = 0;
246*7074Srrh int *pendw = 0;
247*7074Srrh int pendnf = 0;
248*7074Srrh int spread = 0;
249*7074Srrh int it = 0;
250*7074Srrh int itmac = 0;
251*7074Srrh int lnsize = LNSIZE;
252*7074Srrh int *hyptr[NHYP] = {0};
253*7074Srrh int tabtab[NTAB] = {DTAB,DTAB*2,DTAB*3,DTAB*4,DTAB*5,DTAB*6,DTAB*7,DTAB*8,
254*7074Srrh 	DTAB*9,DTAB*10,DTAB*11,DTAB*12,DTAB*13,DTAB*14,DTAB*15,0};
255*7074Srrh int line[LNSIZE] = {0};
256*7074Srrh int word[WDSIZE] = {0};
257*7074Srrh int blockxxx[EVS-68-NHYP-NTAB-WDSIZE-LNSIZE] = {0};
258*7074Srrh /*spare 5 words*/
259*7074Srrh int oline[LNSIZE+1];
260