xref: /plan9/sys/src/cmd/webfs/main.c (revision 9dfc0cb2ef9edafc5a26f7e8dbe4ef1ca2b37021)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <bio.h>
49a747e4fSDavid du Colombier #include <ip.h>
59a747e4fSDavid du Colombier #include <plumb.h>
69a747e4fSDavid du Colombier #include <thread.h>
79a747e4fSDavid du Colombier #include <fcall.h>
89a747e4fSDavid du Colombier #include <9p.h>
99a747e4fSDavid du Colombier #include "dat.h"
109a747e4fSDavid du Colombier #include "fns.h"
119a747e4fSDavid du Colombier 
129a747e4fSDavid du Colombier char *cookiefile;
139a747e4fSDavid du Colombier char *mtpt = "/mnt/web";
149a747e4fSDavid du Colombier char *service;
159a747e4fSDavid du Colombier 
169a747e4fSDavid du Colombier Ctl globalctl =
179a747e4fSDavid du Colombier {
189a747e4fSDavid du Colombier 	1,	/* accept cookies */
199a747e4fSDavid du Colombier 	1,	/* send cookies */
209a747e4fSDavid du Colombier 	10,	/* redirect limit */
219a747e4fSDavid du Colombier 	"webfs/2.0 (plan 9)"	/* user agent */
229a747e4fSDavid du Colombier };
239a747e4fSDavid du Colombier 
249a747e4fSDavid du Colombier void
usage(void)259a747e4fSDavid du Colombier usage(void)
269a747e4fSDavid du Colombier {
279a747e4fSDavid du Colombier 	fprint(2, "usage: webfs [-c cookies] [-m mtpt] [-s service]\n");
289a747e4fSDavid du Colombier 	threadexitsall("usage");
299a747e4fSDavid du Colombier }
309a747e4fSDavid du Colombier 
31e288d156SDavid du Colombier #include <pool.h>
329a747e4fSDavid du Colombier void
threadmain(int argc,char ** argv)339a747e4fSDavid du Colombier threadmain(int argc, char **argv)
349a747e4fSDavid du Colombier {
359a747e4fSDavid du Colombier 	rfork(RFNOTEG);
369a747e4fSDavid du Colombier 	ARGBEGIN{
37e288d156SDavid du Colombier 	case 'd':
38e288d156SDavid du Colombier 		mainmem->flags |= POOL_PARANOIA|POOL_ANTAGONISM;
39e288d156SDavid du Colombier 		break;
409a747e4fSDavid du Colombier 	case 'D':
419a747e4fSDavid du Colombier 		chatty9p++;
429a747e4fSDavid du Colombier 		break;
439a747e4fSDavid du Colombier 	case 'c':
449a747e4fSDavid du Colombier 		cookiefile = EARGF(usage());
459a747e4fSDavid du Colombier 		break;
469a747e4fSDavid du Colombier 	case 'm':
479a747e4fSDavid du Colombier 		mtpt = EARGF(usage());
489a747e4fSDavid du Colombier 		break;
499a747e4fSDavid du Colombier 	case 's':
509a747e4fSDavid du Colombier 		service = EARGF(usage());
519a747e4fSDavid du Colombier 		break;
52*9dfc0cb2SDavid du Colombier 	default:
53*9dfc0cb2SDavid du Colombier 		usage();
549a747e4fSDavid du Colombier 	}ARGEND
559a747e4fSDavid du Colombier 
569a747e4fSDavid du Colombier 	quotefmtinstall();
579a747e4fSDavid du Colombier 	if(argc != 0)
589a747e4fSDavid du Colombier 		usage();
599a747e4fSDavid du Colombier 
609a747e4fSDavid du Colombier 	plumbinit();
619a747e4fSDavid du Colombier 	globalctl.useragent = estrdup(globalctl.useragent);
629a747e4fSDavid du Colombier 	initcookies(cookiefile);
639a747e4fSDavid du Colombier 	initurl();
649a747e4fSDavid du Colombier 	initfs();
659a747e4fSDavid du Colombier 	threadpostmountsrv(&fs, service, mtpt, MREPL);
669a747e4fSDavid du Colombier 	threadexits(nil);
679a747e4fSDavid du Colombier }
68