X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=namedev.c;h=f2aea34719f44313290cd7e7192ddbb43a015835;hb=f61d732a02c8a5e11c39651a70e3e3fd00529495;hp=7305676d427644f6af545552c8cc969de7e13246;hpb=558f80ba649fb5b8c2ac2a51e464f1aa07aa791d;p=elogind.git diff --git a/namedev.c b/namedev.c index 7305676d4..f2aea3471 100644 --- a/namedev.c +++ b/namedev.c @@ -36,6 +36,7 @@ #include "libsysfs/sysfs/libsysfs.h" #include "list.h" #include "udev.h" +#include "udev_lib.h" #include "udev_version.h" #include "logging.h" #include "namedev.h" @@ -815,16 +816,15 @@ int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud } if (dev->symlink[0] != '\0') { - char temp[NAME_MAX]; + char temp[NAME_SIZE]; info("configured rule in '%s' at line %i applied, added symlink '%s'", dev->config_file, dev->config_line, dev->symlink); - /* do not clobber dev */ strfieldcpy(temp, dev->symlink); - apply_format(udev, temp, sizeof(temp), - class_dev, sysfs_device); + apply_format(udev, temp, sizeof(temp), class_dev, sysfs_device); + if (udev->symlink[0] != '\0') + strfieldcat(udev->symlink, " "); strfieldcat(udev->symlink, temp); - strfieldcat(udev->symlink, " "); } if (dev->name[0] != '\0') { @@ -836,21 +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->name, sizeof(udev->name), 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) { @@ -866,6 +877,9 @@ done: dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o", udev->name, udev->owner, udev->group, udev->mode); + /* store time of action */ + udev->config_time = time(NULL); + return 0; }