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