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