plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

main.c (1064B)


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