xref: /plan9/sys/src/cmd/htmlroff/t20.c (revision 426d2b71458df9b491ba6c167f699b3f1f7b0428)
1*426d2b71SDavid du Colombier #include "a.h"
2*426d2b71SDavid du Colombier 
3*426d2b71SDavid du Colombier /*
4*426d2b71SDavid du Colombier  * 20. Miscellaneous
5*426d2b71SDavid du Colombier  */
6*426d2b71SDavid du Colombier 
7*426d2b71SDavid du Colombier /* .mc - margin character */
8*426d2b71SDavid du Colombier /* .ig - ignore; treated like a macro in t7.c */
9*426d2b71SDavid du Colombier 
10*426d2b71SDavid du Colombier /* .pm - print macros and strings */
11*426d2b71SDavid du Colombier 
12*426d2b71SDavid du Colombier void
r_pm(int argc,Rune ** argv)13*426d2b71SDavid du Colombier r_pm(int argc, Rune **argv)
14*426d2b71SDavid du Colombier {
15*426d2b71SDavid du Colombier 	int i;
16*426d2b71SDavid du Colombier 
17*426d2b71SDavid du Colombier 	if(argc == 1){
18*426d2b71SDavid du Colombier 		printds(0);
19*426d2b71SDavid du Colombier 		return;
20*426d2b71SDavid du Colombier 	}
21*426d2b71SDavid du Colombier 	if(runestrcmp(argv[1], L("t")) == 0){
22*426d2b71SDavid du Colombier 		printds(1);
23*426d2b71SDavid du Colombier 		return;
24*426d2b71SDavid du Colombier 	}
25*426d2b71SDavid du Colombier 	for(i=1; i<argc; i++)
26*426d2b71SDavid du Colombier 		fprint(2, "%S: %S\n", argv[i], getds(argv[i]));
27*426d2b71SDavid du Colombier }
28*426d2b71SDavid du Colombier 
29*426d2b71SDavid du Colombier void
r_tm(Rune * name)30*426d2b71SDavid du Colombier r_tm(Rune *name)
31*426d2b71SDavid du Colombier {
32*426d2b71SDavid du Colombier 	Rune *line;
33*426d2b71SDavid du Colombier 
34*426d2b71SDavid du Colombier 	USED(name);
35*426d2b71SDavid du Colombier 
36*426d2b71SDavid du Colombier 	line = readline(CopyMode);
37*426d2b71SDavid du Colombier 	fprint(2, "%S\n", line);
38*426d2b71SDavid du Colombier 	free(line);
39*426d2b71SDavid du Colombier }
40*426d2b71SDavid du Colombier 
41*426d2b71SDavid du Colombier void
r_ab(Rune * name)42*426d2b71SDavid du Colombier r_ab(Rune *name)
43*426d2b71SDavid du Colombier {
44*426d2b71SDavid du Colombier 	USED(name);
45*426d2b71SDavid du Colombier 
46*426d2b71SDavid du Colombier 	r_tm(L("ab"));
47*426d2b71SDavid du Colombier 	exits(".ab");
48*426d2b71SDavid du Colombier }
49*426d2b71SDavid du Colombier 
50*426d2b71SDavid du Colombier void
r_lf(int argc,Rune ** argv)51*426d2b71SDavid du Colombier r_lf(int argc, Rune **argv)
52*426d2b71SDavid du Colombier {
53*426d2b71SDavid du Colombier 	if(argc == 1)
54*426d2b71SDavid du Colombier 		return;
55*426d2b71SDavid du Colombier 	if(argc == 2)
56*426d2b71SDavid du Colombier 		setlinenumber(nil, eval(argv[1]));
57*426d2b71SDavid du Colombier 	if(argc == 3)
58*426d2b71SDavid du Colombier 		setlinenumber(argv[2], eval(argv[1]));
59*426d2b71SDavid du Colombier }
60*426d2b71SDavid du Colombier 
61*426d2b71SDavid du Colombier void
r_fl(int argc,Rune ** argv)62*426d2b71SDavid du Colombier r_fl(int argc, Rune **argv)
63*426d2b71SDavid du Colombier {
64*426d2b71SDavid du Colombier 	USED(argc);
65*426d2b71SDavid du Colombier 	USED(argv);
66*426d2b71SDavid du Colombier 	Bflush(&bout);
67*426d2b71SDavid du Colombier }
68*426d2b71SDavid du Colombier 
69*426d2b71SDavid du Colombier void
t20init(void)70*426d2b71SDavid du Colombier t20init(void)
71*426d2b71SDavid du Colombier {
72*426d2b71SDavid du Colombier 	addreq(L("mc"), r_warn, -1);
73*426d2b71SDavid du Colombier 	addraw(L("tm"), r_tm);
74*426d2b71SDavid du Colombier 	addraw(L("ab"), r_ab);
75*426d2b71SDavid du Colombier 	addreq(L("lf"), r_lf, -1);
76*426d2b71SDavid du Colombier 	addreq(L("pm"), r_pm, -1);
77*426d2b71SDavid du Colombier 	addreq(L("fl"), r_fl, 0);
78*426d2b71SDavid du Colombier }
79*426d2b71SDavid du Colombier 
80