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 static void
usage(void)10*9a747e4fSDavid du Colombier usage(void)
11*9a747e4fSDavid du Colombier {
12*9a747e4fSDavid du Colombier fprint(2, "usage: %s -n nsect -z sectsize -f file\n", prog);
13*9a747e4fSDavid du Colombier exits("usage");
14*9a747e4fSDavid du Colombier }
15*9a747e4fSDavid du Colombier
16*9a747e4fSDavid du Colombier static ulong
argval(char * arg)17*9a747e4fSDavid du Colombier argval(char *arg)
18*9a747e4fSDavid du Colombier {
19*9a747e4fSDavid du Colombier long v;
20*9a747e4fSDavid du Colombier char *extra;
21*9a747e4fSDavid du Colombier
22*9a747e4fSDavid du Colombier if(arg == nil)
23*9a747e4fSDavid du Colombier usage();
24*9a747e4fSDavid du Colombier v = strtol(arg, &extra, 0);
25*9a747e4fSDavid du Colombier if(*extra || v <= 0)
26*9a747e4fSDavid du Colombier usage();
27*9a747e4fSDavid du Colombier return v;
28*9a747e4fSDavid du Colombier }
29*9a747e4fSDavid du Colombier
30*9a747e4fSDavid du Colombier void
main(int argc,char ** argv)31*9a747e4fSDavid du Colombier main(int argc, char **argv)
32*9a747e4fSDavid du Colombier {
33*9a747e4fSDavid du Colombier char *file;
34*9a747e4fSDavid du Colombier
35*9a747e4fSDavid du Colombier prog = "testldfs";
36*9a747e4fSDavid du Colombier file = nil;
37*9a747e4fSDavid du Colombier
38*9a747e4fSDavid du Colombier ARGBEGIN {
39*9a747e4fSDavid du Colombier case 'n':
40*9a747e4fSDavid du Colombier nsects = argval(ARGF());
41*9a747e4fSDavid du Colombier break;
42*9a747e4fSDavid du Colombier case 'z':
43*9a747e4fSDavid du Colombier sectsize = argval(ARGF());
44*9a747e4fSDavid du Colombier break;
45*9a747e4fSDavid du Colombier case 'f':
46*9a747e4fSDavid du Colombier file = ARGF();
47*9a747e4fSDavid du Colombier break;
48*9a747e4fSDavid du Colombier default:
49*9a747e4fSDavid du Colombier usage();
50*9a747e4fSDavid du Colombier } ARGEND
51*9a747e4fSDavid du Colombier
52*9a747e4fSDavid du Colombier if(argc != 0 || nsects == 0 || sectsize == 0 || file == nil)
53*9a747e4fSDavid du Colombier usage();
54*9a747e4fSDavid du Colombier
55*9a747e4fSDavid du Colombier if(nsects < 8) {
56*9a747e4fSDavid du Colombier fprint(2, "%s: unreasonable value for nsects: %lud\n", prog, nsects);
57*9a747e4fSDavid du Colombier exits("nsects");
58*9a747e4fSDavid du Colombier }
59*9a747e4fSDavid du Colombier
60*9a747e4fSDavid du Colombier if(sectsize < 512) {
61*9a747e4fSDavid du Colombier fprint(2, "%s: unreasonable value for sectsize: %lud\n", prog, sectsize);
62*9a747e4fSDavid du Colombier exits("sectsize");
63*9a747e4fSDavid du Colombier }
64*9a747e4fSDavid du Colombier
65*9a747e4fSDavid du Colombier sectbuff = emalloc9p(sectsize);
66*9a747e4fSDavid du Colombier initdata(file, 0);
67*9a747e4fSDavid du Colombier einit();
68*9a747e4fSDavid du Colombier loadfs(1);
69*9a747e4fSDavid du Colombier }
70