analyze: allow verbs to return positive failure

No functional change is intended. The verbs where it wasn't immediately
clear if the success exit status is 0 or >= 0 are changed to explicitly
return 0. (I think it's better to be explicit than to rely on some call
stack always returning 0 on success.)

Some other functions are cleaned up to be more idiomatic.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2022-05-19 08:02:29 +02:00
parent d5dcd00ba2
commit fddad5f4a6
19 changed files with 68 additions and 43 deletions
+5 -1
View File
@@ -61,5 +61,9 @@ int verb_blame(int argc, char *argv[], void *userdata) {
pager_open(arg_pager_flags);
return table_print(table, NULL);
r = table_print(table, NULL);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+8 -6
View File
@@ -123,7 +123,7 @@ static int test_calendar_one(usec_t n, const char *p) {
}
int verb_calendar(int argc, char *argv[], void *userdata) {
int ret = 0, r;
int r = 0;
usec_t n;
if (arg_base_time != USEC_INFINITY)
@@ -132,13 +132,15 @@ int verb_calendar(int argc, char *argv[], void *userdata) {
n = now(CLOCK_REALTIME); /* We want to use the same "base" for all expressions */
STRV_FOREACH(p, strv_skip(argv, 1)) {
r = test_calendar_one(n, *p);
if (ret == 0 && r < 0)
ret = r;
int k;
if (*(p + 1))
k = test_calendar_one(n, *p);
if (r == 0 && k < 0)
r = k;
if (p[1])
putchar('\n');
}
return ret;
return r;
}
+5 -1
View File
@@ -48,5 +48,9 @@ int verb_capabilities(int argc, char *argv[], void *userdata) {
pager_open(arg_pager_flags);
return table_print(table, NULL);
r = table_print(table, NULL);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -42,5 +42,5 @@ int verb_cat_config(int argc, char *argv[], void *userdata) {
return r;
}
return 0;
return EXIT_SUCCESS;
}
+7 -1
View File
@@ -137,5 +137,11 @@ static int verify_conditions(char **lines, LookupScope scope, const char *unit,
}
int verb_condition(int argc, char *argv[], void *userdata) {
return verify_conditions(strv_skip(argv, 1), arg_scope, arg_unit, arg_root);
int r;
r = verify_conditions(strv_skip(argv, 1), arg_scope, arg_unit, arg_root);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -226,5 +226,5 @@ int verb_critical_chain(int argc, char *argv[], void *userdata) {
else
list_dependencies(bus, SPECIAL_DEFAULT_TARGET);
return 0;
return EXIT_SUCCESS;
}
+5 -1
View File
@@ -60,5 +60,9 @@ int verb_dump(int argc, char *argv[], void *userdata) {
return bus_log_parse_error(r);
fflush(stdout);
return copy_bytes(fd, STDOUT_FILENO, UINT64_MAX, 0);
r = copy_bytes(fd, STDOUT_FILENO, UINT64_MAX, 0);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+5 -1
View File
@@ -48,5 +48,9 @@ int verb_exit_status(int argc, char *argv[], void *userdata) {
pager_open(arg_pager_flags);
return table_print(table, NULL);
r = table_print(table, NULL);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -221,5 +221,5 @@ int verb_filesystems(int argc, char *argv[], void *userdata) {
first = false;
}
return 0;
return EXIT_SUCCESS;
}
+5 -1
View File
@@ -14,5 +14,9 @@ int verb_log_control(int argc, char *argv[], void *userdata) {
if (r < 0)
return bus_log_connect_error(r, arg_transport);
return verb_log_control_common(bus, "org.freedesktop.systemd1", argv[0], argc == 2 ? argv[1] : NULL);
r = verb_log_control_common(bus, "org.freedesktop.systemd1", argv[0], argc == 2 ? argv[1] : NULL);
if (r < 0)
return r;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -391,5 +391,5 @@ int verb_plot(int argc, char *argv[], void *userdata) {
svg("</svg>\n");
return 0;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -37,5 +37,5 @@ int verb_service_watchdogs(int argc, char *argv[], void *userdata) {
return log_error_errno(r, "Failed to set service-watchdog state: %s", bus_error_message(&error, r));
}
return 0;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -176,7 +176,7 @@ int verb_syscall_filters(int argc, char *argv[], void *userdata) {
first = false;
}
return 0;
return EXIT_SUCCESS;
}
#else
+1 -1
View File
@@ -18,5 +18,5 @@ int verb_time(int argc, char *argv[], void *userdata) {
return r;
puts(buf);
return 0;
return EXIT_SUCCESS;
}
+8 -6
View File
@@ -79,16 +79,18 @@ static int test_timestamp_one(const char *p) {
}
int verb_timestamp(int argc, char *argv[], void *userdata) {
int ret = 0, r;
int r = 0;
STRV_FOREACH(p, strv_skip(argv, 1)) {
r = test_timestamp_one(*p);
if (ret == 0 && r < 0)
ret = r;
int k;
if (*(p + 1))
k = test_timestamp_one(*p);
if (r == 0 && k < 0)
r = k;
if (p[1])
putchar('\n');
}
return ret;
return r;
}
+1 -1
View File
@@ -46,5 +46,5 @@ int verb_unit_files(int argc, char *argv[], void *userdata) {
printf("aliases: %s ← %s\n", k, j);
}
return 0;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -16,5 +16,5 @@ int verb_unit_paths(int argc, char *argv[], void *userdata) {
STRV_FOREACH(p, paths.search_path)
puts(*p);
return 0;
return EXIT_SUCCESS;
}
+1 -1
View File
@@ -607,4 +607,4 @@ static int run(int argc, char *argv[]) {
return dispatch_verb(argc, argv, verbs, NULL);
}
DEFINE_MAIN_FUNCTION(run);
DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(run);
+10 -15
View File
@@ -30,27 +30,22 @@ int verb_log_control_common(sd_bus *bus, const char *destination, const char *ve
r = bus_set_property(bus, &bloc,
level ? "LogLevel" : "LogTarget",
&error, "s", value);
if (r >= 0)
return 0;
log_error_errno(r, "Failed to set log %s of %s to %s: %s",
level ? "level" : "target",
bloc.destination, value, bus_error_message(&error, r));
if (r < 0)
return log_error_errno(r, "Failed to set log %s of %s to %s: %s",
level ? "level" : "target",
bloc.destination, value, bus_error_message(&error, r));
} else {
_cleanup_free_ char *t = NULL;
r = bus_get_property_string(bus, &bloc,
level ? "LogLevel" : "LogTarget",
&error, &t);
if (r >= 0) {
puts(t);
return 0;
}
log_error_errno(r, "Failed to get log %s of %s: %s",
level ? "level" : "target",
bloc.destination, bus_error_message(&error, r));
if (r < 0)
return log_error_errno(r, "Failed to get log %s of %s: %s",
level ? "level" : "target",
bloc.destination, bus_error_message(&error, r));
puts(t);
}
return r;
return 0;
}