xref: /plan9-contrib/sys/src/cmd/mount.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4 
5 void	usage(void);
6 void	catch(void*, char*);
7 
8 void
9 main(int argc, char *argv[])
10 {
11 	char *spec;
12 	ulong flag = 0;
13 	int fd;
14 
15 	ARGBEGIN{
16 	case 'a':
17 		flag |= MAFTER;
18 		break;
19 	case 'b':
20 		flag |= MBEFORE;
21 		break;
22 	case 'c':
23 		flag |= MCREATE;
24 		break;
25 	default:
26 		usage();
27 	}ARGEND
28 
29 	spec = 0;
30 	if(argc == 2)
31 		spec = "";
32 	else if(argc == 3)
33 		spec = argv[2];
34 	else
35 		usage();
36 
37 	if((flag&MAFTER)&&(flag&MBEFORE))
38 		usage();
39 
40 	fd = open(argv[0], ORDWR);
41 	if(fd < 0){
42 		fprint(2, "%s: can't open %s: %r\n", argv0, argv[0]);
43 		exits("open");
44 	}
45 
46 	notify(catch);
47 	if(amount(fd, argv[1], flag, spec) < 0){
48 		fprint(2, "%s: mount %s %s: %r\n", argv0, argv[0], argv[1]);
49 		exits("mount");
50 	}
51 	exits(0);
52 }
53 
54 void
55 catch(void *x, char *m)
56 {
57 	USED(x);
58 	fprint(2, "mount: %s\n", m);
59 	exits(m);
60 }
61 
62 void
63 usage(void)
64 {
65 	fprint(2, "usage: mount [-b|-a|-c|-bc|-ac] [-s server] /srv/service dir [spec]\n");
66 	exits("usage");
67 }
68