]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/libudev/libudev-enumerate.c
libudev-enumerate: use structured initializer
[thirdparty/systemd.git] / src / libudev / libudev-enumerate.c
index 6b0e5850bd92284d3f347257dc3d2c82283c9fb3..41318d0a8db4f5efdb81dbea2d0b5501ab0927ac 100644 (file)
@@ -49,33 +49,37 @@ struct udev_enumerate {
  * Returns: an enumeration context.
  **/
 _public_ struct udev_enumerate *udev_enumerate_new(struct udev *udev) {
-        _cleanup_free_ struct udev_enumerate *udev_enumerate = NULL;
+        _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL;
+        struct udev_enumerate *udev_enumerate;
         int r;
 
-        udev_enumerate = new0(struct udev_enumerate, 1);
-        if (!udev_enumerate) {
-                errno = ENOMEM;
+        r = sd_device_enumerator_new(&e);
+        if (r < 0) {
+                errno = -r;
                 return NULL;
         }
 
-        r = sd_device_enumerator_new(&udev_enumerate->enumerator);
+        r = sd_device_enumerator_allow_uninitialized(e);
         if (r < 0) {
                 errno = -r;
                 return NULL;
         }
 
-        r = sd_device_enumerator_allow_uninitialized(udev_enumerate->enumerator);
-        if (r < 0) {
-                errno = -r;
+        udev_enumerate = new(struct udev_enumerate, 1);
+        if (!udev_enumerate) {
+                errno = ENOMEM;
                 return NULL;
         }
 
-        udev_enumerate->n_ref = 1;
-        udev_enumerate->udev = udev;
+        *udev_enumerate = (struct udev_enumerate) {
+                .udev = udev,
+                .n_ref = 1,
+                .enumerator = TAKE_PTR(e),
+        };
 
         udev_list_init(udev, &udev_enumerate->devices_list, false);
 
-        return TAKE_PTR(udev_enumerate);
+        return udev_enumerate;
 }
 
 static struct udev_enumerate *udev_enumerate_free(struct udev_enumerate *udev_enumerate) {