xref: /original-bsd/sys/i386/floppy/mknod/mknod.c (revision 3705696b)
1 /*-
2  * Copyright (c) 1991, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)mknod.c	8.1 (Berkeley) 06/11/93
8  */
9 
10 #include <sys/param.h>
11 #include <sys/stat.h>
12 
13 int eval;
14 
15 main(argc, argv)
16 	int argc;
17 	char **argv;
18 {
19 	register char *p;
20 	register int major, minor;
21 	unsigned short mode;
22 
23 	if (*++argv && **argv == '-') {
24 		err("no options available", 0);
25 		_exit(1);
26 	}
27 	if (argc != 5) {
28 usage:		err("usage: mknod name [b|c] major minor", 0);
29 		_exit(1);
30 	}
31 
32 	mode = 0666;
33 	if (argv[1][0] == 'c')
34 		mode |= S_IFCHR;
35 	else if (argv[1][0] == 'b')
36 		mode |= S_IFBLK;
37 	else
38 		goto usage;
39 
40 	for (major = 0, p = argv[2]; *p; ++p)
41                 major = major * 10 + *p - '0';
42 	for (minor = 0, p = argv[3]; *p; ++p)
43                 minor = minor * 10 + *p - '0';
44 
45 	if (mknod(argv[0], mode, makedev(major, minor)) < 0) {
46 		err(argv[0], 1);
47 		_exit(1);
48 	}
49 	_exit(0);
50 }
51 
52 #define	PROGNAME	"mknod: "
53 #include "errfunction"
54