]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: use path_extract_directory() and path_equal()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 2 Jun 2021 15:53:58 +0000 (00:53 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Jun 2021 06:51:39 +0000 (15:51 +0900)
src/udev/udev-node.c

index d5a341baaac7a3afe4ad80ee0eb000f7b34492ed..b4f2a896686c5ff1bf57a2db1fa5ea053803432e 100644 (file)
@@ -43,9 +43,9 @@ static int node_symlink(sd_device *dev, const char *node, const char *slink) {
         assert(node);
         assert(slink);
 
-        slink_dirname = dirname_malloc(slink);
-        if (!slink_dirname)
-                return log_oom();
+        r = path_extract_directory(slink, &slink_dirname);
+        if (r < 0)
+                return log_device_debug_errno(dev, r, "Failed to get parent directory of '%s': %m", slink);
 
         /* use relative link */
         r = path_make_relative(slink_dirname, node, &target);
@@ -60,7 +60,7 @@ static int node_symlink(sd_device *dev, const char *node, const char *slink) {
                                                       "Conflicting inode '%s' found, link to '%s' will not be created.", slink, node);
 
                 if (readlink_malloc(slink, &buf) >= 0 &&
-                    streq(target, buf)) {
+                    path_equal(target, buf)) {
                         /* preserve link with correct target, do not replace node of other device */
                         log_device_debug(dev, "Preserve already existing symlink '%s' to '%s'", slink, target);