xref: /plan9/sys/src/cmd/htmlroff/a.h (revision 426d2b71458df9b491ba6c167f699b3f1f7b0428)
1*426d2b71SDavid du Colombier #include <u.h>
2*426d2b71SDavid du Colombier #include <libc.h>
3*426d2b71SDavid du Colombier #include <bio.h>
4*426d2b71SDavid du Colombier #include <ctype.h>
5*426d2b71SDavid du Colombier 
6*426d2b71SDavid du Colombier enum
7*426d2b71SDavid du Colombier {
8*426d2b71SDavid du Colombier 	Unbsp = 0x00A0,
9*426d2b71SDavid du Colombier 	Uprivate = 0xF000,
10*426d2b71SDavid du Colombier 	Uempty,	/* \& */
11*426d2b71SDavid du Colombier 	Uamp,	/* raw & */
12*426d2b71SDavid du Colombier 	Ult,		/* raw < */
13*426d2b71SDavid du Colombier 	Ugt,		/* raw > */
14*426d2b71SDavid du Colombier 	Utick,	/* raw ' */
15*426d2b71SDavid du Colombier 	Ubtick,	/* raw ` */
16*426d2b71SDavid du Colombier 	Uminus,	/* raw - */
17*426d2b71SDavid du Colombier 	Uspace,	/* raw space */
18*426d2b71SDavid du Colombier 	Upl,		/* symbol + */
19*426d2b71SDavid du Colombier 	Ueq,		/* symbol = */
20*426d2b71SDavid du Colombier 	Umi,		/* symbol - */
21*426d2b71SDavid du Colombier 	Uformatted,	/* start diverted output */
22*426d2b71SDavid du Colombier 	Uunformatted,	/* end diverted output */
23*426d2b71SDavid du Colombier 
24*426d2b71SDavid du Colombier 	UPI = 720,	/* units per inch */
25*426d2b71SDavid du Colombier 	UPX = 10,	/* units per pixel */
26*426d2b71SDavid du Colombier 
27*426d2b71SDavid du Colombier 	/* special input modes */
28*426d2b71SDavid du Colombier 	CopyMode = 1<<1,
29*426d2b71SDavid du Colombier 	ExpandMode = 1<<2,
30*426d2b71SDavid du Colombier 	ArgMode = 1<<3,
31*426d2b71SDavid du Colombier 	HtmlMode = 1<<4,
32*426d2b71SDavid du Colombier 
33*426d2b71SDavid du Colombier 	MaxLine = 1024,
34*426d2b71SDavid du Colombier };
35*426d2b71SDavid du Colombier 
36*426d2b71SDavid du Colombier Rune*	L(char*);
37*426d2b71SDavid du Colombier 
38*426d2b71SDavid du Colombier void		addesc(Rune, int (*)(void), int);
39*426d2b71SDavid du Colombier void		addraw(Rune*, void(*)(Rune*));
40*426d2b71SDavid du Colombier void		addreq(Rune*, void(*)(int, Rune**), int);
41*426d2b71SDavid du Colombier void		af(Rune*, Rune*);
42*426d2b71SDavid du Colombier void		as(Rune*, Rune*);
43*426d2b71SDavid du Colombier void		br(void);
44*426d2b71SDavid du Colombier void		closehtml(void);
45*426d2b71SDavid du Colombier Rune*	copyarg(void);
46*426d2b71SDavid du Colombier void		delraw(Rune*);
47*426d2b71SDavid du Colombier void		delreq(Rune*);
48*426d2b71SDavid du Colombier void		ds(Rune*, Rune*);
49*426d2b71SDavid du Colombier int		dv(int);
50*426d2b71SDavid du Colombier int		e_nop(void);
51*426d2b71SDavid du Colombier int		e_warn(void);
52*426d2b71SDavid du Colombier void*	emalloc(uint);
53*426d2b71SDavid du Colombier void*	erealloc(void*, uint);
54*426d2b71SDavid du Colombier Rune*	erunesmprint(char*, ...);
55*426d2b71SDavid du Colombier Rune*	erunestrdup(Rune*);
56*426d2b71SDavid du Colombier char*	esmprint(char*, ...);
57*426d2b71SDavid du Colombier char*	estrdup(char*);
58*426d2b71SDavid du Colombier int		eval(Rune*);
59*426d2b71SDavid du Colombier int		evalscale(Rune*, int);
60*426d2b71SDavid du Colombier Rune*	getname(void);
61*426d2b71SDavid du Colombier int		getnext(void);
62*426d2b71SDavid du Colombier Rune*	getds(Rune*);
63*426d2b71SDavid du Colombier Rune*	_getnr(Rune*);
64*426d2b71SDavid du Colombier int		getnr(Rune*);
65*426d2b71SDavid du Colombier int		getnrr(Rune*);
66*426d2b71SDavid du Colombier int		getrune(void);
67*426d2b71SDavid du Colombier Rune*	getqarg(void);
68*426d2b71SDavid du Colombier Rune*	getline(void);
69*426d2b71SDavid du Colombier void		hideihtml(void);
70*426d2b71SDavid du Colombier void		html(Rune*, Rune*);
71*426d2b71SDavid du Colombier void		htmlinit(void);
72*426d2b71SDavid du Colombier void		ihtml(Rune*, Rune*);
73*426d2b71SDavid du Colombier void		inputnotify(void(*)(void));
74*426d2b71SDavid du Colombier void		itrap(void);
75*426d2b71SDavid du Colombier void		itrapset(void);
76*426d2b71SDavid du Colombier int		linefmt(Fmt*);
77*426d2b71SDavid du Colombier void		nr(Rune*, int);
78*426d2b71SDavid du Colombier void		_nr(Rune*, Rune*);
79*426d2b71SDavid du Colombier void		out(Rune*);
80*426d2b71SDavid du Colombier void		(*outcb)(Rune);
81*426d2b71SDavid du Colombier void		outhtml(Rune*);
82*426d2b71SDavid du Colombier void		outrune(Rune);
83*426d2b71SDavid du Colombier void		outtrap(void);
84*426d2b71SDavid du Colombier int		popinput(void);
85*426d2b71SDavid du Colombier void		printds(int);
86*426d2b71SDavid du Colombier int		pushinputfile(Rune*);
87*426d2b71SDavid du Colombier void		pushinputstring(Rune*);
88*426d2b71SDavid du Colombier int		pushstdin(void);
89*426d2b71SDavid du Colombier int		queueinputfile(Rune*);
90*426d2b71SDavid du Colombier int		queuestdin(void);
91*426d2b71SDavid du Colombier void		r_nop(int, Rune**);
92*426d2b71SDavid du Colombier void		r_warn(int, Rune**);
93*426d2b71SDavid du Colombier Rune	*readline(int);
94*426d2b71SDavid du Colombier void		reitag(void);
95*426d2b71SDavid du Colombier void		renraw(Rune*, Rune*);
96*426d2b71SDavid du Colombier void		renreq(Rune*, Rune*);
97*426d2b71SDavid du Colombier void		run(void);
98*426d2b71SDavid du Colombier void		runinput(void);
99*426d2b71SDavid du Colombier int		runmacro(int, int, Rune**);
100*426d2b71SDavid du Colombier void		runmacro1(Rune*);
101*426d2b71SDavid du Colombier Rune*	rune2html(Rune);
102*426d2b71SDavid du Colombier void		setlinenumber(Rune*, int);
103*426d2b71SDavid du Colombier void		showihtml(void);
104*426d2b71SDavid du Colombier void		sp(int);
105*426d2b71SDavid du Colombier void		t1init(void);
106*426d2b71SDavid du Colombier void		t2init(void);
107*426d2b71SDavid du Colombier void		t3init(void);
108*426d2b71SDavid du Colombier void		t4init(void);
109*426d2b71SDavid du Colombier void		t5init(void);
110*426d2b71SDavid du Colombier void		t6init(void);
111*426d2b71SDavid du Colombier void		t7init(void);
112*426d2b71SDavid du Colombier void		t8init(void);
113*426d2b71SDavid du Colombier void		t9init(void);
114*426d2b71SDavid du Colombier void		t10init(void);
115*426d2b71SDavid du Colombier void		t11init(void);
116*426d2b71SDavid du Colombier void		t12init(void);
117*426d2b71SDavid du Colombier void		t13init(void);
118*426d2b71SDavid du Colombier void		t14init(void);
119*426d2b71SDavid du Colombier void		t15init(void);
120*426d2b71SDavid du Colombier void		t16init(void);
121*426d2b71SDavid du Colombier void		t17init(void);
122*426d2b71SDavid du Colombier void		t18init(void);
123*426d2b71SDavid du Colombier void		t19init(void);
124*426d2b71SDavid du Colombier void		t20init(void);
125*426d2b71SDavid du Colombier Rune	troff2rune(Rune*);
126*426d2b71SDavid du Colombier void		unfont(void);
127*426d2b71SDavid du Colombier void		ungetnext(Rune);
128*426d2b71SDavid du Colombier void		ungetrune(Rune);
129*426d2b71SDavid du Colombier void		unitag(void);
130*426d2b71SDavid du Colombier void		warn(char*, ...);
131*426d2b71SDavid du Colombier 
132*426d2b71SDavid du Colombier extern	int		backslash;
133*426d2b71SDavid du Colombier extern	int		bol;
134*426d2b71SDavid du Colombier extern	Biobuf	bout;
135*426d2b71SDavid du Colombier extern	int		broke;
136*426d2b71SDavid du Colombier extern	int		dot;
137*426d2b71SDavid du Colombier extern	int		inputmode;
138*426d2b71SDavid du Colombier extern	int		inrequest;
139*426d2b71SDavid du Colombier extern	int		tick;
140*426d2b71SDavid du Colombier extern	int		utf8;
141*426d2b71SDavid du Colombier extern	int		verbose;
142*426d2b71SDavid du Colombier extern	int		linepos;
143*426d2b71SDavid du Colombier 
144*426d2b71SDavid du Colombier #define	runemalloc(n)	(Rune*)emalloc((n)*sizeof(Rune))
145*426d2b71SDavid du Colombier #define	runerealloc(r, n)	(Rune*)erealloc(r, (n)*sizeof(Rune))
146*426d2b71SDavid du Colombier #define	runemove(a, b, n)	memmove(a, b, (n)*sizeof(Rune))
147*426d2b71SDavid du Colombier 
148*426d2b71SDavid du Colombier #pragma varargck type "L" void
149