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 Colombierusage(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 Colombierthreadmain(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