chiark / gitweb /
util: add shell_maybe_quote() call for preparing a string for shell cmdline inclusion
[elogind.git] / src / shared / pager.c
index aa74bab103de3406aafb3c0bc9e3a02238d9dbc3..f12bfb3287f0cdca2a762b41d22ceb0a18444037 100644 (file)
@@ -19,7 +19,6 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
-#include <sys/types.h>
 #include <fcntl.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -40,7 +39,7 @@ noreturn static void pager_fallback(void) {
         } while (n > 0);
 
         if (n < 0) {
-                log_error("Internal pager failed: %m");
+                log_error_errno(errno, "Internal pager failed: %m");
                 _exit(EXIT_FAILURE);
         }
 
@@ -67,17 +66,15 @@ int pager_open(bool jump_to_end) {
          * pager so that we get the value from the actual tty */
         columns();
 
-        if (pipe(fd) < 0) {
-                log_error("Failed to create pager pipe: %m");
-                return -errno;
-        }
+        if (pipe(fd) < 0)
+                return log_error_errno(errno, "Failed to create pager pipe: %m");
 
         parent_pid = getpid();
 
         pager_pid = fork();
         if (pager_pid < 0) {
                 r = -errno;
-                log_error("Failed to fork pager: %m");
+                log_error_errno(errno, "Failed to fork pager: %m");
                 safe_close_pair(fd);
                 return r;
         }
@@ -93,7 +90,7 @@ int pager_open(bool jump_to_end) {
                 if (!less_opts)
                         less_opts = "FRSXMK";
                 if (jump_to_end)
-                        less_opts = strappenda(less_opts, " +G");
+                        less_opts = strjoina(less_opts, " +G");
                 setenv("LESS", less_opts, 1);
 
                 /* Make sure the pager goes away when the parent dies */
@@ -126,10 +123,8 @@ int pager_open(bool jump_to_end) {
         }
 
         /* Return in the parent */
-        if (dup2(fd[1], STDOUT_FILENO) < 0) {
-                log_error("Failed to duplicate pager pipe: %m");
-                return -errno;
-        }
+        if (dup2(fd[1], STDOUT_FILENO) < 0)
+                return log_error_errno(errno, "Failed to duplicate pager pipe: %m");
 
         safe_close_pair(fd);
         return 1;
@@ -176,10 +171,8 @@ int show_man_page(const char *desc, bool null_stdio) {
                 args[1] = desc;
 
         pid = fork();
-        if (pid < 0) {
-                log_error("Failed to fork: %m");
-                return -errno;
-        }
+        if (pid < 0)
+                return log_error_errno(errno, "Failed to fork: %m");
 
         if (pid == 0) {
                 /* Child */
@@ -192,7 +185,7 @@ int show_man_page(const char *desc, bool null_stdio) {
                 }
 
                 execvp(args[0], (char**) args);
-                log_error("Failed to execute man: %m");
+                log_error_errno(errno, "Failed to execute man: %m");
                 _exit(EXIT_FAILURE);
         }