+ char device[UTIL_PATH_SIZE];
+ char filename[UTIL_PATH_SIZE * 2];
+ 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));
+
+ if (add) {
+ info(udev, "creating index: '%s'\n", filename);
+ create_path(udev, filename);
+ fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
+ if (fd > 0)
+ close(fd);
+ } else {
+ info(udev, "removing index: '%s'\n", filename);
+ unlink(filename);
+ delete_path(udev, filename);
+ }
+ return 0;
+}
+
+int udev_node_mknod(struct udev_device *dev, const char *file, dev_t devnum, mode_t mode, uid_t uid, gid_t gid)
+{
+ struct udev *udev = udev_device_get_udev(dev);