- if (major(udevice->devt) != 0 && strcmp(udevice->action, "remove") == 0) {
- struct name_entry *name_loop;
-
- /* import database entry, and delete it */
- if (udev_db_get_device(udevice, udevice->dev->devpath) == 0) {
- udev_db_delete_device(udevice);
- /* restore stored persistent data */
- list_for_each_entry(name_loop, &udevice->env_list, node)
- putenv(name_loop->name);
- } else {
- dbg(udevice->udev, "'%s' not found in database, using kernel name '%s'\n",
- udevice->dev->devpath, udevice->dev->kernel);
- strlcpy(udevice->name, udevice->dev->kernel, sizeof(udevice->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);