From: Zbigniew Jędrzejewski-Szmek Date: Sun, 24 May 2020 10:30:55 +0000 (+0200) Subject: busctl: use set_put_strdup() X-Git-Tag: v246-rc1~288^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4c163bf1f4451d64e40b39e520655c7185e88810;p=thirdparty%2Fsystemd.git busctl: use set_put_strdup() --- diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 7aceb1796f1..eab418d2192 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -496,33 +496,22 @@ static int find_nodes(sd_bus *bus, const char *service, const char *path, Set *p } static int tree_one(sd_bus *bus, const char *service, const char *prefix, bool many) { - _cleanup_set_free_free_ Set *paths = NULL, *done = NULL, *failed = NULL; + _cleanup_set_free_ Set *paths = NULL, *done = NULL, *failed = NULL; _cleanup_free_ char **l = NULL; - char *m; int r; - paths = set_new(&string_hash_ops); - if (!paths) + r = set_put_strdup(&paths, "/"); + if (r < 0) return log_oom(); - done = set_new(&string_hash_ops); + done = set_new(&string_hash_ops_free); if (!done) return log_oom(); - failed = set_new(&string_hash_ops); + failed = set_new(&string_hash_ops_free); if (!failed) return log_oom(); - m = strdup("/"); - if (!m) - return log_oom(); - - r = set_put(paths, m); - if (r < 0) { - free(m); - return log_oom(); - } - for (;;) { _cleanup_free_ char *p = NULL; int q; @@ -536,19 +525,13 @@ static int tree_one(sd_bus *bus, const char *service, const char *prefix, bool m continue; q = find_nodes(bus, service, p, paths, many); - if (q < 0) { - if (r >= 0) - r = q; - - q = set_put(failed, p); - } else - q = set_put(done, p); + if (q < 0 && r >= 0) + r = q; + q = set_consume(q < 0 ? failed : done, TAKE_PTR(p)); + assert(q != 0); if (q < 0) return log_oom(); - - assert(q != 0); - p = NULL; } (void) pager_open(arg_pager_flags); @@ -2608,7 +2591,6 @@ static int parse_argv(int argc, char *argv[]) { } static int busctl_main(int argc, char *argv[]) { - static const Verb verbs[] = { { "list", VERB_ANY, 1, VERB_DEFAULT, list_bus_names }, { "status", VERB_ANY, 2, 0, status },