13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 3*219b2ee8SDavid du Colombier #include <auth.h> 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier void usage(void); 63e12c5d1SDavid du Colombier void catch(void*, char*); 73e12c5d1SDavid du Colombier 83e12c5d1SDavid du Colombier void 93e12c5d1SDavid du Colombier main(int argc, char *argv[]) 103e12c5d1SDavid du Colombier { 11*219b2ee8SDavid du Colombier char *spec; 123e12c5d1SDavid du Colombier ulong flag = 0; 133e12c5d1SDavid du Colombier int fd; 143e12c5d1SDavid du Colombier 153e12c5d1SDavid du Colombier ARGBEGIN{ 163e12c5d1SDavid du Colombier case 'a': 173e12c5d1SDavid du Colombier flag |= MAFTER; 183e12c5d1SDavid du Colombier break; 193e12c5d1SDavid du Colombier case 'b': 203e12c5d1SDavid du Colombier flag |= MBEFORE; 213e12c5d1SDavid du Colombier break; 223e12c5d1SDavid du Colombier case 'c': 233e12c5d1SDavid du Colombier flag |= MCREATE; 243e12c5d1SDavid du Colombier break; 253e12c5d1SDavid du Colombier default: 263e12c5d1SDavid du Colombier usage(); 273e12c5d1SDavid du Colombier }ARGEND 283e12c5d1SDavid du Colombier 293e12c5d1SDavid du Colombier spec = 0; 303e12c5d1SDavid du Colombier if(argc == 2) 313e12c5d1SDavid du Colombier spec = ""; 323e12c5d1SDavid du Colombier else if(argc == 3) 333e12c5d1SDavid du Colombier spec = argv[2]; 343e12c5d1SDavid du Colombier else 353e12c5d1SDavid du Colombier usage(); 363e12c5d1SDavid du Colombier 373e12c5d1SDavid du Colombier if((flag&MAFTER)&&(flag&MBEFORE)) 383e12c5d1SDavid du Colombier usage(); 393e12c5d1SDavid du Colombier 403e12c5d1SDavid du Colombier fd = open(argv[0], ORDWR); 413e12c5d1SDavid du Colombier if(fd < 0){ 423e12c5d1SDavid du Colombier fprint(2, "%s: can't open %s: %r\n", argv0, argv[0]); 433e12c5d1SDavid du Colombier exits("open"); 443e12c5d1SDavid du Colombier } 453e12c5d1SDavid du Colombier 463e12c5d1SDavid du Colombier notify(catch); 47*219b2ee8SDavid du Colombier if(amount(fd, argv[1], flag, spec) < 0){ 483e12c5d1SDavid du Colombier fprint(2, "%s: mount %s %s: %r\n", argv0, argv[0], argv[1]); 493e12c5d1SDavid du Colombier exits("mount"); 503e12c5d1SDavid du Colombier } 513e12c5d1SDavid du Colombier exits(0); 523e12c5d1SDavid du Colombier } 533e12c5d1SDavid du Colombier 543e12c5d1SDavid du Colombier void 553e12c5d1SDavid du Colombier catch(void *x, char *m) 563e12c5d1SDavid du Colombier { 573e12c5d1SDavid du Colombier USED(x); 583e12c5d1SDavid du Colombier fprint(2, "mount: %s\n", m); 593e12c5d1SDavid du Colombier exits(m); 603e12c5d1SDavid du Colombier } 613e12c5d1SDavid du Colombier 623e12c5d1SDavid du Colombier void 633e12c5d1SDavid du Colombier usage(void) 643e12c5d1SDavid du Colombier { 65*219b2ee8SDavid du Colombier fprint(2, "usage: mount [-b|-a|-c|-bc|-ac] [-s server] /srv/service dir [spec]\n"); 663e12c5d1SDavid du Colombier exits("usage"); 673e12c5d1SDavid du Colombier } 68