]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic/main-func: also close the pager automatically
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 20 Nov 2018 13:03:46 +0000 (14:03 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 20 Nov 2018 15:48:21 +0000 (16:48 +0100)
We generally want to close the pager last. This patch closes the pager last,
after the static destuctor calls. This means that they can do logging and such
like during normal program runtime.

src/basic/main-func.h
src/login/inhibit.c
src/sysctl/sysctl.c

index 9dfcea9296fdc6bef29bcc2a36c35265d063c85f..6417cc822aa0db13c67cc67b76e189a56ae5974e 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <stdlib.h>
 
+#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;                                             \
         }
 
index 5c0637c8613d764667874d0f869e6b7b4f87059b..7a63eb6efcb8424d1f5e62c88c1b4611032b421c 100644 (file)
@@ -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;
index f9d282d1cb8a69b7ad9fc3692a1ba3e8ec048555..d04a2cff155d8f44e706721b6715135713d9805a 100644 (file)
@@ -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;
 }