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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -42,5 +42,5 @@ int verb_cat_config(int argc, char *argv[], void *userdata) {
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -221,5 +221,5 @@ int verb_filesystems(int argc, char *argv[], void *userdata) {
|
||||
first = false;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -391,5 +391,5 @@ int verb_plot(int argc, char *argv[], void *userdata) {
|
||||
|
||||
svg("</svg>\n");
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ int verb_syscall_filters(int argc, char *argv[], void *userdata) {
|
||||
first = false;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
@@ -18,5 +18,5 @@ int verb_time(int argc, char *argv[], void *userdata) {
|
||||
return r;
|
||||
|
||||
puts(buf);
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user