pager: support SYSTEMD_LESS environment variable
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 12 Feb 2014 02:30:10 +0000 (03:30 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 12 Feb 2014 06:10:31 +0000 (01:10 -0500)
This allows customization of the arguments used by less. The main
motivation is that some folks might not like having --no-init on every
invocation of less.

man/journalctl.xml
man/localectl.xml
man/loginctl.xml
man/machinectl.xml
man/systemctl.xml
man/systemd-analyze.xml
man/timedatectl.xml
src/shared/pager.c

index 3b05e80..18a1b9e 100644 (file)
                                 this to an empty string or the value
                                 <literal>cat</literal> is equivalent to passing
                                 <option>--no-pager</option>.</para></listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index 0950cce..238757c 100644 (file)
                                 this to an empty string or the value
                                 <literal>cat</literal> is equivalent to passing
                                 <option>--no-pager</option>.</para></listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index 13105d4..ede869f 100644 (file)
                                 this to an empty string or the value
                                 <literal>cat</literal> is equivalent to passing
                                 <option>--no-pager</option>.</para></listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index cabdbac..2e7fa3b 100644 (file)
                                 this to an empty string or the value
                                 <literal>cat</literal> is equivalent to passing
                                 <option>--no-pager</option>.</para></listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index ed1bf48..1b0f8e5 100644 (file)
@@ -1479,6 +1479,10 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
           equivalent to passing
           <option>--no-pager</option>.</para>
         </listitem>
+       <term><varname>$SYSTEMD_LESS</varname></term>
+       <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+       default options passed to <literal>less</literal>
+       (<literal>FRSXMK</literal>).</para></listitem> 
       </varlistentry>
     </variablelist>
   </refsect1>
index cbf59e0..54479e4 100644 (file)
@@ -335,6 +335,10 @@ $ eog targets.svg</programlisting>
                                         equivalent to passing
                                         <option>--no-pager</option>.</para>
                                 </listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index beda304..be66993 100644 (file)
                                 this to an empty string or the value
                                 <literal>cat</literal> is equivalent to passing
                                 <option>--no-pager</option>.</para></listitem>
+                               <term><varname>$SYSTEMD_LESS</varname></term>
+                               <listitem><para><varname>$SYSTEMD_LESS</varname> overrides the
+                               default options passed to <literal>less</literal>
+                               (<literal>FRSXMK</literal>).</para></listitem>
                         </varlistentry>
                 </variablelist>
         </refsect1>
index 72a29f2..55b13d6 100644 (file)
@@ -84,14 +84,17 @@ int pager_open(bool jump_to_end) {
 
         /* In the child start the pager */
         if (pager_pid == 0) {
+                const char* less_opts;
 
                 dup2(fd[0], STDIN_FILENO);
                 close_pipe(fd);
 
+                less_opts = getenv("SYSTEMD_LESS");
+                if (!less_opts)
+                        less_opts = "FRSXMK";
                 if (jump_to_end)
-                        setenv("LESS", "FRSXMK+G", 1);
-                else
-                        setenv("LESS", "FRSXMK", 1);
+                        less_opts = strappenda(less_opts, " +G");
+                setenv("LESS", less_opts, 1);
 
                 /* Make sure the pager goes away when the parent dies */
                 if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0)