Line | |
---|
1 |
|
---|
2 | /* Translate internal FS device number to a /dev/ name. */
|
---|
3 |
|
---|
4 | #include <stdio.h>
|
---|
5 | #include <string.h>
|
---|
6 | #include <stdlib.h>
|
---|
7 | #include <dirent.h>
|
---|
8 | #include <unistd.h>
|
---|
9 |
|
---|
10 | #include <sys/stat.h>
|
---|
11 | #include <sys/types.h>
|
---|
12 | #include <minix/config.h>
|
---|
13 | #include <minix/const.h>
|
---|
14 |
|
---|
15 | #define PATH_DEV "/dev"
|
---|
16 |
|
---|
17 | int
|
---|
18 | main(int argc, char *argv[])
|
---|
19 | {
|
---|
20 | DIR *dev;
|
---|
21 | struct dirent *e;
|
---|
22 | int dev_n;
|
---|
23 | if(argc <= 1 || argc > 3) {
|
---|
24 | fprintf(stderr, "Usage: \n"
|
---|
25 | "%s <major> <minor>\n"
|
---|
26 | "%s <devicenumber>\n", argv[0], argv[0]);
|
---|
27 | return 1;
|
---|
28 | } else if(argc == 2) dev_n = atoi(argv[1]);
|
---|
29 | else if(argc == 3) dev_n = (atoi(argv[1]) << MAJOR) | atoi(argv[2]);
|
---|
30 |
|
---|
31 | if(chdir(PATH_DEV) < 0) {
|
---|
32 | perror(PATH_DEV " chdir");
|
---|
33 | return 1;
|
---|
34 | }
|
---|
35 |
|
---|
36 | if(!(dev=opendir("."))) {
|
---|
37 | perror(". in " PATH_DEV);
|
---|
38 | return 1;
|
---|
39 | }
|
---|
40 |
|
---|
41 | while((e=readdir(dev))) {
|
---|
42 | struct stat st;
|
---|
43 | if(stat(e->d_name, &st) < 0) {
|
---|
44 | continue;
|
---|
45 | }
|
---|
46 | if((st.st_mode & (S_IFBLK | S_IFCHR)) && dev_n == st.st_rdev) {
|
---|
47 | printf("%s/%s\n", PATH_DEV, e->d_name);
|
---|
48 | return 0;
|
---|
49 | }
|
---|
50 | }
|
---|
51 |
|
---|
52 | return 1;
|
---|
53 | }
|
---|
54 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.