add directory study
This commit is contained in:
43
study/linux-travel/MINIX-1.5/1.5/Source/commands/mknod.c
Normal file
43
study/linux-travel/MINIX-1.5/1.5/Source/commands/mknod.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* mknod - build a special file Author: Andy Tanenbaum */
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
/* mknod name b/c major minor [size] makes a node. */
|
||||
|
||||
int mode, major, minor, dev;
|
||||
unsigned int size;
|
||||
|
||||
if (argc < 5) badcomm();
|
||||
if (*argv[2] != 'b' && *argv[2] != 'c') badcomm();
|
||||
if (*argv[2] == 'c' && argc != 5) badchar();
|
||||
if (*argv[2] == 'b' && argc != 6) badblock();
|
||||
mode = (*argv[2] == 'b' ? 060666 : 020666);
|
||||
major = atoi(argv[3]);
|
||||
minor = atoi(argv[4]);
|
||||
size = (*argv[2] == 'b' ? atoi(argv[5]) : 0);
|
||||
if (major < 0 || minor < 0) badcomm();
|
||||
dev = (major << 8) | minor;
|
||||
if (mknod(argv[1], mode, dev, size) < 0) perror("mknod");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
badcomm()
|
||||
{
|
||||
std_err("Usage: mknod name b/c major minor [size_in_blocks]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
badchar()
|
||||
{
|
||||
std_err("Usage: mknod name c major minor\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
badblock()
|
||||
{
|
||||
std_err("Usage: mknod name b major minor size_in_blocks\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user