#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);

