xref: /plan9/sys/src/cmd/bind.c (revision f7db61556a577f91350f05658e9c0724969b02c3)
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