1*9a747e4fSDavid du Colombier #include <u.h> 2*9a747e4fSDavid du Colombier #include <libc.h> 3*9a747e4fSDavid du Colombier #include <auth.h> 4*9a747e4fSDavid du Colombier #include <fcall.h> 5*9a747e4fSDavid du Colombier #include <thread.h> 6*9a747e4fSDavid du Colombier #include <9p.h> 7*9a747e4fSDavid du Colombier #include "flashfs.h" 8*9a747e4fSDavid du Colombier 9*9a747e4fSDavid du Colombier extern int chatty9p; 10*9a747e4fSDavid du Colombier 11*9a747e4fSDavid du Colombier static void usage(void)12*9a747e4fSDavid du Colombierusage(void) 13*9a747e4fSDavid du Colombier { 14*9a747e4fSDavid du Colombier fprint(2, "usage: %s [-rD] [-n nsect] [-z sectsize] [-m mount] [-f file]\n", argv0); 15*9a747e4fSDavid du Colombier exits("usage"); 16*9a747e4fSDavid du Colombier } 17*9a747e4fSDavid du Colombier 18*9a747e4fSDavid du Colombier static ulong argval(char * arg)19*9a747e4fSDavid du Colombierargval(char *arg) 20*9a747e4fSDavid du Colombier { 21*9a747e4fSDavid du Colombier long v; 22*9a747e4fSDavid du Colombier char *extra; 23*9a747e4fSDavid du Colombier 24*9a747e4fSDavid du Colombier if(arg == nil) 25*9a747e4fSDavid du Colombier usage(); 26*9a747e4fSDavid du Colombier v = strtol(arg, &extra, 0); 27*9a747e4fSDavid du Colombier if(*extra || v <= 0) 28*9a747e4fSDavid du Colombier usage(); 29*9a747e4fSDavid du Colombier return v; 30*9a747e4fSDavid du Colombier } 31*9a747e4fSDavid du Colombier 32*9a747e4fSDavid du Colombier void main(int argc,char ** argv)33*9a747e4fSDavid du Colombiermain(int argc, char **argv) 34*9a747e4fSDavid du Colombier { 35*9a747e4fSDavid du Colombier int ro; 36*9a747e4fSDavid du Colombier char *file, *mount; 37*9a747e4fSDavid du Colombier 38*9a747e4fSDavid du Colombier mount = "/n/brzr"; 39*9a747e4fSDavid du Colombier ro = 0; 40*9a747e4fSDavid du Colombier file = "/dev/flash/fs"; 41*9a747e4fSDavid du Colombier 42*9a747e4fSDavid du Colombier ARGBEGIN { 43*9a747e4fSDavid du Colombier case 'D': 44*9a747e4fSDavid du Colombier chatty9p++; 45*9a747e4fSDavid du Colombier break; 46*9a747e4fSDavid du Colombier case 'r': 47*9a747e4fSDavid du Colombier ro++; 48*9a747e4fSDavid du Colombier break; 49*9a747e4fSDavid du Colombier case 'n': 50*9a747e4fSDavid du Colombier nsects = argval(ARGF()); 51*9a747e4fSDavid du Colombier break; 52*9a747e4fSDavid du Colombier case 'z': 53*9a747e4fSDavid du Colombier sectsize = argval(ARGF()); 54*9a747e4fSDavid du Colombier break; 55*9a747e4fSDavid du Colombier case 'f': 56*9a747e4fSDavid du Colombier file = ARGF(); 57*9a747e4fSDavid du Colombier break; 58*9a747e4fSDavid du Colombier case 'm': 59*9a747e4fSDavid du Colombier mount = ARGF(); 60*9a747e4fSDavid du Colombier break; 61*9a747e4fSDavid du Colombier default: 62*9a747e4fSDavid du Colombier usage(); 63*9a747e4fSDavid du Colombier } ARGEND 64*9a747e4fSDavid du Colombier 65*9a747e4fSDavid du Colombier if(argc != 0) 66*9a747e4fSDavid du Colombier usage(); 67*9a747e4fSDavid du Colombier 68*9a747e4fSDavid du Colombier initdata(file, 0); 69*9a747e4fSDavid du Colombier sectbuff = emalloc9p(sectsize); 70*9a747e4fSDavid du Colombier einit(); 71*9a747e4fSDavid du Colombier loadfs(ro); 72*9a747e4fSDavid du Colombier serve(mount); 73*9a747e4fSDavid du Colombier exits(nil); 74*9a747e4fSDavid du Colombier } 75