Blame


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