chiark / gitweb /
remove asmlinkage
[elogind.git] / udev / udev-node.c
index 18a9d11017b3cf3bc2641140f6a6cd094f3c19af..2f9cf4d7ac3e0dd90f1e93abbf7a5f3bba281c05 100644 (file)
@@ -68,7 +68,6 @@ static int name_index(struct udev *udev, const char *devpath, const char *name,
 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);
-       char file_tmp[UTIL_PATH_SIZE + sizeof(TMP_FILE_EXT)];
        struct stat stats;
        int preserve = 0;
        int err = 0;
@@ -90,6 +89,8 @@ int udev_node_mknod(struct udev_device *dev, const char *file, dev_t devnum, mod
                        preserve = 1;
                        udev_selinux_lsetfilecon(udev, file, mode);
                } else {
+                       char file_tmp[UTIL_PATH_SIZE + sizeof(TMP_FILE_EXT)];
+
                        info(udev, "atomically replace existing file '%s'\n", file);
                        util_strlcpy(file_tmp, file, sizeof(file_tmp));
                        util_strlcat(file_tmp, TMP_FILE_EXT, sizeof(file_tmp));
@@ -384,21 +385,25 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev
                if (found)
                        continue;
 
-               info(udev, "update old symlink '%s' no longer belonging to '%s'\n", name, udev_device_get_devpath(dev));
+               info(udev, "update old name, '%s' no longer belonging to '%s'\n",
+                    name, udev_device_get_devpath(dev));
                name_index(udev, udev_device_get_devpath(dev), name, 0);
                update_link(dev, name);
        }
 
        /*
         * if the node name has changed, delete the node,
-        * and possibly restore a symlink of another device
+        * and possibly restore a symlink of a different device
         */
        devnode_old = udev_device_get_devnode(dev_old);
        if (devnode_old != NULL) {
                const char *devnode = udev_device_get_devnode(dev);
 
-               if (devnode != NULL && strcmp(devnode_old, devnode) != 0)
+               if (devnode != NULL && strcmp(devnode_old, devnode) != 0) {
+                       info(udev, "node has changed from '%s' to '%s'\n", devnode_old, devnode);
+                       name_index(udev, udev_device_get_devpath(dev), devnode_old, 0);
                        update_link(dev, devnode_old);
+               }
        }
 }
 
@@ -450,7 +455,7 @@ exit:
        return err;
 }
 
-extern int udev_node_remove(struct udev_device *dev)
+int udev_node_remove(struct udev_device *dev)
 {
        struct udev *udev = udev_device_get_udev(dev);
        struct udev_list_entry *list_entry;