1*dc5a79c1SDavid du Colombier #include <u.h>
2*dc5a79c1SDavid du Colombier #include <libc.h>
3*dc5a79c1SDavid du Colombier #include <fcall.h>
4*dc5a79c1SDavid du Colombier #include <thread.h>
5*dc5a79c1SDavid du Colombier #include <9p.h>
6*dc5a79c1SDavid du Colombier #include "dat.h"
7*dc5a79c1SDavid du Colombier #include "fns.h"
8*dc5a79c1SDavid du Colombier
9*dc5a79c1SDavid du Colombier #include "errstr.h"
10*dc5a79c1SDavid du Colombier
11*dc5a79c1SDavid du Colombier int errno;
12*dc5a79c1SDavid du Colombier int rdonly;
13*dc5a79c1SDavid du Colombier char *srvfile;
14*dc5a79c1SDavid du Colombier char *deffile;
15*dc5a79c1SDavid du Colombier
16*dc5a79c1SDavid du Colombier extern void iobuf_init(void);
17*dc5a79c1SDavid du Colombier extern Srv ext2srv;
18*dc5a79c1SDavid du Colombier
19*dc5a79c1SDavid du Colombier void
usage(void)20*dc5a79c1SDavid du Colombier usage(void)
21*dc5a79c1SDavid du Colombier {
22*dc5a79c1SDavid du Colombier fprint(2, "usage: %s [-v] [-s] [-r] [-p passwd] [-g group] [-f devicefile] [srvname]\n", argv0);
23*dc5a79c1SDavid du Colombier exits("usage");
24*dc5a79c1SDavid du Colombier }
25*dc5a79c1SDavid du Colombier
26*dc5a79c1SDavid du Colombier /*void handler(void *v, char *sig)
27*dc5a79c1SDavid du Colombier {
28*dc5a79c1SDavid du Colombier USED(v,sig);
29*dc5a79c1SDavid du Colombier syncbuf();
30*dc5a79c1SDavid du Colombier noted(NDFLT);
31*dc5a79c1SDavid du Colombier }*/
32*dc5a79c1SDavid du Colombier
33*dc5a79c1SDavid du Colombier void
main(int argc,char ** argv)34*dc5a79c1SDavid du Colombier main(int argc, char **argv)
35*dc5a79c1SDavid du Colombier {
36*dc5a79c1SDavid du Colombier int stdio;
37*dc5a79c1SDavid du Colombier
38*dc5a79c1SDavid du Colombier stdio = 0;
39*dc5a79c1SDavid du Colombier ARGBEGIN{
40*dc5a79c1SDavid du Colombier case 'D':
41*dc5a79c1SDavid du Colombier ++chatty9p;
42*dc5a79c1SDavid du Colombier break;
43*dc5a79c1SDavid du Colombier case 'v':
44*dc5a79c1SDavid du Colombier ++chatty;
45*dc5a79c1SDavid du Colombier break;
46*dc5a79c1SDavid du Colombier case 'f':
47*dc5a79c1SDavid du Colombier deffile = ARGF();
48*dc5a79c1SDavid du Colombier break;
49*dc5a79c1SDavid du Colombier case 'g':
50*dc5a79c1SDavid du Colombier gidfile(ARGF());
51*dc5a79c1SDavid du Colombier break;
52*dc5a79c1SDavid du Colombier case 'p':
53*dc5a79c1SDavid du Colombier uidfile(ARGF());
54*dc5a79c1SDavid du Colombier break;
55*dc5a79c1SDavid du Colombier case 's':
56*dc5a79c1SDavid du Colombier stdio = 1;
57*dc5a79c1SDavid du Colombier break;
58*dc5a79c1SDavid du Colombier case 'r':
59*dc5a79c1SDavid du Colombier rdonly = 1;
60*dc5a79c1SDavid du Colombier break;
61*dc5a79c1SDavid du Colombier default:
62*dc5a79c1SDavid du Colombier usage();
63*dc5a79c1SDavid du Colombier }ARGEND
64*dc5a79c1SDavid du Colombier
65*dc5a79c1SDavid du Colombier if(argc == 0)
66*dc5a79c1SDavid du Colombier srvfile = "ext2";
67*dc5a79c1SDavid du Colombier else if(argc == 1)
68*dc5a79c1SDavid du Colombier srvfile = argv[0];
69*dc5a79c1SDavid du Colombier else
70*dc5a79c1SDavid du Colombier usage();
71*dc5a79c1SDavid du Colombier
72*dc5a79c1SDavid du Colombier iobuf_init();
73*dc5a79c1SDavid du Colombier /*notify(handler);*/
74*dc5a79c1SDavid du Colombier
75*dc5a79c1SDavid du Colombier if(!chatty){
76*dc5a79c1SDavid du Colombier close(2);
77*dc5a79c1SDavid du Colombier open("#c/cons", OWRITE);
78*dc5a79c1SDavid du Colombier }
79*dc5a79c1SDavid du Colombier if(stdio){
80*dc5a79c1SDavid du Colombier srv(&ext2srv);
81*dc5a79c1SDavid du Colombier }else{
82*dc5a79c1SDavid du Colombier chat("%s %d: serving %s\n", argv0, getpid(), srvfile);
83*dc5a79c1SDavid du Colombier postmountsrv(&ext2srv, srvfile, 0, 0);
84*dc5a79c1SDavid du Colombier }
85*dc5a79c1SDavid du Colombier exits(0);
86*dc5a79c1SDavid du Colombier }
87*dc5a79c1SDavid du Colombier
88*dc5a79c1SDavid du Colombier char *
xerrstr(int e)89*dc5a79c1SDavid du Colombier xerrstr(int e)
90*dc5a79c1SDavid du Colombier {
91*dc5a79c1SDavid du Colombier if (e < 0 || e >= sizeof errmsg/sizeof errmsg[0])
92*dc5a79c1SDavid du Colombier return "no such error";
93*dc5a79c1SDavid du Colombier else
94*dc5a79c1SDavid du Colombier return errmsg[e];
95*dc5a79c1SDavid du Colombier }
96