mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-27 13:57:26 +03:00
libudev: device - lookup subsystem and devtype together
This commit is contained in:
parent
b92511747a
commit
883012d49b
@ -17,7 +17,7 @@ udev_device_new_from_devnum
|
||||
udev_device_new_from_subsystem_sysname
|
||||
udev_device_get_parent
|
||||
udev_device_get_parent_with_subsystem
|
||||
udev_device_get_parent_with_devtype
|
||||
udev_device_get_parent_with_subsystem_devtype
|
||||
udev_device_ref
|
||||
udev_device_unref
|
||||
udev_device_get_udev
|
||||
|
@ -557,17 +557,26 @@ struct udev_device *udev_device_get_parent_with_subsystem(struct udev_device *ud
|
||||
return parent;
|
||||
}
|
||||
|
||||
struct udev_device *udev_device_get_parent_with_devtype(struct udev_device *udev_device, const char *devtype)
|
||||
struct udev_device *udev_device_get_parent_with_subsystem_devtype(struct udev_device *udev_device, const char *subsystem, const char *devtype)
|
||||
{
|
||||
struct udev_device *parent;
|
||||
|
||||
if (subsystem == NULL)
|
||||
return NULL;
|
||||
|
||||
parent = udev_device_get_parent(udev_device);
|
||||
while (parent != NULL) {
|
||||
const char *parent_subsystem;
|
||||
const char *parent_devtype;
|
||||
|
||||
parent_devtype = udev_device_get_devtype(parent);
|
||||
if (parent_devtype != NULL && strcmp(parent_devtype, devtype) == 0)
|
||||
break;
|
||||
parent_subsystem = udev_device_get_subsystem(parent);
|
||||
if (parent_subsystem != NULL && strcmp(parent_subsystem, subsystem) == 0) {
|
||||
if (devtype == NULL)
|
||||
break;
|
||||
parent_devtype = udev_device_get_devtype(parent);
|
||||
if (parent_devtype != NULL && strcmp(parent_devtype, devtype) == 0)
|
||||
break;
|
||||
}
|
||||
parent = udev_device_get_parent(parent);
|
||||
}
|
||||
return parent;
|
||||
|
@ -63,7 +63,7 @@ extern struct udev_device *udev_device_new_from_devnum(struct udev *udev, char t
|
||||
extern struct udev_device *udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname);
|
||||
extern struct udev_device *udev_device_get_parent(struct udev_device *udev_device);
|
||||
extern struct udev_device *udev_device_get_parent_with_subsystem(struct udev_device *udev_device, const char *subsystem);
|
||||
extern struct udev_device *udev_device_get_parent_with_devtype(struct udev_device *udev_device, const char *devtype);
|
||||
extern struct udev_device *udev_device_get_parent_with_subsytem_devtype(struct udev_device *udev_device, const char *subsystem, const char *devtype);
|
||||
extern struct udev_device *udev_device_ref(struct udev_device *udev_device);
|
||||
extern void udev_device_unref(struct udev_device *udev_device);
|
||||
extern struct udev *udev_device_get_udev(struct udev_device *udev_device);
|
||||
|
Loading…
x
Reference in New Issue
Block a user