Hi,

currently, if neither the MANPAGER nor the PAGER environment variable
is set, man(1) uses "more -s" as the manual page pager.  I am quite
sure that the only reason i did this is that i thought this behaviour
was required by POSIX.

But it is not:

  https://pubs.opengroup.org/onlinepubs/9699919799/utilities/man.html

  "If the PAGER variable is null or not set,
   the command shall be either "more" or another
   paginator utility documented in the system documentation."

Right now, i even failed to find any indication that POSIX ever
required more(1) as the default for this purpose.  I no longer
understand where i got that idea from in the first place.

That said, on OpenBSD, the pager we provide is less(1).  In effect,
it is less(1) even when called as more(1), albeit with minor
differences in the default behaviour.  On top of that, our man(1)
utility heavily relies on less(1) features that tradional more(1)
wouldn't even have, in particular tagging support (:t).

So, i would find it logical to use less(1) as the default pager
instead of more(1).

Same thing for the "-s" option: i thought it was required by POSIX,
but it isn't.  I also provides little benefit, if any, and it may
occasionally break output, in the rare case where two consecutive
blank lines are syntacically significant (for example in an EXAMPLES
section presenting a code sample).  Besides, if the author deliberately
chose to put two consecutive blank lines, i don't see why man(1)
should squeeze them and override the author's intent.

Is anybody concerned about the following patch, or would you agree
with it?

Yours,
  Ingo


Index: apropos.1
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/apropos.1,v
retrieving revision 1.41
diff -u -p -r1.41 apropos.1
--- apropos.1   22 Nov 2018 12:32:10 -0000      1.41
+++ apropos.1   19 Jul 2020 15:18:30 -0000
@@ -340,7 +340,7 @@ types appearing in function arguments in
 Any non-empty value of the environment variable
 .Ev MANPAGER
 is used instead of the standard pagination program,
-.Xr more 1 ;
+.Xr less 1 ;
 see
 .Xr man 1
 for details.
@@ -363,7 +363,7 @@ Specifies the pagination program to use 
 .Ev MANPAGER
 is not defined.
 If neither PAGER nor MANPAGER is defined,
-.Xr more 1
+.Xr less 1
 .Fl s
 is used.
 Only used if
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/main.c,v
retrieving revision 1.253
diff -u -p -r1.253 main.c
--- main.c      15 Jun 2020 17:25:03 -0000      1.253
+++ main.c      19 Jul 2020 15:18:31 -0000
@@ -1194,7 +1194,7 @@ spawn_pager(struct outstate *outst, char
        if (pager == NULL || *pager == '\0')
                pager = getenv("PAGER");
        if (pager == NULL || *pager == '\0')
-               pager = "more -s";
+               pager = "less";
        cp = mandoc_strdup(pager);
 
        /*
Index: man.1
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/man.1,v
retrieving revision 1.37
diff -u -p -r1.37 man.1
--- man.1       17 Jun 2020 19:41:25 -0000      1.37
+++ man.1       19 Jul 2020 15:18:31 -0000
@@ -275,7 +275,7 @@ is case insensitive.
 Any non-empty value of the environment variable
 .Ev MANPAGER
 is used instead of the standard pagination program,
-.Xr more 1 .
+.Xr less 1 .
 If
 .Xr less 1
 is used, the interactive
@@ -329,7 +329,7 @@ Specifies the pagination program to use 
 .Ev MANPAGER
 is not defined.
 If neither PAGER nor MANPAGER is defined,
-.Xr more 1
+.Xr less 1
 .Fl s
 is used.
 .El
Index: mandoc.1
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/mandoc.1,v
retrieving revision 1.168
diff -u -p -r1.168 mandoc.1
--- mandoc.1    15 Jun 2020 18:05:25 -0000      1.168
+++ mandoc.1    19 Jul 2020 15:18:31 -0000
@@ -650,7 +650,7 @@ It never affects the interpretation of i
 Any non-empty value of the environment variable
 .Ev MANPAGER
 is used instead of the standard pagination program,
-.Xr more 1 ;
+.Xr less 1 ;
 see
 .Xr man 1
 for details.
@@ -664,7 +664,7 @@ Specifies the pagination program to use 
 .Ev MANPAGER
 is not defined.
 If neither PAGER nor MANPAGER is defined,
-.Xr more 1
+.Xr less 1
 .Fl s
 is used.
 Only used if

Reply via email to