libudev-enumerate: use structured initializer
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 24 Aug 2018 05:09:17 +0000 (14:09 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Sep 2018 03:45:21 +0000 (12:45 +0900)
src/libudev/libudev-enumerate.c

index 6b0e585..41318d0 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) {