while (1) {
dbg("look for existing node '%s'", filename);
memset(&db_udev, 0x00, sizeof(struct udevice));
- if (udev_db_get_device_byname(&db_udev, filename) != 0) {
+ if (udev_db_get_device_by_name(&db_udev, filename) != 0) {
dbg("free num=%d", num);
return num;
}
}
static void apply_format(struct udevice *udev, char *string, size_t maxsize,
- struct sysfs_class_device *class_dev,
- struct sysfs_device *sysfs_device)
+ struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device)
{
char temp[NAME_SIZE];
char temp2[NAME_SIZE];
dbg("format=%c, string='%s', tail='%s'",c , string, tail);
attr = get_format_attribute(&tail);
-
switch (c) {
case 'p':
- if (strlen(udev->devpath) == 0)
- break;
strfieldcatmax(string, udev->devpath, maxsize);
dbg("substitute kernel name '%s'", udev->kernel_name);
break;
case 'b':
- if (strlen(udev->bus_id) == 0)
- break;
strfieldcatmax(string, udev->bus_id, maxsize);
dbg("substitute bus_id '%s'", udev->bus_id);
break;
case 'k':
- if (strlen(udev->kernel_name) == 0)
- break;
strfieldcatmax(string, udev->kernel_name, maxsize);
dbg("substitute kernel name '%s'", udev->kernel_name);
break;
case 'n':
- if (strlen(udev->kernel_number) == 0)
- break;
strfieldcatmax(string, udev->kernel_number, maxsize);
dbg("substitute kernel number '%s'", udev->kernel_number);
break;
dbg("substitute major number '%u'", major(udev->devt));
break;
case 'c':
- if (strlen(udev->program_result) == 0)
+ if (udev->program_result[0] == '\0')
break;
/* get part part of the result string */
i = 0;
}
}
-static void fix_kernel_name(struct udevice *udev)
-{
- char *temp = udev->kernel_name;
-
- while (*temp != 0x00) {
- /* Some block devices have a ! in their name,
- * we need to change that to / */
- if (*temp == '!')
- *temp = '/';
- ++temp;
- }
-}
-
static int execute_program(struct udevice *udev, const char *path, char *value, int len)
{
int retval;
dbg("search '%s' in '%s', path='%s'", dev->id, temp, path);
if (strcmp_pattern(dev->id, temp) != 0)
return -ENODEV;
- else
- return 0;
+
+ return 0;
}
static int match_place(struct config_device *dev, struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device)
static int match_rule(struct udevice *udev, struct config_device *dev,
struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device)
{
- /* check for matching kernel name */
if (dev->kernel[0] != '\0') {
dbg("check for " FIELD_KERNEL " dev->kernel='%s' class_dev->name='%s'",
dev->kernel, class_dev->name);
dbg(FIELD_KERNEL " matches");
}
- /* check for matching subsystem */
if (dev->subsystem[0] != '\0') {
dbg("check for " FIELD_SUBSYSTEM " dev->subsystem='%s' class_dev->name='%s'",
dev->subsystem, class_dev->name);
struct sysfs_class_device *class_dev_parent;
struct sysfs_device *sysfs_device = NULL;
struct config_device *dev;
- char *pos;
dbg("class_dev->name='%s'", class_dev->name);
strfieldcpy(udev->bus_id, sysfs_device->bus_id);
}
- strfieldcpy(udev->kernel_name, class_dev->name);
- fix_kernel_name(udev);
- dbg("udev->kernel_name = '%s'", udev->kernel_name);
-
- /* get kernel number */
- pos = class_dev->name + strlen(class_dev->name);
- while (isdigit(*(pos-1)))
- pos--;
- strfieldcpy(udev->kernel_number, pos);
- dbg("kernel_number='%s'", udev->kernel_number);
+ dbg("udev->kernel_name='%s'", udev->kernel_name);
/* look for a matching rule to apply */
list_for_each_entry(dev, &config_device_list, node) {
return -1;
}
if (dev->ignore_remove) {
- udev->ignore_remove = dev->ignore_remove;
+ udev->ignore_remove = 1;
dbg_parse("remove event should be ignored");
}
/* apply all_partitions option only at a main block device */
dbg("applied group='%s' to '%s'", udev->group, udev->kernel_name);
}
- /* collect symlinks for this or the final matching rule */
+ /* collect symlinks */
if (dev->symlink[0] != '\0') {
char temp[NAME_SIZE];
dbg("name, '%s' is going to have owner='%s', group='%s', mode=%#o partitions=%i",
udev->name, udev->owner, udev->group, udev->mode, udev->partitions);
- goto exit;
+ break;
}
}
}
- /* no rule matched, so we use the kernel name */
- strfieldcpy(udev->name, udev->kernel_name);
- dbg("no rule found, use kernel name '%s'", udev->name);
+ if (udev->name[0] == '\0') {
+ /* no rule matched, so we use the kernel name */
+ strfieldcpy(udev->name, udev->kernel_name);
+ dbg("no rule found, use kernel name '%s'", udev->name);
+ }
-exit:
if (udev->tmp_node[0] != '\0') {
dbg("removing temporary device node");
unlink_secure(udev->tmp_node);