From d2b795f2b942a2532c396c7e55d6cd8369cae7fc Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 21 Jan 2012 06:00:17 +0100 Subject: libudev: do not set DEVNAME= twice When we read the 'uevent' file we need to make sure, that we do not read the relative DEVNAME= path provided by the kernel and overwrite the absolute path udev expects here. --- src/libudev-device.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/libudev-device.c b/src/libudev-device.c index a3356cfd18..10f28b8cd5 100644 --- a/src/libudev-device.c +++ b/src/libudev-device.c @@ -548,16 +548,23 @@ int udev_device_read_uevent_file(struct udev_device *udev_device) continue; pos[0] = '\0'; - if (strncmp(line, "DEVTYPE=", 8) == 0) + if (strncmp(line, "DEVTYPE=", 8) == 0) { udev_device_set_devtype(udev_device, &line[8]); - else if (strncmp(line, "MAJOR=", 6) == 0) + continue; + } + if (strncmp(line, "IFINDEX=", 8) == 0) { + udev_device_set_ifindex(udev_device, strtoull(&line[8], NULL, 10)); + continue; + } + if (strncmp(line, "DEVNAME=", 8) == 0) { + udev_device_set_devnode(udev_device, &line[8]); + continue; + } + + if (strncmp(line, "MAJOR=", 6) == 0) maj = strtoull(&line[6], NULL, 10); else if (strncmp(line, "MINOR=", 6) == 0) min = strtoull(&line[6], NULL, 10); - else if (strncmp(line, "IFINDEX=", 8) == 0) - udev_device_set_ifindex(udev_device, strtoull(&line[8], NULL, 10)); - else if (strncmp(line, "DEVNAME=", 8) == 0) - udev_device_set_devnode(udev_device, &line[8]); else if (strncmp(line, "DEVMODE=", 8) == 0) udev_device->devnode_mode = strtoul(&line[8], NULL, 8); -- cgit v1.2.3-54-g00ecf