xref: /plan9-contrib/sys/src/cmd/webfs/main.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include <bio.h>
4*9a747e4fSDavid du Colombier #include <ip.h>
5*9a747e4fSDavid du Colombier #include <plumb.h>
6*9a747e4fSDavid du Colombier #include <thread.h>
7*9a747e4fSDavid du Colombier #include <fcall.h>
8*9a747e4fSDavid du Colombier #include <9p.h>
9*9a747e4fSDavid du Colombier #include "dat.h"
10*9a747e4fSDavid du Colombier #include "fns.h"
11*9a747e4fSDavid du Colombier 
12*9a747e4fSDavid du Colombier char *cookiefile;
13*9a747e4fSDavid du Colombier char *mtpt = "/mnt/web";
14*9a747e4fSDavid du Colombier char *service;
15*9a747e4fSDavid du Colombier 
16*9a747e4fSDavid du Colombier Ctl globalctl =
17*9a747e4fSDavid du Colombier {
18*9a747e4fSDavid du Colombier 	1,	/* accept cookies */
19*9a747e4fSDavid du Colombier 	1,	/* send cookies */
20*9a747e4fSDavid du Colombier 	10,	/* redirect limit */
21*9a747e4fSDavid du Colombier 	"webfs/2.0 (plan 9)"	/* user agent */
22*9a747e4fSDavid du Colombier };
23*9a747e4fSDavid du Colombier 
24*9a747e4fSDavid du Colombier void
25*9a747e4fSDavid du Colombier usage(void)
26*9a747e4fSDavid du Colombier {
27*9a747e4fSDavid du Colombier 	fprint(2, "usage: webfs [-c cookies] [-m mtpt] [-s service]\n");
28*9a747e4fSDavid du Colombier 	threadexitsall("usage");
29*9a747e4fSDavid du Colombier }
30*9a747e4fSDavid du Colombier 
31*9a747e4fSDavid du Colombier void
32*9a747e4fSDavid du Colombier threadmain(int argc, char **argv)
33*9a747e4fSDavid du Colombier {
34*9a747e4fSDavid du Colombier 	rfork(RFNOTEG);
35*9a747e4fSDavid du Colombier 	ARGBEGIN{
36*9a747e4fSDavid du Colombier 	case 'D':
37*9a747e4fSDavid du Colombier 		chatty9p++;
38*9a747e4fSDavid du Colombier 		break;
39*9a747e4fSDavid du Colombier 	case 'c':
40*9a747e4fSDavid du Colombier 		cookiefile = EARGF(usage());
41*9a747e4fSDavid du Colombier 		break;
42*9a747e4fSDavid du Colombier 	case 'm':
43*9a747e4fSDavid du Colombier 		mtpt = EARGF(usage());
44*9a747e4fSDavid du Colombier 		break;
45*9a747e4fSDavid du Colombier 	case 's':
46*9a747e4fSDavid du Colombier 		service = EARGF(usage());
47*9a747e4fSDavid du Colombier 		break;
48*9a747e4fSDavid du Colombier 	}ARGEND
49*9a747e4fSDavid du Colombier 
50*9a747e4fSDavid du Colombier 	quotefmtinstall();
51*9a747e4fSDavid du Colombier 	if(argc != 0)
52*9a747e4fSDavid du Colombier 		usage();
53*9a747e4fSDavid du Colombier 
54*9a747e4fSDavid du Colombier 	plumbinit();
55*9a747e4fSDavid du Colombier 	globalctl.useragent = estrdup(globalctl.useragent);
56*9a747e4fSDavid du Colombier 	initcookies(cookiefile);
57*9a747e4fSDavid du Colombier 	initurl();
58*9a747e4fSDavid du Colombier 	initfs();
59*9a747e4fSDavid du Colombier 	threadpostmountsrv(&fs, service, mtpt, MREPL);
60*9a747e4fSDavid du Colombier 	threadexits(nil);
61*9a747e4fSDavid du Colombier }
62