#include <stdio.h>
#include "tdef.h"
#include "fns.h"
#include "ext.h"

char	termtab[NS];	/* term type added in ptinit() */
char	fontdir[NS];	/* added in casefp; not used by nroff */
char	devname[20];	/* default output device */

Numtab numtab[NN] = {
	{ PAIR('%', 0) },
	{ PAIR('n', 'l') },
	{ PAIR('y', 'r') },
	{ PAIR('h', 'p') },
	{ PAIR('c', 't') },
	{ PAIR('d', 'n') },
	{ PAIR('m', 'o') },
	{ PAIR('d', 'y') },
	{ PAIR('d', 'w') },
	{ PAIR('l', 'n') },
	{ PAIR('d', 'l') },
	{ PAIR('s', 't') },
	{ PAIR('s', 'b') },
	{ PAIR('c', '.') },
	{ PAIR('$', '$') }
};


int	alphabet	= 256;	/* latin-1 */
int	pto	= 10000;
int	pfrom	= 1;
int	print	= 1;
char	nextf[NS]	= TMACDIR;
char	mfiles[NMF][NS];
int	nmfi	= 0;
int	oldbits	= -1;
int	init	= 1;
int	fc	= IMP;	/* field character */
int	eschar	= '\\';
int	pl;
int	po;
FILE	*ptid;

int	dfact	= 1;
int	dfactd	= 1;
int	res	= 1;
int	smnt	= 0;	/* beginning of special fonts */
int	ascii	= 0;	/* ascii normally off for troff, on for nroff;  -a turns on */
int	lg;
int	pnlist[NPN] = { -1 };


int	*pnp	= pnlist;
int	npn	= 1;
int	npnflg	=  1;
int	dpn	=  -1;
int	totout	=  1;
int	ulfont	=  ULFONT;
int	tabch	=  TAB;
int	ldrch	=  LEADER;


Contab contab[NM] = {
	C(PAIR('d', 's'), caseds),
	C(PAIR('a', 's'), caseas),
	C(PAIR('s', 'p'), casesp),
	C(PAIR('f', 't'), caseft),
	C(PAIR('p', 's'), caseps),
	C(PAIR('v', 's'), casevs),
	C(PAIR('n', 'r'), casenr),
	C(PAIR('i', 'f'), caseif),
	C(PAIR('i', 'e'), caseie),
	C(PAIR('e', 'l'), caseel),
	C(PAIR('p', 'o'), casepo),
	C(PAIR('t', 'l'), casetl),
	C(PAIR('t', 'm'), casetm),
	C(PAIR('f', 'm'), casefm),
	C(PAIR('b', 'p'), casebp),
	C(PAIR('c', 'h'), casech),
	C(PAIR('p', 'n'), casepn),
	C(PAIR('b', 'r'), tbreak),
	C(PAIR('t', 'i'), caseti),
	C(PAIR('n', 'e'), casene),
	C(PAIR('n', 'f'), casenf),
	C(PAIR('c', 'e'), casece),
	C(PAIR('f', 'i'), casefi),
	C(PAIR('i', 'n'), casein),
	C(PAIR('l', 'l'), casell),
	C(PAIR('n', 's'), casens),
	C(PAIR('m', 'k'), casemk),
	C(PAIR('r', 't'), casert),
	C(PAIR('a', 'm'), caseam),
	C(PAIR('d', 'e'), casede),
	C(PAIR('d', 'i'), casedi),
	C(PAIR('d', 'a'), caseda),
	C(PAIR('w', 'h'), casewh),
	C(PAIR('d', 't'), casedt),
	C(PAIR('i', 't'), caseit),
	C(PAIR('r', 'm'), caserm),
	C(PAIR('r', 'r'), caserr),
	C(PAIR('r', 'n'), casern),
	C(PAIR('a', 'd'), casead),
	C(PAIR('r', 's'), casers),
	C(PAIR('n', 'a'), casena),
	C(PAIR('p', 'l'), casepl),
	C(PAIR('t', 'a'), caseta),
	C(PAIR('t', 'r'), casetr),
	C(PAIR('u', 'l'), caseul),
	C(PAIR('c', 'u'), casecu),
	C(PAIR('l', 't'), caselt),
	C(PAIR('n', 'x'), casenx),
	C(PAIR('s', 'o'), caseso),
	C(PAIR('i', 'g'), caseig),
	C(PAIR('t', 'c'), casetc),
	C(PAIR('f', 'c'), casefc),
	C(PAIR('e', 'c'), caseec),
	C(PAIR('e', 'o'), caseeo),
	C(PAIR('l', 'c'), caselc),
	C(PAIR('e', 'v'), caseev),
	C(PAIR('r', 'd'), caserd),
	C(PAIR('a', 'b'), caseab),
	C(PAIR('f', 'l'), casefl),
	C(PAIR('e', 'x'), caseex),
	C(PAIR('s', 's'), casess),
	C(PAIR('f', 'p'), casefp),
	C(PAIR('c', 's'), casecs),
	C(PAIR('b', 'd'), casebd),
	C(PAIR('l', 'g'), caselg),
	C(PAIR('h', 'c'), casehc),
	C(PAIR('h', 'y'), casehy),
	C(PAIR('n', 'h'), casenh),
	C(PAIR('n', 'm'), casenm),
	C(PAIR('n', 'n'), casenn),
	C(PAIR('s', 'v'), casesv),
	C(PAIR('o', 's'), caseos),
	C(PAIR('l', 's'), casels),
	C(PAIR('c', 'c'), casecc),
	C(PAIR('c', '2'), casec2),
	C(PAIR('e', 'm'), caseem),
	C(PAIR('a', 'f'), caseaf),
	C(PAIR('h', 'a'), caseha),
	C(PAIR('h', 'w'), casehw),
	C(PAIR('m', 'c'), casemc),
	C(PAIR('p', 'm'), casepm),
	C(PAIR('p', 'i'), casepi),
	C(PAIR('u', 'f'), caseuf),
	C(PAIR('p', 'c'), casepc),
	C(PAIR('h', 't'), caseht),
	C(PAIR('c', 'f'), casecf),
	C(PAIR('s', 'y'), casesy),
	C(PAIR('l', 'f'), caself),
	C(PAIR('p', 't'), casept),
	C(PAIR('g', 'd'), casegd)
};


Tbuf _oline;

/*
 * troff environment block
 */

Env env[NEV] = { {	/* this sets up env[0] */
/* int	ics	 */	0,	/* insertion character space, set by .mc */
/* int	sps	 */	0,
/* int	spacesz	 */	0,
/* int	lss	 */	0,
/* int	lss1	 */	0,
/* int	ll	 */	0,
/* int	ll1	 */	0,
/* int	lt	 */	0,
/* int	lt1	 */	0,
/* Tchar ic	 */	0,	/* insertion character (= margin character) */
/* int	icf	 */	0,	/* insertion character flag */
/* Tchar chbits	 */	0,	/* size+font bits for current character */
/* Tchar spbits	 */	0,
/* Tchar nmbits	 */	0,	/* size+font bits for number from .nm */
/* int	apts	 */	PS,	/* actual point size -- as requested by user */
/* int	apts1	 */	PS,	/* need not match an existent size */
/* int	pts	 */	PS,	/* hence, this is the size that really exists */
/* int	pts1	 */	PS,
/* int	font	 */	FT,
/* int	font1	 */	FT,
/* int	ls	 */	1,
/* int	ls1	 */	1,
/* int	ad	 */	1,
/* int	nms	 */	1,	/* .nm multiplier */
/* int	ndf	 */	1,	/* .nm separator */
/* int	nmwid	 */	3,	/* max width of .nm numbers */
/* int	fi	 */	1,
/* int	cc	 */	'.',
/* int	c2	 */	'\'',
/* int	ohc	 */	OHC,
/* int	tdelim	 */	IMP,
/* int	hyf	 */	1,
/* int	hyoff	 */	0,
/* int	hyphalg  */	HYPHALG,
/* int	un1	 */	-1,
/* int	tabc	 */	0,
/* int	dotc	 */	'.',
/* int	adsp	 */	0,	/* add this much space to each padding point */
/* int	adrem	 */	0,	/* excess space to add until it runs out */
/* int	lastl	 */	0,	/* last text on current output line */
/* int	nel	 */	0,	/* how much space left on current output line */
/* int	admod	 */	0,	/* adjust mode */
/* Tchar *wordp	 */	0,
/* int	spflg	 */	0,	/* probably to indicate space after punctuation needed */
/* Tchar *linep	 */	0,
/* Tchar *wdend	 */	0,
/* Tchar *wdstart */	0,
/* int	wne	 */	0,
/* int	ne	 */	0,	/* how much space taken on current output line */
/* int	nc	 */	0,	/* #characters (incl blank) on output line */
/* int	nb	 */	0,
/* int	lnmod	 */	0,	/* line number mode, set by .nm */
/* int	nwd	 */	0,	/* number of words on current output line */
/* int	nn	 */	0,	/* from .nn command */
/* int	ni	 */	0,	/* indent of .nm numbers, probably */
/* int	ul	 */	0,
/* int	cu	 */	0,
/* int	ce	 */	0,
/* int	in	 */	0,	/* indent and previous value */
/* int	in1	 */	0,
/* int	un	 */	0,	/* unindent of left margin in some way */
/* int	wch	 */	0,
/* int	pendt	 */	0,
/* Tchar *pendw	 */	(Tchar *)0,
/* int	pendnf	 */	0,
/* int	spread	 */	0,
/* int	it	 */	0,	/* input trap count */
/* int	itmac	 */	0
} };

Env	*envp	= env;	/* start off in env 0 */

Numerr	numerr;

Stack	*frame, *stk, *ejl;
Stack	*nxf;

int	pipeflg;
int	hflg;	/* used in nroff only */
int	eqflg;	/* used in nroff only */

int	xpts;
int	ppts;
int	pfont;
int	mpts;
int	mfont;
int	cs;
int	ccs;
int	bd;

int	stdi;
int	quiet;
int	stop;
char	ibuf[IBUFSZ];
char	xbuf[IBUFSZ];
char	*ibufp;
char	*xbufp;
char	*eibuf;
char	*xeibuf;
Tchar	pbbuf[NC];		/* pushback buffer for arguments, \n, etc. */
Tchar	*pbp = pbbuf;		/* next free slot in pbbuf */
Tchar	*lastpbp = pbbuf;	/* pbp in previous stack frame */
int	nx;
int	mflg;
Tchar	ch = 0;
int	ibf;
int	ifi;
int	iflg;
int	rargc;
char	**argp;
Ushort	trtab[NTRTAB];
int	lgf;
int	copyf;
Offset	ip;
int	nlflg;
int	donef;
int	nflush;
int	nfo;
int	padc;
int	raw;
int	flss;
int	nonumb;
int	trap;
int	tflg;
int	ejf;
int	dilev;
Offset	offset;
int	em;
int	ds;
Offset	woff;
int	app;
int	ndone;
int	lead;
int	ralss;
Offset	nextb;
Tchar	nrbits;
int	nform;
int	oldmn;
int	newmn;
int	macerr;
Offset	apptr;
int	diflg;
int	evi;
int	vflag;
int	noscale;
int	po1;
int	nlist[NTRAP];
int	mlist[NTRAP];
int	evlist[EVLSZ];
int	ev;
int	tty;
int	sfont	= FT;	/* appears to be "standard" font; used by .ul */
int	sv;
int	esc;
int	widthp;
int	xfont;
int	setwdf;
int	over;
int	nhyp;
Tchar	**hyp;
Tchar	*olinep;
int	dotT;
char	*unlkp;
Wcache	widcache[NWIDCACHE];
Diver	d[NDI];
Diver	*dip;

int	c_hyphen;
int	c_emdash;
int	c_rule;
int	c_minus;
int	c_fi;
int	c_fl;
int	c_ff;
int	c_ffi;
int	c_ffl;
int	c_acute;
int	c_grave;
int	c_under;
int	c_rooten;
int	c_boxrule;
int	c_lefthand;
int	c_dagger;
int	c_isalnum;

Spnames	spnames[] =
{
	&c_hyphen,	"hy",
	&c_emdash,	"em",
	&c_rule,	"ru",
	&c_minus,	"\\-",
	&c_fi,		"fi",
	&c_fl,		"fl",
	&c_ff,		"ff",
	&c_ffi,		"Fi",
	&c_ffl,		"Fl",
	&c_acute,	"aa",
	&c_grave,	"ga",
	&c_under,	"ul",
	&c_rooten,	"rn",
	&c_boxrule,	"br",
	&c_lefthand,	"lh",
	&c_dagger,	"dg",	/* not in nroff?? */
	&c_isalnum,	"__",
	0, 0
};


Tchar	(*hmot)(void);
Tchar	(*makem)(int i);
Tchar	(*setabs)(void);
Tchar	(*setch)(int c);
Tchar	(*sethl)(int k);
Tchar	(*setht)(void);
Tchar	(*setslant)(void);
Tchar	(*vmot)(void);
Tchar	(*xlss)(void);
int	(*findft)(int i);
int	(*width)(Tchar j);
void	(*mchbits)(void);
void	(*ptlead)(void);
void	(*ptout)(Tchar i);
void	(*ptpause)(void);
void	(*setfont)(int a);
void	(*setps)(void);
void	(*setwd)(void);

