mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-08 21:17:47 +03:00
udev: event - introduce and use internal udev_device_shallow_clone()
This commit is contained in:
parent
243d182543
commit
fa639f3ae7
@ -1944,3 +1944,24 @@ int udev_device_rename(struct udev_device *udev_device, const char *name)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct udev_device *udev_device_shallow_clone(struct udev_device *old_device)
|
||||
{
|
||||
struct udev_device *device;
|
||||
|
||||
if (old_device == NULL)
|
||||
return NULL;
|
||||
|
||||
device = udev_device_new(old_device->udev);
|
||||
if (!device) {
|
||||
errno = ENOMEM;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
udev_device_set_syspath(device, udev_device_get_syspath(old_device));
|
||||
udev_device_set_subsystem(device, udev_device_get_subsystem(old_device));
|
||||
udev_device_set_devnum(device, udev_device_get_devnum(old_device));
|
||||
|
||||
return device;
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ int udev_get_rules_path(struct udev *udev, char **path[], usec_t *ts_usec[]);
|
||||
|
||||
/* libudev-device.c */
|
||||
struct udev_device *udev_device_new(struct udev *udev);
|
||||
struct udev_device *udev_device_shallow_clone(struct udev_device *old_device);
|
||||
mode_t udev_device_get_devnode_mode(struct udev_device *udev_device);
|
||||
uid_t udev_device_get_devnode_uid(struct udev_device *udev_device);
|
||||
gid_t udev_device_get_devnode_gid(struct udev_device *udev_device);
|
||||
|
@ -809,11 +809,8 @@ void udev_event_execute_rules(struct udev_event *event,
|
||||
if (major(udev_device_get_devnum(dev)) != 0)
|
||||
udev_node_remove(dev);
|
||||
} else {
|
||||
event->dev_db = udev_device_new(event->udev);
|
||||
event->dev_db = udev_device_shallow_clone(dev);
|
||||
if (event->dev_db != NULL) {
|
||||
udev_device_set_syspath(event->dev_db, udev_device_get_syspath(dev));
|
||||
udev_device_set_subsystem(event->dev_db, udev_device_get_subsystem(dev));
|
||||
udev_device_set_devnum(event->dev_db, udev_device_get_devnum(dev));
|
||||
udev_device_read_db(event->dev_db, NULL);
|
||||
udev_device_set_info_loaded(event->dev_db);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user