chiark / gitweb /
[PATCH] small ide-devfs.sh fix
[elogind.git] / namedev.c
index e075e20af57dd189efaae8f6a823f8b1104fc012..f2aea34719f44313290cd7e7192ddbb43a015835 100644 (file)
--- a/namedev.c
+++ b/namedev.c
@@ -816,11 +816,15 @@ int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud
                        }
 
                        if (dev->symlink[0] != '\0') {
+                               char temp[NAME_SIZE];
+
                                info("configured rule in '%s' at line %i applied, added symlink '%s'",
                                     dev->config_file, dev->config_line, dev->symlink);
+                               strfieldcpy(temp, dev->symlink);
+                               apply_format(udev, temp, sizeof(temp), class_dev, sysfs_device);
                                if (udev->symlink[0] != '\0')
                                        strfieldcat(udev->symlink, " ");
-                               strfieldcat(udev->symlink, dev->symlink);
+                               strfieldcat(udev->symlink, temp);
                        }
 
                        if (dev->name[0] != '\0') {
@@ -832,23 +836,32 @@ int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud
                }
        }
 
+       /* no rule was found for the net device */
+       if (udev->type == 'n') {
+               dbg("no name for net device '%s' configured", udev->kernel_name);
+               return -1;
+       }
+
        /* no rule was found so we use the kernel name */
        strfieldcpy(udev->name, udev->kernel_name);
        goto done;
 
 found:
        apply_format(udev, udev->name, sizeof(udev->name), class_dev, sysfs_device);
-       apply_format(udev, udev->symlink, sizeof(udev->symlink), class_dev, sysfs_device);
+
+       if (udev->type == 'n')
+               return 0;
+
        udev->partitions = dev->partitions;
        strfieldcpy(udev->config_file, dev->config_file);
        udev->config_line = dev->config_line;
 
-done:
        /* get permissions given in rule */
        set_empty_perms(udev, dev->mode,
                              dev->owner,
                              dev->group);
 
+done:
        /* get permissions given in config file or set defaults */
        perm = find_perm(udev->name);
        if (perm != NULL) {