]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/import/pull-raw.c
import: use structured initializers
[thirdparty/systemd.git] / src / import / pull-raw.c
index 96800ac8a6d9f5522ccbf68cd34a193baaf5c302..2ceca68c0785c5842ddaa258aba629e86515a588 100644 (file)
@@ -115,36 +115,46 @@ int raw_pull_new(
                 RawPullFinished on_finished,
                 void *userdata) {
 
+        _cleanup_(curl_glue_unrefp) CurlGlue *g = NULL;
+        _cleanup_(sd_event_unrefp) sd_event *e = NULL;
         _cleanup_(raw_pull_unrefp) RawPull *i = NULL;
+        _cleanup_free_ char *root = NULL;
+        bool grow;
         int r;
 
         assert(ret);
 
-        i = new0(RawPull, 1);
-        if (!i)
-                return -ENOMEM;
-
-        i->on_finished = on_finished;
-        i->userdata = userdata;
-
-        i->image_root = strdup(image_root ?: "/var/lib/machines");
-        if (!i->image_root)
+        root = strdup(image_root ?: "/var/lib/machines");
+        if (!root)
                 return -ENOMEM;
 
-        i->grow_machine_directory = path_startswith(i->image_root, "/var/lib/machines");
+        grow = path_startswith(root, "/var/lib/machines");
 
         if (event)
-                i->event = sd_event_ref(event);
+                e = sd_event_ref(event);
         else {
-                r = sd_event_default(&i->event);
+                r = sd_event_default(&e);
                 if (r < 0)
                         return r;
         }
 
-        r = curl_glue_new(&i->glue, i->event);
+        r = curl_glue_new(&g, e);
         if (r < 0)
                 return r;
 
+        i = new(RawPull, 1);
+        if (!i)
+                return -ENOMEM;
+
+        *i = (RawPull) {
+                .on_finished = on_finished,
+                .userdata = userdata,
+                .image_root = TAKE_PTR(root),
+                .grow_machine_directory = grow,
+                .event = TAKE_PTR(e),
+                .glue = TAKE_PTR(g),
+        };
+
         i->glue->on_finished = pull_job_curl_on_finished;
         i->glue->userdata = i;