1*426d2b71SDavid du Colombier /*
2*426d2b71SDavid du Colombier * Convert troff -ms input to HTML.
3*426d2b71SDavid du Colombier */
4*426d2b71SDavid du Colombier
5*426d2b71SDavid du Colombier #include "a.h"
6*426d2b71SDavid du Colombier
7*426d2b71SDavid du Colombier Biobuf bout;
8*426d2b71SDavid du Colombier char* tmacdir;
9*426d2b71SDavid du Colombier int verbose;
10*426d2b71SDavid du Colombier int utf8 = 0;
11*426d2b71SDavid du Colombier
12*426d2b71SDavid du Colombier void
usage(void)13*426d2b71SDavid du Colombier usage(void)
14*426d2b71SDavid du Colombier {
15*426d2b71SDavid du Colombier fprint(2, "usage: htmlroff [-iuv] [-m mac] [-r an] [file...]\n");
16*426d2b71SDavid du Colombier exits("usage");
17*426d2b71SDavid du Colombier }
18*426d2b71SDavid du Colombier
19*426d2b71SDavid du Colombier void
main(int argc,char ** argv)20*426d2b71SDavid du Colombier main(int argc, char **argv)
21*426d2b71SDavid du Colombier {
22*426d2b71SDavid du Colombier int i, dostdin;
23*426d2b71SDavid du Colombier char *p;
24*426d2b71SDavid du Colombier Rune *r;
25*426d2b71SDavid du Colombier Rune buf[2];
26*426d2b71SDavid du Colombier
27*426d2b71SDavid du Colombier Binit(&bout, 1, OWRITE);
28*426d2b71SDavid du Colombier fmtinstall('L', linefmt);
29*426d2b71SDavid du Colombier quotefmtinstall();
30*426d2b71SDavid du Colombier
31*426d2b71SDavid du Colombier tmacdir = "/sys/lib/tmac";
32*426d2b71SDavid du Colombier dostdin = 0;
33*426d2b71SDavid du Colombier ARGBEGIN{
34*426d2b71SDavid du Colombier case 'i':
35*426d2b71SDavid du Colombier dostdin = 1;
36*426d2b71SDavid du Colombier break;
37*426d2b71SDavid du Colombier case 'm':
38*426d2b71SDavid du Colombier r = erunesmprint("%s/tmac.%s", tmacdir, EARGF(usage()));
39*426d2b71SDavid du Colombier if(queueinputfile(r) < 0)
40*426d2b71SDavid du Colombier fprint(2, "%S: %r\n", r);
41*426d2b71SDavid du Colombier break;
42*426d2b71SDavid du Colombier case 'r':
43*426d2b71SDavid du Colombier p = EARGF(usage());
44*426d2b71SDavid du Colombier p += chartorune(buf, p);
45*426d2b71SDavid du Colombier buf[1] = 0;
46*426d2b71SDavid du Colombier _nr(buf, erunesmprint("%s", p+1));
47*426d2b71SDavid du Colombier break;
48*426d2b71SDavid du Colombier case 'u':
49*426d2b71SDavid du Colombier utf8 = 1;
50*426d2b71SDavid du Colombier break;
51*426d2b71SDavid du Colombier case 'v':
52*426d2b71SDavid du Colombier verbose = 1;
53*426d2b71SDavid du Colombier break;
54*426d2b71SDavid du Colombier default:
55*426d2b71SDavid du Colombier usage();
56*426d2b71SDavid du Colombier }ARGEND
57*426d2b71SDavid du Colombier
58*426d2b71SDavid du Colombier for(i=0; i<argc; i++){
59*426d2b71SDavid du Colombier if(strcmp(argv[i], "-") == 0)
60*426d2b71SDavid du Colombier queuestdin();
61*426d2b71SDavid du Colombier else
62*426d2b71SDavid du Colombier queueinputfile(erunesmprint("%s", argv[i]));
63*426d2b71SDavid du Colombier }
64*426d2b71SDavid du Colombier if(argc == 0 || dostdin)
65*426d2b71SDavid du Colombier queuestdin();
66*426d2b71SDavid du Colombier
67*426d2b71SDavid du Colombier run();
68*426d2b71SDavid du Colombier Bprint(&bout, "\n");
69*426d2b71SDavid du Colombier Bterm(&bout);
70*426d2b71SDavid du Colombier exits(nil);
71*426d2b71SDavid du Colombier }
72*426d2b71SDavid du Colombier
73