xref: /csrg-svn/sbin/mknod/mknod.c (revision 1053)
1*1053Sbill static char *sccsid = "@(#)mknod.c	4.1 (Berkeley) 10/01/80";
2*1053Sbill main(argc, argv)
3*1053Sbill int argc;
4*1053Sbill char **argv;
5*1053Sbill {
6*1053Sbill 	int m, a, b;
7*1053Sbill 
8*1053Sbill 	if(argc != 5) {
9*1053Sbill 		printf("arg count\n");
10*1053Sbill 		goto usage;
11*1053Sbill 	}
12*1053Sbill 	if(*argv[2] == 'b')
13*1053Sbill 		m = 060666; else
14*1053Sbill 	if(*argv[2] == 'c')
15*1053Sbill 		m = 020666; else
16*1053Sbill 		goto usage;
17*1053Sbill 	a = number(argv[3]);
18*1053Sbill 	if(a < 0)
19*1053Sbill 		goto usage;
20*1053Sbill 	b = number(argv[4]);
21*1053Sbill 	if(b < 0)
22*1053Sbill 		goto usage;
23*1053Sbill 	if(mknod(argv[1], m, (a<<8)|b) < 0)
24*1053Sbill 		perror("mknod");
25*1053Sbill 	exit(0);
26*1053Sbill 
27*1053Sbill usage:
28*1053Sbill 	printf("usage: mknod name b/c major minor\n");
29*1053Sbill }
30*1053Sbill 
31*1053Sbill number(s)
32*1053Sbill char *s;
33*1053Sbill {
34*1053Sbill 	int n, c;
35*1053Sbill 
36*1053Sbill 	n = 0;
37*1053Sbill 	while(c = *s++) {
38*1053Sbill 		if(c<'0' || c>'9')
39*1053Sbill 			return(-1);
40*1053Sbill 		n = n*10 + c-'0';
41*1053Sbill 	}
42*1053Sbill 	return(n);
43*1053Sbill }
44