X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibudev%2Flibudev-device.c;h=c0a061af6c808d6d505fc13f0182fcf41d4145c9;hp=242a0d89b66a6b1d33c32ac97842b354a725f9d3;hb=8f0f13f04555d3bc67511d2e334c667cef7e8971;hpb=570b83cc62067f518c119e4803b4f234d1f0f01c diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index 242a0d89b..c0a061af6 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -1986,6 +1986,20 @@ struct udev_device *udev_device_shallow_clone(struct udev_device *old_device) return device; } +struct udev_device *udev_device_clone_with_db(struct udev_device *old_device) +{ + struct udev_device *device; + + device = udev_device_shallow_clone(old_device); + if (!device) + return NULL; + + udev_device_read_db(device); + udev_device_set_info_loaded(device); + + return device; +} + struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen) { struct udev_device *device; ssize_t bufpos = 0; @@ -2030,3 +2044,18 @@ struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, return device; } + +int udev_device_copy_properties(struct udev_device *dst, struct udev_device *src) { + struct udev_list_entry *entry; + + for ((entry = udev_device_get_properties_list_entry(src)); entry; entry = udev_list_entry_get_next(entry)) { + const char *key, *value; + + key = udev_list_entry_get_name(entry); + value = udev_list_entry_get_value(entry); + + udev_device_add_property(dst, key, value); + } + + return 0; +}