X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev%2Flib%2Flibudev-device.c;h=8e4360a7f4c50a5d96f3d83646ce1251a75a9c6d;hp=a512537140b19ff76ab46d55518ab4a2d5077f0f;hb=98f10a9e2ada5d72a0c39b94a5b59d9da4f28753;hpb=e598c5738c2dc85a3e93c3f68cd88e8eea51215b diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c index a51253714..8e4360a7f 100644 --- a/udev/lib/libudev-device.c +++ b/udev/lib/libudev-device.c @@ -404,6 +404,22 @@ struct udev_device *udev_device_get_parent(struct udev_device *udev_device) return udev_device->parent_device; } +struct udev_device *udev_device_get_parent_with_subsystem(struct udev_device *udev_device, const char *subsystem) +{ + struct udev_device *parent; + + parent = udev_device_get_parent(udev_device); + while (parent != NULL) { + const char *parent_subsystem; + + parent_subsystem = udev_device_get_subsystem(parent); + if (parent_subsystem != NULL && strcmp(parent_subsystem, subsystem) == 0) + break; + parent = udev_device_get_parent(parent); + } + return parent; +} + /** * udev_device_get_udev: * @udev_device: udev device