SysIII/usr/src/cmd/devnm.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/dir.h>
main(argc, argv)
char **argv;
{
struct stat sbuf;
struct direct dbuf;
short dv, fno;
if (chdir("/dev") == -1)
goto err;
if ((dv = open(".", 0)) < 0) {
err:
fprintf(stderr, "Cannot open /dev\n");
exit(1);
}
while(--argc) {
lseek(dv, (long)0, 0);
if (stat(*++argv, &sbuf) == -1) continue;
fno = sbuf.st_dev;
while(read(dv, &dbuf, sizeof dbuf) == sizeof dbuf) {
if (!dbuf.d_ino) continue;
if (stat(dbuf.d_name, &sbuf) == -1) {
fprintf(stderr, "/dev stat error\n");
exit(1);
}
if ((fno != sbuf.st_rdev) || ((sbuf.st_mode & S_IFMT) !=
S_IFBLK)) continue;
printf("%s %s\n", dbuf.d_name, *argv);
}
}
exit (0);
}