]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Introduce _cleanup_(manager_freep)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 9 Mar 2018 20:55:55 +0000 (21:55 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 11 Mar 2018 15:33:57 +0000 (16:33 +0100)
src/core/manager.c
src/core/manager.h
src/test/test-bpf.c
src/test/test-cgroup-mask.c
src/test/test-engine.c
src/test/test-execute.c
src/test/test-sched-prio.c
src/test/test-unit-file.c
src/test/test-unit-name.c
src/test/test-watch-pid.c

index 84adb9c6660f5c126ce971b3832aaa1fdeccc824..c361a70b79da2b23db1389cebbf6cb493a37af06 100644 (file)
@@ -667,7 +667,7 @@ static int manager_setup_sigchld_event_source(Manager *m) {
 }
 
 int manager_new(UnitFileScope scope, unsigned test_run_flags, Manager **_m) {
-        Manager *m;
+        _cleanup_(manager_freep) Manager *m = NULL;
         int r;
 
         assert(_m);
@@ -729,62 +729,60 @@ int manager_new(UnitFileScope scope, unsigned test_run_flags, Manager **_m) {
 
         r = manager_default_environment(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = hashmap_ensure_allocated(&m->units, &string_hash_ops);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = hashmap_ensure_allocated(&m->jobs, NULL);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = hashmap_ensure_allocated(&m->cgroup_unit, &path_hash_ops);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = hashmap_ensure_allocated(&m->watch_bus, &string_hash_ops);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = sd_event_default(&m->event);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = manager_setup_run_queue(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = manager_setup_signals(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = manager_setup_cgroup(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = manager_setup_time_change(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = manager_setup_sigchld_event_source(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         m->udev = udev_new();
-        if (!m->udev) {
-                r = -ENOMEM;
-                goto fail;
-        }
+        if (!m->udev)
+                return -ENOMEM;
 
         r = manager_setup_prefix(m);
         if (r < 0)
-                goto fail;
+                return r;
 
         if (MANAGER_IS_SYSTEM(m) && test_run_flags == 0) {
                 r = mkdir_label("/run/systemd/units", 0755);
                 if (r < 0 && r != -EEXIST)
-                        goto fail;
+                        return r;
         }
 
         m->taint_usr =
@@ -795,11 +793,8 @@ int manager_new(UnitFileScope scope, unsigned test_run_flags, Manager **_m) {
          * since they might have gotten serialized across the reexec. */
 
         *_m = m;
+        m = NULL;
         return 0;
-
-fail:
-        manager_free(m);
-        return r;
 }
 
 static int manager_setup_notify(Manager *m) {
index d4eaaa1c4bbb830f86edf456e310f56a1ffb3379..93a29417dfb94e002f9c4ef4583e3bab2609dcfe 100644 (file)
@@ -379,6 +379,7 @@ struct Manager {
 
 int manager_new(UnitFileScope scope, unsigned test_run_flags, Manager **m);
 Manager* manager_free(Manager *m);
+DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
 
 void manager_enumerate(Manager *m);
 int manager_startup(Manager *m, FILE *serialization, FDSet *fds);
index 6ca2be41b058131899fc5eb65d5cf7b495d7e49d..afbc41cf435d4188011880871b7998afd494aa2f 100644 (file)
@@ -41,7 +41,7 @@ int main(int argc, char *argv[]) {
         _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
         CGroupContext *cc = NULL;
         _cleanup_(bpf_program_unrefp) BPFProgram *p = NULL;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *u;
         char log_buf[65535];
         int r;
@@ -128,11 +128,9 @@ int main(int argc, char *argv[]) {
         unit_dump(u, stdout, NULL);
 
         r = bpf_firewall_compile(u);
-        if (IN_SET(r, -ENOTTY, -ENOSYS, -EPERM )) {
+        if (IN_SET(r, -ENOTTY, -ENOSYS, -EPERM ))
                 /* Kernel doesn't support the necessary bpf bits, or masked out via seccomp? */
-                manager_free(m);
                 return EXIT_TEST_SKIP;
-        }
         assert_se(r >= 0);
 
         assert(u->ip_bpf_ingress);
@@ -167,7 +165,5 @@ int main(int argc, char *argv[]) {
         assert_se(SERVICE(u)->exec_command[SERVICE_EXEC_START]->command_next->exec_status.code != CLD_EXITED ||
                   SERVICE(u)->exec_command[SERVICE_EXEC_START]->command_next->exec_status.status != EXIT_SUCCESS);
 
-        manager_free(m);
-
         return 0;
 }
index 10ae523b52521f734094bc3c4841393b791b21ec..88032e6e128af3ccec18a6ea372b05b215f427ba 100644 (file)
@@ -30,7 +30,7 @@
 
 static int test_cgroup_mask(void) {
         _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *son, *daughter, *parent, *root, *grandchild, *parent_deep;
         FILE *serial = NULL;
         FDSet *fdset = NULL;
@@ -114,8 +114,6 @@ static int test_cgroup_mask(void) {
         assert_se(unit_get_target_mask(parent) == ((CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported));
         assert_se(unit_get_target_mask(root) == ((CGROUP_MASK_CPU | CGROUP_MASK_CPUACCT | CGROUP_MASK_IO | CGROUP_MASK_BLKIO | CGROUP_MASK_MEMORY) & m->cgroup_supported));
 
-        manager_free(m);
-
         return 0;
 }
 
index a7cdbb60180ca042719e70df252f40c5d902a7b0..fb6f404a65e3eb5a830ea0297241209435ec718d 100644 (file)
@@ -31,7 +31,7 @@
 int main(int argc, char *argv[]) {
         _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
         _cleanup_(sd_bus_error_free) sd_bus_error err = SD_BUS_ERROR_NULL;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL, *g = NULL, *h = NULL;
         FILE *serial = NULL;
         FDSet *fdset = NULL;
@@ -143,7 +143,5 @@ int main(int argc, char *argv[]) {
         assert_se(!hashmap_get(a->dependencies[UNIT_PROPAGATES_RELOAD_TO], c));
         assert_se(!hashmap_get(c->dependencies[UNIT_RELOAD_PROPAGATED_FROM], a));
 
-        manager_free(m);
-
         return 0;
 }
index 645e0b3d47d658e18d5af02b81aee8bf78283115..02902205697f1c13b8e3b98f186199a97eb037d9 100644 (file)
@@ -623,7 +623,7 @@ static void test_exec_standardinput(Manager *m) {
 
 static int run_tests(UnitFileScope scope, const test_function_t *tests) {
         const test_function_t *test = NULL;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         int r;
 
         assert_se(tests);
@@ -639,8 +639,6 @@ static int run_tests(UnitFileScope scope, const test_function_t *tests) {
         for (test = tests; test && *test; test++)
                 (*test)(m);
 
-        manager_free(m);
-
         return 0;
 }
 
index 804cee34e961f514899a56f46e0191766ca574a1..819c8e8ebf7d488acf2e23b68cb3ca7e21b23f0c 100644 (file)
@@ -28,7 +28,7 @@
 
 int main(int argc, char *argv[]) {
         _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *idle_ok, *idle_bad, *rr_ok, *rr_bad, *rr_sched;
         Service *ser;
         FILE *serial = NULL;
@@ -98,7 +98,5 @@ int main(int argc, char *argv[]) {
         assert_se(ser->exec_context.cpu_sched_policy == SCHED_RR);
         assert_se(ser->exec_context.cpu_sched_priority == 99);
 
-        manager_free(m);
-
         return EXIT_SUCCESS;
 }
index 40eeba6af5c07d513ecc413c4a0a2e1e9fb41122..f52a853c98015ca85aa97ed0ca16f74cc17f8932 100644 (file)
@@ -113,7 +113,7 @@ static void test_config_parse_exec(void) {
 
         ExecCommand *c = NULL, *c1;
         const char *ccc;
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *u = NULL;
 
         r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m);
@@ -443,7 +443,6 @@ static void test_config_parse_exec(void) {
         exec_command_free_list(c);
 
         unit_free(u);
-        manager_free(m);
 }
 
 static void test_config_parse_log_extra_fields(void) {
@@ -461,7 +460,7 @@ static void test_config_parse_log_extra_fields(void) {
 
         int r;
 
-        Manager *m = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *u = NULL;
         ExecContext c = {};
 
@@ -508,7 +507,6 @@ static void test_config_parse_log_extra_fields(void) {
         exec_context_free_log_extra_fields(&c);
 
         unit_free(u);
-        manager_free(m);
 
         log_info("/* %s – bye */", __func__);
 }
index 416542c83fd376b8365417ab9f9dc59d514c5be5..f7598d228420ab813fbe8b5ab604045be02eb127 100644 (file)
@@ -199,12 +199,11 @@ static void test_unit_name_mangle(void) {
 }
 
 static int test_unit_printf(void) {
-        Manager *m = NULL;
+        _cleanup_free_ char *mid = NULL, *bid = NULL, *host = NULL, *uid = NULL, *user = NULL, *shell = NULL, *home = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *u, *u2;
         int r;
 
-        _cleanup_free_ char *mid = NULL, *bid = NULL, *host = NULL, *uid = NULL, *user = NULL, *shell = NULL, *home = NULL;
-
         assert_se(specifier_machine_id('m', NULL, NULL, &mid) >= 0 && mid);
         assert_se(specifier_boot_id('b', NULL, NULL, &bid) >= 0 && bid);
         assert_se(host = gethostname_malloc());
@@ -276,8 +275,6 @@ static int test_unit_printf(void) {
         expect(u2, "%b", bid);
         expect(u2, "%H", host);
         expect(u2, "%t", "/run/user/*");
-
-        manager_free(m);
 #undef expect
 
         return 0;
index ed6c3d05cc6c43aa4396c1fb2d7524fe73ef7e16..c280374582c42b224aab0fbbb40f361667b19fe2 100644 (file)
@@ -8,8 +8,8 @@
 
 int main(int argc, char *argv[]) {
         _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
+        _cleanup_(manager_freep) Manager *m = NULL;
         Unit *a, *b, *c, *u;
-        Manager *m;
         int r;
 
         log_set_max_level(LOG_DEBUG);
@@ -90,7 +90,5 @@ int main(int argc, char *argv[]) {
         unit_unwatch_pid(c, 4711);
         assert_se(manager_get_unit_by_pid(m, 4711) == NULL);
 
-        manager_free(m);
-
         return 0;
 }