chiark / gitweb /
libudev: return kernel provided devnode when asked before we handled any rules
authorKay Sievers <kay.sievers@vrfy.org>
Fri, 22 Oct 2010 11:50:55 +0000 (13:50 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Fri, 22 Oct 2010 11:56:16 +0000 (13:56 +0200)
Makefile.am
libudev/libudev-device.c

index fd13005..4dbdfd9 100644 (file)
@@ -35,7 +35,7 @@ DISTCHECK_HOOKS =
 # libudev
 # ------------------------------------------------------------------------------
 LIBUDEV_CURRENT=9
-LIBUDEV_REVISION=2
+LIBUDEV_REVISION=3
 LIBUDEV_AGE=9
 
 SUBDIRS += libudev/docs
index e5f8cc3..9b5d79f 100644 (file)
@@ -876,8 +876,19 @@ const char *udev_device_get_devnode(struct udev_device *udev_device)
 {
        if (udev_device == NULL)
                return NULL;
-       if (!udev_device->info_loaded)
+       if (!udev_device->info_loaded) {
+               udev_device_read_uevent_file(udev_device);
                udev_device_read_db(udev_device);
+       }
+
+       /* we might get called before we handled an event and have a db, use the kernel-provided name */
+       if (udev_device->devnode == NULL && udev_device_get_knodename(udev_device) != NULL) {
+               if (asprintf(&udev_device->devnode, "%s/%s",
+                            udev_get_dev_path(udev_device->udev), udev_device_get_knodename(udev_device)) < 0)
+                       return NULL;
+               return udev_device->devnode;
+       }
+
        return udev_device->devnode;
 }