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