mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-15 19:16:08 +07:00
[PATCH] prevent udev node creatinon for "class" registration
I've found a /dev/video4linux node and just realized, that libsysfs searches all subdirs for an attribute name. So it found /class/video4linux/video0/dev for the videodev class creation event /class/video4linux and created a node. Just ignore the SUBSYSTEM="class" events now.
This commit is contained in:
parent
79721e0a77
commit
5ce120d366
@ -39,6 +39,7 @@ static const struct subsystem_file {
|
|||||||
const char *subsystem;
|
const char *subsystem;
|
||||||
const char *file;
|
const char *file;
|
||||||
} subsystem_files[] = {
|
} subsystem_files[] = {
|
||||||
|
{ .subsystem = "class", .file = NULL },
|
||||||
{ .subsystem = "net", .file = "ifindex" },
|
{ .subsystem = "net", .file = "ifindex" },
|
||||||
{ .subsystem = "scsi_host", .file = "unique_id" },
|
{ .subsystem = "scsi_host", .file = "unique_id" },
|
||||||
{ .subsystem = "scsi_device", .file = NULL },
|
{ .subsystem = "scsi_device", .file = NULL },
|
||||||
|
14
udevtest.c
14
udevtest.c
@ -84,12 +84,6 @@ int main(int argc, char *argv[], char *envp[])
|
|||||||
|
|
||||||
info("looking at '%s'", devpath);
|
info("looking at '%s'", devpath);
|
||||||
|
|
||||||
/* we only care about class devices and block stuff */
|
|
||||||
if (!strstr(devpath, "class") && !strstr(devpath, "block")) {
|
|
||||||
dbg("not a block or class device");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize the naming deamon */
|
/* initialize the naming deamon */
|
||||||
namedev_init();
|
namedev_init();
|
||||||
|
|
||||||
@ -99,6 +93,12 @@ int main(int argc, char *argv[], char *envp[])
|
|||||||
/* fill in values and test_run flag*/
|
/* fill in values and test_run flag*/
|
||||||
udev_init_device(&udev, devpath, subsystem);
|
udev_init_device(&udev, devpath, subsystem);
|
||||||
|
|
||||||
|
/* skip subsystems without "dev", but handle net devices */
|
||||||
|
if (udev.type != 'n' && subsystem_expect_no_dev(udev.subsystem)) {
|
||||||
|
info("don't care about '%s' devices", udev.subsystem);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
/* open the device */
|
/* open the device */
|
||||||
snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath);
|
snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath);
|
||||||
class_dev = sysfs_open_class_device_path(path);
|
class_dev = sysfs_open_class_device_path(path);
|
||||||
@ -107,7 +107,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg("opened class_dev->name='%s'", class_dev->name);
|
info("opened class_dev->name='%s'", class_dev->name);
|
||||||
|
|
||||||
/* simulate node creation with test flag */
|
/* simulate node creation with test flag */
|
||||||
udev.test_run = 1;
|
udev.test_run = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user