/* Translate internal FS device number to a /dev/ name. */ #include #include #include #include #include #include #include #include #include #define PATH_DEV "/dev" int main(int argc, char *argv[]) { DIR *dev; struct dirent *e; int dev_n; if(argc <= 1 || argc > 3) { fprintf(stderr, "Usage: \n" "%s \n" "%s \n", argv[0], argv[0]); return 1; } else if(argc == 2) dev_n = atoi(argv[1]); else if(argc == 3) dev_n = (atoi(argv[1]) << MAJOR) | atoi(argv[2]); if(chdir(PATH_DEV) < 0) { perror(PATH_DEV " chdir"); return 1; } if(!(dev=opendir("."))) { perror(". in " PATH_DEV); return 1; } while((e=readdir(dev))) { struct stat st; if(stat(e->d_name, &st) < 0) { continue; } if((st.st_mode & (S_IFBLK | S_IFCHR)) && dev_n == st.st_rdev) { printf("%s/%s\n", PATH_DEV, e->d_name); return 0; } } return 1; }