|  | /* | 
|  | * Convert troff -ms input to HTML. | 
|  | */ | 
|  |  | 
|  | #include "a.h" | 
|  |  | 
|  | Biobuf	bout; | 
|  | char*	tmacdir; | 
|  | int		verbose; | 
|  | int		utf8 = 0; | 
|  |  | 
|  | void | 
|  | usage(void) | 
|  | { | 
|  | fprint(2, "usage: htmlroff [-iuv] [-m mac] [-r an] [file...]\n"); | 
|  | exits("usage"); | 
|  | } | 
|  |  | 
|  | void | 
|  | main(int argc, char **argv) | 
|  | { | 
|  | int i, dostdin; | 
|  | char *p; | 
|  | Rune *r; | 
|  | Rune buf[2]; | 
|  |  | 
|  | Binit(&bout, 1, OWRITE); | 
|  | fmtinstall('L', linefmt); | 
|  | quotefmtinstall(); | 
|  |  | 
|  | tmacdir = unsharp("#9/tmac"); | 
|  | dostdin = 0; | 
|  | ARGBEGIN{ | 
|  | case 'i': | 
|  | dostdin = 1; | 
|  | break; | 
|  | case 'm': | 
|  | r = erunesmprint("%s/tmac.%s", tmacdir, EARGF(usage())); | 
|  | if(queueinputfile(r) < 0) | 
|  | fprint(2, "%S: %r\n", r); | 
|  | break; | 
|  | case 'r': | 
|  | p = EARGF(usage()); | 
|  | p += chartorune(buf, p); | 
|  | buf[1] = 0; | 
|  | _nr(buf, erunesmprint("%s", p+1)); | 
|  | break; | 
|  | case 'u': | 
|  | utf8 = 1; | 
|  | break; | 
|  | case 'v': | 
|  | verbose = 1; | 
|  | break; | 
|  | default: | 
|  | usage(); | 
|  | }ARGEND | 
|  |  | 
|  | for(i=0; i<argc; i++){ | 
|  | if(strcmp(argv[i], "-") == 0) | 
|  | queuestdin(); | 
|  | else | 
|  | queueinputfile(erunesmprint("%s", argv[i])); | 
|  | } | 
|  | if(argc == 0 || dostdin) | 
|  | queuestdin(); | 
|  |  | 
|  | run(); | 
|  | Bprint(&bout, "\n"); | 
|  | Bterm(&bout); | 
|  | exits(nil); | 
|  | } | 
|  |  |