xref: /plan9/sys/src/cmd/wikifs/wiki2html.c (revision ed397113cdcf7aafea372b730bbcd17b05ee3f60)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <bio.h>
49a747e4fSDavid du Colombier #include <String.h>
59a747e4fSDavid du Colombier #include <thread.h>
69a747e4fSDavid du Colombier #include "wiki.h"
79a747e4fSDavid du Colombier 
89a747e4fSDavid du Colombier char *wikidir;
99a747e4fSDavid du Colombier 
109a747e4fSDavid du Colombier void
usage(void)119a747e4fSDavid du Colombier usage(void)
129a747e4fSDavid du Colombier {
13*ed397113SDavid du Colombier 	fprint(2, "usage: wiki2html [-hoDP ] [-d dir] wikifile\n");
149a747e4fSDavid du Colombier 	exits("usage");
159a747e4fSDavid du Colombier }
169a747e4fSDavid du Colombier 
179a747e4fSDavid du Colombier void
main(int argc,char ** argv)189a747e4fSDavid du Colombier main(int argc, char **argv)
199a747e4fSDavid du Colombier {
209a747e4fSDavid du Colombier 	int t;
21*ed397113SDavid du Colombier 	int parse;
229a747e4fSDavid du Colombier 	String *h;
239a747e4fSDavid du Colombier 	Whist *doc;
249a747e4fSDavid du Colombier 
259a747e4fSDavid du Colombier 	rfork(RFNAMEG);
269a747e4fSDavid du Colombier 
279a747e4fSDavid du Colombier 	t = Tpage;
289a747e4fSDavid du Colombier 	ARGBEGIN{
299a747e4fSDavid du Colombier 	default:
309a747e4fSDavid du Colombier 		usage();
319a747e4fSDavid du Colombier 	case 'd':
329a747e4fSDavid du Colombier 		wikidir = EARGF(usage());
339a747e4fSDavid du Colombier 		break;
349a747e4fSDavid du Colombier 	case 'h':
359a747e4fSDavid du Colombier 		t = Thistory;
369a747e4fSDavid du Colombier 		break;
379a747e4fSDavid du Colombier 	case 'o':
389a747e4fSDavid du Colombier 		t = Toldpage;
399a747e4fSDavid du Colombier 		break;
409a747e4fSDavid du Colombier 	case 'D':
419a747e4fSDavid du Colombier 		t = Tdiff;
429a747e4fSDavid du Colombier 		break;
43*ed397113SDavid du Colombier 	case 'P':
44*ed397113SDavid du Colombier 		parse = 1;
459a747e4fSDavid du Colombier 	}ARGEND
469a747e4fSDavid du Colombier 
479a747e4fSDavid du Colombier 	if(argc != 1)
489a747e4fSDavid du Colombier 		usage();
499a747e4fSDavid du Colombier 
509a747e4fSDavid du Colombier 	if(t == Thistory || t==Tdiff)
519a747e4fSDavid du Colombier 		doc = gethistory(atoi(argv[0]));
529a747e4fSDavid du Colombier 	else
539a747e4fSDavid du Colombier 		doc = getcurrent(atoi(argv[0]));
549a747e4fSDavid du Colombier 
559a747e4fSDavid du Colombier 	if(doc == nil)
569a747e4fSDavid du Colombier 		sysfatal("doc: %r");
579a747e4fSDavid du Colombier 
58*ed397113SDavid du Colombier 	if(parse){
59*ed397113SDavid du Colombier 		printpage(doc->doc->wtxt);
60*ed397113SDavid du Colombier 		exits(0);
61*ed397113SDavid du Colombier 	}
629a747e4fSDavid du Colombier 	if((h = tohtml(doc, doc->doc+doc->ndoc-1, t)) == nil)
639a747e4fSDavid du Colombier 		sysfatal("wiki2html: %r");
649a747e4fSDavid du Colombier 
659a747e4fSDavid du Colombier 	write(1, s_to_c(h), s_len(h));
669a747e4fSDavid du Colombier 	exits(0);
679a747e4fSDavid du Colombier }
68