From 9cc94b15223d158ad618a9b05210a7eb8f748007 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 3 Jul 2009 18:40:38 +0200 Subject: [PATCH] libudev: monitor - handle kernel supplied DEVNAME properly --- libudev/Makefile.am | 2 +- libudev/libudev-device.c | 1 + libudev/libudev-monitor.c | 14 ++++++-------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libudev/Makefile.am b/libudev/Makefile.am index cae12b104..b50eac962 100644 --- a/libudev/Makefile.am +++ b/libudev/Makefile.am @@ -29,7 +29,7 @@ libudev_la_SOURCES =\ libudev-queue.c LT_CURRENT=4 -LT_REVISION=0 +LT_REVISION=1 LT_AGE=4 libudev_la_LDFLAGS = \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ diff --git a/libudev/libudev-device.c b/libudev/libudev-device.c index 7644e6c63..cbbddaeff 100644 --- a/libudev/libudev-device.c +++ b/libudev/libudev-device.c @@ -1299,6 +1299,7 @@ int udev_device_set_knodename(struct udev_device *udev_device, const char *knode udev_device->knodename = strdup(knodename); if (udev_device->knodename == NULL) return -ENOMEM; + udev_device_add_property(udev_device, "DEVNAME", udev_device->knodename); return 0; } diff --git a/libudev/libudev-monitor.c b/libudev/libudev-monitor.c index e8cdd30a1..2c6c685c6 100644 --- a/libudev/libudev-monitor.c +++ b/libudev/libudev-monitor.c @@ -504,7 +504,6 @@ struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monito int action_set = 0; int maj = 0; int min = 0; - int is_kernel = 0; retry: if (udev_monitor == NULL) @@ -545,10 +544,10 @@ retry: } } else if (snl.nl_groups == UDEV_MONITOR_KERNEL) { if (snl.nl_pid > 0) { - info(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n", snl.nl_pid); + info(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n", + snl.nl_pid); return NULL; } - is_kernel = 1; } } @@ -590,9 +589,8 @@ retry: } udev_device = udev_device_new(udev_monitor->udev); - if (udev_device == NULL) { + if (udev_device == NULL) return NULL; - } while (bufpos < buflen) { char *key; @@ -616,10 +614,10 @@ retry: } else if (strncmp(key, "DEVTYPE=", 8) == 0) { udev_device_set_devtype(udev_device, &key[8]); } else if (strncmp(key, "DEVNAME=", 8) == 0) { - if (is_kernel) - udev_device_set_knodename(udev_device, &key[8]); - else + if (key[8] == '/') udev_device_set_devnode(udev_device, &key[8]); + else + udev_device_set_knodename(udev_device, &key[8]); } else if (strncmp(key, "DEVLINKS=", 9) == 0) { char devlinks[UTIL_PATH_SIZE]; char *slink; -- 2.30.2