13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier
43e12c5d1SDavid du Colombier void usage(void);
53e12c5d1SDavid du Colombier
63e12c5d1SDavid du Colombier void
main(int argc,char * argv[])73e12c5d1SDavid du Colombier main(int argc, char *argv[])
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier ulong flag = 0;
107dd7cddfSDavid du Colombier int qflag = 0;
113e12c5d1SDavid du Colombier
123e12c5d1SDavid du Colombier ARGBEGIN{
133e12c5d1SDavid du Colombier case 'a':
143e12c5d1SDavid du Colombier flag |= MAFTER;
153e12c5d1SDavid du Colombier break;
163e12c5d1SDavid du Colombier case 'b':
173e12c5d1SDavid du Colombier flag |= MBEFORE;
183e12c5d1SDavid du Colombier break;
193e12c5d1SDavid du Colombier case 'c':
203e12c5d1SDavid du Colombier flag |= MCREATE;
213e12c5d1SDavid du Colombier break;
227dd7cddfSDavid du Colombier case 'q':
237dd7cddfSDavid du Colombier qflag = 1;
247dd7cddfSDavid du Colombier break;
253e12c5d1SDavid du Colombier default:
263e12c5d1SDavid du Colombier usage();
273e12c5d1SDavid du Colombier }ARGEND
283e12c5d1SDavid du Colombier
293e12c5d1SDavid du Colombier if(argc != 2 || (flag&MAFTER)&&(flag&MBEFORE))
303e12c5d1SDavid du Colombier usage();
313e12c5d1SDavid du Colombier
323e12c5d1SDavid du Colombier if(bind(argv[0], argv[1], flag) < 0){
337dd7cddfSDavid du Colombier if(qflag)
347dd7cddfSDavid du Colombier exits(0);
357dd7cddfSDavid du Colombier /* try to give a less confusing error than the default */
367dd7cddfSDavid du Colombier if(access(argv[0], 0) < 0)
377dd7cddfSDavid du Colombier fprint(2, "bind: %s: %r\n", argv[0]);
387dd7cddfSDavid du Colombier else if(access(argv[1], 0) < 0)
397dd7cddfSDavid du Colombier fprint(2, "bind: %s: %r\n", argv[1]);
407dd7cddfSDavid du Colombier else
417dd7cddfSDavid du Colombier fprint(2, "bind %s %s: %r\n", argv[0], argv[1]);
423e12c5d1SDavid du Colombier exits("bind");
433e12c5d1SDavid du Colombier }
443e12c5d1SDavid du Colombier exits(0);
453e12c5d1SDavid du Colombier }
463e12c5d1SDavid du Colombier
473e12c5d1SDavid du Colombier void
usage(void)483e12c5d1SDavid du Colombier usage(void)
493e12c5d1SDavid du Colombier {
50*f7db6155SDavid du Colombier fprint(2, "usage: bind [-q] [-b|-a|-c|-bc|-ac] new old\n");
513e12c5d1SDavid du Colombier exits("usage");
523e12c5d1SDavid du Colombier }
53