xref: /csrg-svn/sbin/mknod/mknod.c (revision 24467)
1*24467Smckusick #ifndef lint
2*24467Smckusick static char *sccsid = "@(#)mknod.c	4.2 (Berkeley) 08/28/85";
3*24467Smckusick #endif not lint
4*24467Smckusick 
5*24467Smckusick #include <stdio.h>
6*24467Smckusick 
71053Sbill main(argc, argv)
8*24467Smckusick 	int argc;
9*24467Smckusick 	char **argv;
101053Sbill {
111053Sbill 	int m, a, b;
121053Sbill 
131053Sbill 	if(argc != 5) {
141053Sbill 		printf("arg count\n");
151053Sbill 		goto usage;
161053Sbill 	}
171053Sbill 	if(*argv[2] == 'b')
181053Sbill 		m = 060666; else
191053Sbill 	if(*argv[2] == 'c')
201053Sbill 		m = 020666; else
211053Sbill 		goto usage;
221053Sbill 	a = number(argv[3]);
231053Sbill 	if(a < 0)
241053Sbill 		goto usage;
251053Sbill 	b = number(argv[4]);
261053Sbill 	if(b < 0)
271053Sbill 		goto usage;
28*24467Smckusick 	if(mknod(argv[1], m, (a<<8)|b) < 0) {
29*24467Smckusick 		fprintf(stderr, "mknod: ");
30*24467Smckusick 		perror(argv[1]);
31*24467Smckusick 	}
321053Sbill 	exit(0);
331053Sbill 
341053Sbill usage:
351053Sbill 	printf("usage: mknod name b/c major minor\n");
361053Sbill }
371053Sbill 
381053Sbill number(s)
391053Sbill char *s;
401053Sbill {
411053Sbill 	int n, c;
421053Sbill 
431053Sbill 	n = 0;
441053Sbill 	while(c = *s++) {
451053Sbill 		if(c<'0' || c>'9')
461053Sbill 			return(-1);
471053Sbill 		n = n*10 + c-'0';
481053Sbill 	}
491053Sbill 	return(n);
501053Sbill }
51