- size_t devlen = strlen(udev_get_dev_path(udev))+1;
- size_t start;
- int fd;
-
- /* directory with device name */
- util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- start = util_strlcat(filename, "/.udev/names/", sizeof(filename));
- util_strlcat(filename, &name[devlen], sizeof(filename));
- util_path_encode(&filename[start], sizeof(filename) - start);
- /* entry with the devpath */
- util_strlcpy(device, devpath, sizeof(device));
- util_path_encode(device, sizeof(device));
- util_strlcat(filename, "/", sizeof(filename));
- util_strlcat(filename, device, sizeof(filename));
+
+ util_path_encode(&name[strlen(udev_get_dev_path(udev))+1], name_enc, sizeof(name_enc));
+ snprintf(filename, sizeof(filename), "%s/.udev/names/%s/%u:%u", udev_get_dev_path(udev), name_enc,
+ major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)));