diff --git a/src/basic/main-func.h b/src/basic/main-func.h index 9dfcea9296..6417cc822a 100644 --- a/src/basic/main-func.h +++ b/src/basic/main-func.h @@ -3,6 +3,7 @@ #include +#include "pager.h" #include "static-destruct.h" #define _DEFINE_MAIN_FUNCTION(impl, ret) \ @@ -10,6 +11,7 @@ int r; \ r = impl(argc, argv); \ static_destruct(); \ + pager_close(); \ return ret; \ } diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 5c0637c861..7a63eb6efc 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -282,12 +282,10 @@ static int run(int argc, char *argv[]) { if (r < 0) return log_error_errno(r, "Failed to connect to bus: %m"); - if (arg_action == ACTION_LIST) { - r = print_inhibitors(bus); - pager_close(); - return r; + if (arg_action == ACTION_LIST) + return print_inhibitors(bus); - } else { + else { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_close_ int fd = -1; _cleanup_free_ char *w = NULL; diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index f9d282d1cb..d04a2cff15 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -266,21 +266,19 @@ static int parse_argv(int argc, char *argv[]) { static int run(int argc, char *argv[]) { _cleanup_(ordered_hashmap_free_free_freep) OrderedHashmap *sysctl_options = NULL; - int r = 0, k; + int r, k; r = parse_argv(argc, argv); if (r <= 0) - goto finish; + return r; log_setup_service(); umask(0022); sysctl_options = ordered_hashmap_new(&path_hash_ops); - if (!sysctl_options) { - r = log_oom(); - goto finish; - } + if (!sysctl_options) + return log_oom(); r = 0; @@ -297,16 +295,13 @@ static int run(int argc, char *argv[]) { char **f; r = conf_files_list_strv(&files, ".conf", NULL, 0, (const char**) CONF_PATHS_STRV("sysctl.d")); - if (r < 0) { - log_error_errno(r, "Failed to enumerate sysctl.d files: %m"); - goto finish; - } + if (r < 0) + return log_error_errno(r, "Failed to enumerate sysctl.d files: %m"); if (arg_cat_config) { (void) pager_open(arg_pager_flags); - r = cat_files(NULL, files, 0); - goto finish; + return cat_files(NULL, files, 0); } STRV_FOREACH(f, files) { @@ -320,9 +315,6 @@ static int run(int argc, char *argv[]) { if (k < 0 && r == 0) r = k; -finish: - pager_close(); - return r; }