summaryrefslogtreecommitdiff
path: root/udev
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2009-01-16 21:14:13 +0100
committerKay Sievers <kay.sievers@vrfy.org>2009-01-16 21:14:13 +0100
commit8257730d392cf227fd3eba2915021aad6a2cc2e4 (patch)
tree06a095fb959d41abb74ffe3a16b431584bc197c0 /udev
parent87702fa03914b91f0068755533bde4e002d20564 (diff)
remove name from index if the node name has changed
Scott discovered that a changed rule, which renames a device node leaves the old node name around as a symlink. So drop the reference to the old name.
Diffstat (limited to 'udev')
-rw-r--r--udev/udev-node.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/udev/udev-node.c b/udev/udev-node.c
index 18a9d11017..74ec00b1eb 100644
--- a/udev/udev-node.c
+++ b/udev/udev-node.c
@@ -384,21 +384,25 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev
if (found)
continue;
- info(udev, "update old symlink '%s' no longer belonging to '%s'\n", name, udev_device_get_devpath(dev));
+ info(udev, "update old name, '%s' no longer belonging to '%s'\n",
+ name, udev_device_get_devpath(dev));
name_index(udev, udev_device_get_devpath(dev), name, 0);
update_link(dev, name);
}
/*
* if the node name has changed, delete the node,
- * and possibly restore a symlink of another device
+ * and possibly restore a symlink of a different device
*/
devnode_old = udev_device_get_devnode(dev_old);
if (devnode_old != NULL) {
const char *devnode = udev_device_get_devnode(dev);
- if (devnode != NULL && strcmp(devnode_old, devnode) != 0)
+ if (devnode != NULL && strcmp(devnode_old, devnode) != 0) {
+ info(udev, "node has changed from '%s' to '%s'\n", devnode_old, devnode);
+ name_index(udev, udev_device_get_devpath(dev), devnode_old, 0);
update_link(dev, devnode_old);
+ }
}
}