+ /* lookup /dev/{char,block}/<maj>:<min> */
+ if (strcmp(udev_device_get_subsystem(dev), "block") == 0)
+ devtype = "block";
+ else
+ devtype = "char";
+ snprintf(filename, sizeof(filename), "%s/%s/%u:%u",
+ udev_get_dev_path(event->udev), devtype,
+ major(udev_device_get_devnum(dev)),
+ minor(udev_device_get_devnum(dev)));
+ if (stat(filename, &statbuf) == 0 && statbuf.st_rdev == devnum) {
+ l = util_strpcpy(&s, l, filename);
+ dbg(event->udev, "tempnode: return maj:min node\n");
+ break;
+ }
+ /* create temporary node */
+ dbg(event->udev, "tempnode: create temp node\n");
+ asprintf(&event->tmp_node, "%s/.tmp-%s-%u:%u",
+ udev_get_dev_path(event->udev), devtype,
+ major(udev_device_get_devnum(dev)),
+ minor(udev_device_get_devnum(dev)));
+ if (event->tmp_node == NULL)
+ break;
+ udev_node_mknod(dev, event->tmp_node, makedev(0, 0), 0600, 0, 0);
+ l = util_strpcpy(&s, l, event->tmp_node);