Introduce _cleanup_(manager_freep)

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2018-03-09 21:55:55 +01:00
parent 9aa2e409bc
commit c70cac548a
10 changed files with 29 additions and 52 deletions

View 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) {

View 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);

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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__);
}

View 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;

View 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;
}