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