mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-28 06:35:34 +07:00
[PATCH] simplify permission application
We have only one source of permissions now, so apply the default permissions at udev init.
This commit is contained in:
parent
2a270316e4
commit
65ab133412
37
namedev.c
37
namedev.c
@ -680,7 +680,6 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d
|
||||
struct config_device *dev;
|
||||
char *pos;
|
||||
|
||||
udev->mode = 0;
|
||||
dbg("class_dev->name='%s'", class_dev->name);
|
||||
|
||||
/* Figure out where the "device"-symlink is at. For char devices this will
|
||||
@ -757,34 +756,28 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d
|
||||
goto exit;
|
||||
|
||||
udev->partitions = dev->partitions;
|
||||
udev->mode = dev->mode;
|
||||
strfieldcpy(udev->owner, dev->owner);
|
||||
apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device);
|
||||
strfieldcpy(udev->group, dev->group);
|
||||
apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device);
|
||||
if (dev->mode != 0000)
|
||||
udev->mode = dev->mode;
|
||||
if (dev->owner[0] != '\0') {
|
||||
strfieldcpy(udev->owner, dev->owner);
|
||||
apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device);
|
||||
}
|
||||
if (dev->group[0] != '\0') {
|
||||
strfieldcpy(udev->group, dev->group);
|
||||
apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device);
|
||||
}
|
||||
|
||||
goto perms;
|
||||
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
|
||||
udev->name, udev->owner, udev->group, udev->mode);
|
||||
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* no rule matched, so we use the kernel name */
|
||||
strfieldcpy(udev->name, udev->kernel_name);
|
||||
|
||||
if (udev->type == 'n')
|
||||
goto exit;
|
||||
|
||||
perms:
|
||||
/* apply default permissions to empty fields */
|
||||
if (udev->mode == 0000)
|
||||
udev->mode = default_mode;
|
||||
if (udev->owner[0] == '\0')
|
||||
strfieldcpy(udev->owner, default_owner);
|
||||
if (udev->group[0] == '\0')
|
||||
strfieldcpy(udev->group, default_group);
|
||||
|
||||
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
|
||||
udev->name, udev->owner, udev->group, udev->mode);
|
||||
dbg("no rule found, use kernel name '%s'", udev->name);
|
||||
|
||||
exit:
|
||||
return 0;
|
||||
|
@ -189,7 +189,7 @@ static int create_node(struct udevice *udev)
|
||||
} else {
|
||||
info("creating device node '%s', major = '%d', minor = '%d', "
|
||||
"mode = '%#o', uid = '%d', gid = '%d'", filename,
|
||||
udev->major, udev->minor, (mode_t)udev->mode, uid, gid);
|
||||
udev->major, udev->minor, udev->mode, uid, gid);
|
||||
}
|
||||
|
||||
/* create all_partitions if requested */
|
||||
|
@ -55,6 +55,10 @@ void udev_init_device(struct udevice *udev, const char* devpath, const char *sub
|
||||
udev->type = 'n';
|
||||
else if (strncmp(udev->devpath, "/class/", 7) == 0)
|
||||
udev->type = 'c';
|
||||
|
||||
udev->mode = default_mode;
|
||||
strfieldcpy(udev->owner, default_owner);
|
||||
strfieldcpy(udev->group, default_group);
|
||||
}
|
||||
|
||||
int kernel_release_satisfactory(int version, int patchlevel, int sublevel)
|
||||
|
Loading…
Reference in New Issue
Block a user