busctl: use STRV_FOREACH in the usual fashion

Also put positive branch first, do not use 'i' as a char** variable name.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2025-03-27 12:04:30 +01:00
parent bc602f32c9
commit 635accef79
+26 -27
View File
@@ -547,9 +547,25 @@ static int tree(int argc, char **argv, void *userdata) {
if (r < 0)
return r;
if (argc <= 1) {
char **args = strv_skip(argv, 1);
if (args)
STRV_FOREACH(arg, args) {
int q;
if (arg != args)
puts("");
if (args[1]) {
pager_open(arg_pager_flags);
printf("Service %s%s%s:\n", ansi_highlight(), *arg, ansi_normal());
}
q = tree_one(bus, *arg);
if (q < 0 && r >= 0)
r = q;
}
else {
_cleanup_strv_free_ char **names = NULL;
bool not_first = false;
r = sd_bus_list_names(bus, &names, NULL);
if (r < 0)
@@ -557,42 +573,25 @@ static int tree(int argc, char **argv, void *userdata) {
pager_open(arg_pager_flags);
STRV_FOREACH(i, names) {
STRV_FOREACH(name, names) {
int q;
if (!arg_unique && (*i)[0] == ':')
if (!arg_unique && (*name)[0] == ':')
continue;
if (!arg_acquired && (*i)[0] == ':')
if (!arg_acquired && (*name)[0] == ':')
continue;
if (not_first)
printf("\n");
if (name != names)
puts("");
printf("Service %s%s%s:\n", ansi_highlight(), *i, ansi_normal());
printf("Service %s%s%s:\n", ansi_highlight(), *name, ansi_normal());
q = tree_one(bus, *i);
if (q < 0 && r >= 0)
r = q;
not_first = true;
}
} else
STRV_FOREACH(i, strv_skip(argv, 1)) {
int q;
if (i > argv+1)
printf("\n");
if (argv[2]) {
pager_open(arg_pager_flags);
printf("Service %s%s%s:\n", ansi_highlight(), *i, ansi_normal());
}
q = tree_one(bus, *i);
q = tree_one(bus, *name);
if (q < 0 && r >= 0)
r = q;
}
}
return r;
}