chiark / gitweb /
Docs: udev.xml: Offset daemon name with commas
[elogind.git] / udev / udev-node.c
index a9ffa988b14f0f3d66645b12d949c8e1d42979ee..5e791ffb6c50753783018240f6d13866f845868d 100644 (file)
@@ -96,7 +96,7 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
        } else {
                info(udev, "mknod '%s' %u:%u %#o\n", file, major(devnum), minor(devnum), mode);
                do {
        } else {
                info(udev, "mknod '%s' %u:%u %#o\n", file, major(devnum), minor(devnum), mode);
                do {
-                       err = util_create_path(udev, file);
+                       err = util_create_path_selinux(udev, file);
                        if (err != 0 && err != -ENOENT)
                                break;
                        udev_selinux_setfscreatecon(udev, file, mode);
                        if (err != 0 && err != -ENOENT)
                                break;
                        udev_selinux_setfscreatecon(udev, file, mode);
@@ -184,7 +184,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
        } else {
                info(udev, "creating symlink '%s' to '%s'\n", slink, target);
                do {
        } else {
                info(udev, "creating symlink '%s' to '%s'\n", slink, target);
                do {
-                       err = util_create_path(udev, slink);
+                       err = util_create_path_selinux(udev, slink);
                        if (err != 0 && err != -ENOENT)
                                break;
                        udev_selinux_setfscreatecon(udev, slink, S_IFLNK);
                        if (err != 0 && err != -ENOENT)
                                break;
                        udev_selinux_setfscreatecon(udev, slink, S_IFLNK);
@@ -201,7 +201,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 {
        util_strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL);
        unlink(slink_tmp);
        do {
-               err = util_create_path(udev, slink_tmp);
+               err = util_create_path_selinux(udev, slink_tmp);
                if (err != 0 && err != -ENOENT)
                        break;
                udev_selinux_setfscreatecon(udev, slink_tmp, S_IFLNK);
                if (err != 0 && err != -ENOENT)
                        break;
                udev_selinux_setfscreatecon(udev, slink_tmp, S_IFLNK);
@@ -243,26 +243,20 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons
        for (;;) {
                struct udev_device *dev_db;
                struct dirent *dent;
        for (;;) {
                struct udev_device *dev_db;
                struct dirent *dent;
-               int maj, min;
-               char type, type2;
-               dev_t devnum;
 
                dent = readdir(dir);
                if (dent == NULL || dent->d_name[0] == '\0')
                        break;
                if (dent->d_name[0] == '.')
                        continue;
 
                dent = readdir(dir);
                if (dent == NULL || dent->d_name[0] == '\0')
                        break;
                if (dent->d_name[0] == '.')
                        continue;
-               if (sscanf(dent->d_name, "%c%i:%i", &type, &maj, &min) != 3)
-                       continue;
-               info(udev, "found '%c%i:%i' claiming '%s'\n", type, maj, min, stackdir);
-               devnum = makedev(maj, min);
+
+               info(udev, "found '%s' claiming '%s'\n", dent->d_name, stackdir);
 
                /* did we find ourself? */
 
                /* did we find ourself? */
-               type2 = strcmp(udev_device_get_subsystem(dev), "block") == 0 ? 'b' : 'c';
-               if (udev_device_get_devnum(dev) == devnum && type == type2)
+               if (strcmp(dent->d_name, udev_device_get_id_filename(dev)) == 0)
                        continue;
 
                        continue;
 
-               dev_db = udev_device_new_from_devnum(udev, type, devnum);
+               dev_db = udev_device_new_from_id_filename(udev, dent->d_name);
                if (dev_db != NULL) {
                        const char *devnode;
 
                if (dev_db != NULL) {
                        const char *devnode;
 
@@ -298,7 +292,7 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
        dbg(udev, "update symlink '%s' of '%s'\n", slink, udev_device_get_syspath(dev));
 
        util_path_encode(&slink[strlen(udev_get_dev_path(udev))+1], name_enc, sizeof(name_enc));
        dbg(udev, "update symlink '%s' of '%s'\n", slink, udev_device_get_syspath(dev));
 
        util_path_encode(&slink[strlen(udev_get_dev_path(udev))+1], name_enc, sizeof(name_enc));
-       util_strscpyl(dirname, sizeof(dirname), udev_get_dev_path(udev), "/.udev/links/", name_enc, NULL);
+       util_strscpyl(dirname, sizeof(dirname), udev_get_run_path(udev), "/links/", name_enc, NULL);
        util_strscpyl(filename, sizeof(filename), dirname, "/", udev_device_get_id_filename(dev), NULL);
 
        if (!add) {
        util_strscpyl(filename, sizeof(filename), dirname, "/", udev_device_get_id_filename(dev), NULL);
 
        if (!add) {