X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev%2Fudev-node.c;h=228b3ebee4d43f9fe4ed2be39bb7a3b3197b95ee;hp=8339eb732f0bd8b42e9a57be8aed5d5a823c9a26;hb=8e5a620b17c08b0b6277236203ee559b7dadd1d4;hpb=4ab3c463d418c74275eb8170a87c8cf75e47d973 diff --git a/udev/udev-node.c b/udev/udev-node.c index 8339eb732..228b3ebee 100644 --- a/udev/udev-node.c +++ b/udev/udev-node.c @@ -298,15 +298,15 @@ static void link_update(struct udev_device *dev, const char *slink, bool add) if (!add) { dbg(udev, "removing index: '%s'\n", filename); - unlink(filename); - util_delete_path(udev, filename); + if (unlink(filename) == 0) + rmdir(dirname); } target = link_find_prioritized(dev, add, dirname, buf, sizeof(buf)); if (target == NULL) { info(udev, "no reference left, remove '%s'\n", slink); - unlink(slink); - util_delete_path(udev, slink); + if (unlink(slink) == 0) + util_delete_path(udev, slink); } else { info(udev, "creating link '%s' to '%s'\n", slink, target); node_symlink(udev, target, slink); @@ -427,7 +427,8 @@ int udev_node_remove(struct udev_device *dev) info(udev, "removing device node '%s'\n", devnode); err = util_unlink_secure(udev, devnode); - util_delete_path(udev, devnode); + if (err == 0) + util_delete_path(udev, devnode); out: return err; }