chiark / gitweb /
libudev: udev_device - read "driver" value
[elogind.git] / udev / lib / libudev-device.c
index 00b9440386171542f294bbbcb2f6f6393ec01108..578afe7ec2d4e77bf707faed29da7063121a7417 100644 (file)
@@ -346,8 +346,15 @@ int udev_device_get_properties(struct udev_device *udev_device,
 
 const char *udev_device_get_driver(struct udev_device *udev_device)
 {
+       char driver[NAME_SIZE];
+
        if (udev_device == NULL)
                return NULL;
+       if (udev_device->driver != NULL)
+               return udev_device->driver;
+       if (util_get_sys_driver(udev_device->udev, udev_device->devpath, driver, sizeof(driver)) < 2)
+               return NULL;
+       udev_device->driver = strdup(driver);
        return udev_device->driver;
 }