xref: /plan9/acme/wiki/src/main.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include "awiki.h"
2*9a747e4fSDavid du Colombier 
3*9a747e4fSDavid du Colombier int debug;
4*9a747e4fSDavid du Colombier int mapfd;
5*9a747e4fSDavid du Colombier char *email;
6*9a747e4fSDavid du Colombier char *dir;
7*9a747e4fSDavid du Colombier 
8*9a747e4fSDavid du Colombier void
usage(void)9*9a747e4fSDavid du Colombier usage(void)
10*9a747e4fSDavid du Colombier {
11*9a747e4fSDavid du Colombier 	fprint(2, "usage: Wiki [-e email] [dir]\n");
12*9a747e4fSDavid du Colombier 	exits("usage");
13*9a747e4fSDavid du Colombier }
14*9a747e4fSDavid du Colombier 
15*9a747e4fSDavid du Colombier void
threadmain(int argc,char ** argv)16*9a747e4fSDavid du Colombier threadmain(int argc, char **argv)
17*9a747e4fSDavid du Colombier {
18*9a747e4fSDavid du Colombier 	char *s;
19*9a747e4fSDavid du Colombier 	Dir *d;
20*9a747e4fSDavid du Colombier 
21*9a747e4fSDavid du Colombier 	rfork(RFNAMEG);
22*9a747e4fSDavid du Colombier 	ARGBEGIN{
23*9a747e4fSDavid du Colombier 	case 'D':
24*9a747e4fSDavid du Colombier 		debug++;
25*9a747e4fSDavid du Colombier 		break;
26*9a747e4fSDavid du Colombier 	case 'e':
27*9a747e4fSDavid du Colombier 		email = EARGF(usage());
28*9a747e4fSDavid du Colombier 		break;
29*9a747e4fSDavid du Colombier 	default:
30*9a747e4fSDavid du Colombier 		usage();
31*9a747e4fSDavid du Colombier 		break;
32*9a747e4fSDavid du Colombier 	}ARGEND
33*9a747e4fSDavid du Colombier 
34*9a747e4fSDavid du Colombier 	if(argc > 1)
35*9a747e4fSDavid du Colombier 		usage();
36*9a747e4fSDavid du Colombier 	if(argc == 1)
37*9a747e4fSDavid du Colombier 		dir = argv[0];
38*9a747e4fSDavid du Colombier 	else
39*9a747e4fSDavid du Colombier 		dir = "/mnt/wiki";
40*9a747e4fSDavid du Colombier 
41*9a747e4fSDavid du Colombier 	if(chdir(dir) < 0){
42*9a747e4fSDavid du Colombier 		fprint(2, "chdir(%s) fails: %r\n", dir);
43*9a747e4fSDavid du Colombier 		threadexitsall(nil);
44*9a747e4fSDavid du Colombier 	}
45*9a747e4fSDavid du Colombier 
46*9a747e4fSDavid du Colombier 	if((mapfd = open("map", ORDWR)) < 0){
47*9a747e4fSDavid du Colombier 		fprint(2, "open(map): %r\n");
48*9a747e4fSDavid du Colombier 		threadexitsall(nil);
49*9a747e4fSDavid du Colombier 	}
50*9a747e4fSDavid du Colombier 
51*9a747e4fSDavid du Colombier 	if((d = dirstat("1")) == nil){
52*9a747e4fSDavid du Colombier 		fprint(2, "dirstat(%s/1) fails: %r\n", dir);
53*9a747e4fSDavid du Colombier 		threadexitsall(nil);
54*9a747e4fSDavid du Colombier 	}
55*9a747e4fSDavid du Colombier 	s = emalloc(strlen(d->name)+2);
56*9a747e4fSDavid du Colombier 	strcpy(s, d->name);
57*9a747e4fSDavid du Colombier 	strcat(s, "/");
58*9a747e4fSDavid du Colombier 	wikiopen(s, nil);
59*9a747e4fSDavid du Colombier 	threadexits(nil);
60*9a747e4fSDavid du Colombier }
61