- util_strscpyl(device, sizeof(device), udev_get_sys_path(udev), ent->d_name, NULL);
- util_path_decode(device);
- udev_list_entry_add(udev, dev_list, device, NULL, 1, 0);
+ len = readlinkat(dirfd(dir), dent->d_name, devpath, sizeof(devpath));
+ if (len < 0 || (size_t)len >= sizeof(devpath))
+ continue;
+ devpath[len] = '\0';
+ util_strscpyl(syspath, sizeof(syspath), udev_get_sys_path(udev), devpath, NULL);
+ udev_list_entry_add(udev, dev_list, syspath, NULL, 1, 0);