Commit | Line | Data |
---|---|---|
63e3f3c6 KM |
1 | #ifndef lint |
2 | static char *sccsid = "@(#)mknod.c 4.2 (Berkeley) %G%"; | |
3 | #endif not lint | |
4 | ||
5 | #include <stdio.h> | |
6 | ||
f20a0651 | 7 | main(argc, argv) |
63e3f3c6 KM |
8 | int argc; |
9 | char **argv; | |
f20a0651 BJ |
10 | { |
11 | int m, a, b; | |
12 | ||
13 | if(argc != 5) { | |
14 | printf("arg count\n"); | |
15 | goto usage; | |
16 | } | |
17 | if(*argv[2] == 'b') | |
18 | m = 060666; else | |
19 | if(*argv[2] == 'c') | |
20 | m = 020666; else | |
21 | goto usage; | |
22 | a = number(argv[3]); | |
23 | if(a < 0) | |
24 | goto usage; | |
25 | b = number(argv[4]); | |
26 | if(b < 0) | |
27 | goto usage; | |
63e3f3c6 KM |
28 | if(mknod(argv[1], m, (a<<8)|b) < 0) { |
29 | fprintf(stderr, "mknod: "); | |
30 | perror(argv[1]); | |
31 | } | |
f20a0651 BJ |
32 | exit(0); |
33 | ||
34 | usage: | |
35 | printf("usage: mknod name b/c major minor\n"); | |
36 | } | |
37 | ||
38 | number(s) | |
39 | char *s; | |
40 | { | |
41 | int n, c; | |
42 | ||
43 | n = 0; | |
44 | while(c = *s++) { | |
45 | if(c<'0' || c>'9') | |
46 | return(-1); | |
47 | n = n*10 + c-'0'; | |
48 | } | |
49 | return(n); | |
50 | } |