chiark / gitweb /
udev: replace util_create_path() with mkdir_parents()
[elogind.git] / src / udev / udev-node.c
index 95edd972f21a78376e28cc81793f52bc7080f0b3..20aa7c865da633b26ab408f257a6628ff956ae35 100644 (file)
@@ -100,7 +100,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
         } else {
                 log_debug("creating symlink '%s' to '%s'\n", slink, target);
                 do {
-                        err = util_create_path_selinux(udev, slink);
+                        err = mkdir_parents(slink, 0755);
                         if (err != 0 && err != -ENOENT)
                                 break;
                         udev_selinux_setfscreatecon(udev, slink, S_IFLNK);
@@ -117,7 +117,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
         util_strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL);
         unlink(slink_tmp);
         do {
-                err = util_create_path_selinux(udev, slink_tmp);
+                err = mkdir_parents(slink_tmp, 0755);
                 if (err != 0 && err != -ENOENT)
                         break;
                 udev_selinux_setfscreatecon(udev, slink_tmp, S_IFLNK);
@@ -203,8 +203,8 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
         const char *target;
         char buf[UTIL_PATH_SIZE];
 
-        util_path_encode(&slink[strlen(udev_get_dev_path(udev))+1], name_enc, sizeof(name_enc));
-        util_strscpyl(dirname, sizeof(dirname), udev_get_run_path(udev), "/links/", name_enc, NULL);
+        util_path_encode(slink + strlen(TEST_PREFIX "/dev"), name_enc, sizeof(name_enc));
+        util_strscpyl(dirname, sizeof(dirname), TEST_PREFIX "/run/udev/links/", name_enc, NULL);
         util_strscpyl(filename, sizeof(filename), dirname, "/", udev_device_get_id_filename(dev), NULL);
 
         if (!add && unlink(filename) == 0)
@@ -226,7 +226,7 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
                 do {
                         int fd;
 
-                        err = util_create_path(udev, filename);
+                        err = mkdir_parents(filename, 0755);
                         if (err != 0 && err != -ENOENT)
                                 break;
                         fd = open(filename, O_WRONLY|O_CREAT|O_CLOEXEC|O_TRUNC|O_NOFOLLOW, 0444);
@@ -240,7 +240,6 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
 
 void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev_old)
 {
-        struct udev *udev = udev_device_get_udev(dev);
         struct udev_list_entry *list_entry;
 
         /* update possible left-over symlinks */
@@ -322,7 +321,6 @@ void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid)
         struct udev *udev = udev_device_get_udev(dev);
         char filename[UTIL_PATH_SIZE];
         struct udev_list_entry *list_entry;
-        int err = 0;
 
         log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d\n",
                   udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid);
@@ -331,8 +329,7 @@ void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid)
                 return;
 
         /* always add /dev/{block,char}/$major:$minor */
-        snprintf(filename, sizeof(filename), "%s/%s/%u:%u",
-                 udev_get_dev_path(udev),
+        snprintf(filename, sizeof(filename), TEST_PREFIX "/dev/%s/%u:%u",
                  strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char",
                  major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)));
         node_symlink(udev, udev_device_get_devnode(dev), filename);
@@ -349,11 +346,7 @@ void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid)
 
 void udev_node_remove(struct udev_device *dev)
 {
-        struct udev *udev = udev_device_get_udev(dev);
         struct udev_list_entry *list_entry;
-        const char *devnode;
-        struct stat stats;
-        struct udev_device *dev_check;
         char filename[UTIL_PATH_SIZE];
 
         /* remove/update symlinks, remove symlinks from name index */
@@ -361,8 +354,7 @@ void udev_node_remove(struct udev_device *dev)
                 link_update(dev, udev_list_entry_get_name(list_entry), 0);
 
         /* remove /dev/{block,char}/$major:$minor */
-        snprintf(filename, sizeof(filename), "%s/%s/%u:%u",
-                 udev_get_dev_path(udev),
+        snprintf(filename, sizeof(filename), TEST_PREFIX "/dev/%s/%u:%u",
                  strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char",
                  major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)));
         unlink(filename);