- if (major(udev->devt) != 0 && strcmp(udev->action, "remove") == 0) {
- struct name_entry *name_loop;
-
- /* import database entry, and delete it */
- if (udev_db_get_device(udev, udev->dev->devpath) == 0) {
- udev_db_delete_device(udev);
- /* restore stored persistent data */
- list_for_each_entry(name_loop, &udev->env_list, node)
- putenv(name_loop->name);
- } else {
- dbg("'%s' not found in database, using kernel name '%s'\n",
- udev->dev->devpath, udev->dev->kernel);
- strlcpy(udev->name, udev->dev->kernel, sizeof(udev->name));
+ if (major(udev_device_get_devnum(dev)) != 0 && strcmp(udev_device_get_action(dev), "remove") == 0) {
+ /* import database entry and delete it */
+ udev_device_read_db(dev);
+ if (!event->test)
+ udev_device_delete_db(dev);
+
+ if (udev_device_get_devnode(dev) == NULL) {
+ char devnode[UTIL_PATH_SIZE];
+
+ info(event->udev, "'%s' not found in database, using kernel name '%s'\n",
+ udev_device_get_syspath(dev), udev_device_get_sysname(dev));
+ util_strlcpy(devnode, udev_get_dev_path(event->udev), sizeof(devnode));
+ util_strlcat(devnode, "/", sizeof(devnode));
+ util_strlcat(devnode, udev_device_get_sysname(dev), sizeof(devnode));
+ udev_device_set_devnode(dev, devnode);