xref: /csrg-svn/sys/i386/floppy/mknod/mknod.c (revision 63343)
149542Sbostic /*-
2*63343Sbostic  * Copyright (c) 1991, 1993
3*63343Sbostic  *	The Regents of the University of California.  All rights reserved.
449542Sbostic  *
549542Sbostic  * %sccs.include.redist.c%
649542Sbostic  *
7*63343Sbostic  *	@(#)mknod.c	8.1 (Berkeley) 06/11/93
849542Sbostic  */
949542Sbostic 
1049542Sbostic #include <sys/param.h>
1149542Sbostic #include <sys/stat.h>
1249542Sbostic 
1349542Sbostic int eval;
1449542Sbostic 
main(argc,argv)1549542Sbostic main(argc, argv)
1649542Sbostic 	int argc;
1749542Sbostic 	char **argv;
1849542Sbostic {
1949542Sbostic 	register char *p;
2049542Sbostic 	register int major, minor;
2149542Sbostic 	unsigned short mode;
2249542Sbostic 
2349542Sbostic 	if (*++argv && **argv == '-') {
2449542Sbostic 		err("no options available", 0);
2549542Sbostic 		_exit(1);
2649542Sbostic 	}
2749542Sbostic 	if (argc != 5) {
2849542Sbostic usage:		err("usage: mknod name [b|c] major minor", 0);
2949542Sbostic 		_exit(1);
3049542Sbostic 	}
3149542Sbostic 
3249542Sbostic 	mode = 0666;
3349542Sbostic 	if (argv[1][0] == 'c')
3449542Sbostic 		mode |= S_IFCHR;
3549542Sbostic 	else if (argv[1][0] == 'b')
3649542Sbostic 		mode |= S_IFBLK;
3749542Sbostic 	else
3849542Sbostic 		goto usage;
3949542Sbostic 
4049542Sbostic 	for (major = 0, p = argv[2]; *p; ++p)
4149542Sbostic                 major = major * 10 + *p - '0';
4249542Sbostic 	for (minor = 0, p = argv[3]; *p; ++p)
4349542Sbostic                 minor = minor * 10 + *p - '0';
4449542Sbostic 
4549542Sbostic 	if (mknod(argv[0], mode, makedev(major, minor)) < 0) {
4649542Sbostic 		err(argv[0], 1);
4749542Sbostic 		_exit(1);
4849542Sbostic 	}
4949542Sbostic 	_exit(0);
5049542Sbostic }
5149542Sbostic 
5249542Sbostic #define	PROGNAME	"mknod: "
5349542Sbostic #include "errfunction"
54