- err = udev_node_add(dev, event->mode, event->uid, event->gid, event->test);
- if (err != 0)
- goto exit;
-
+ /* remove/update possible left-over symlinks from old database entry */
+ if (dev_old != NULL)
+ udev_node_update_old_links(dev, dev_old);
+
+ /* create new node and symlinks */
+ err = udev_node_add(dev, event->mode, event->uid, event->gid);
+exit_add:
+ if (delete_kdevnode && udev_device_get_knodename(dev) != NULL) {
+ struct stat stats;
+
+ util_strlcpy(filename, udev_get_dev_path(event->udev), sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, udev_device_get_knodename(dev), sizeof(filename));
+ if (stat(filename, &stats) == 0 && stats.st_rdev == udev_device_get_devnum(dev)) {
+ unlink(filename);
+ util_delete_path(event->udev, filename);
+ info(event->udev, "removed kernel created node '%s'\n", filename);
+ }
+ }
+ udev_device_unref(dev_old);