Hi James,

At 2025-08-27T12:20:26-0400, James Cloos wrote:
> >>>>> "IS" == Ingo Schwarze <schwa...@usta.de> writes:
> 
> JC>> I hope none of you are suggesting removing support for, eg:
> JC>> man ./foo.5
> 
> IS> We will remove exactly that.
> 
> harm w/o value.
[...]
> i don't use mandoc often.  but i doubt i'm the only one with this
> muscle mmory.
[...]
> obviously i wrote the word posix as an abbreviation for unix and its
> derivatives.  whatever the austin group has published is not relevant.
> 
> decades of use, however, is relevant.
> 
> IS> What's wrong with typing
> IS>   man -l foo.5
> 
> having to run man man to remember it.
> 
> whereas specifying a path is the norm.

I dispute that.  Typing the name of a man page topic[1] has been the
norm since 1972.

http://bitsavers.informatik.uni-stuttgart.de/pdf/att/unix/2nd_Edition/UNIX_Programmers_Manual_2ed_Jun72.pdf

[...]
> i haven't used a bsd box as my primary since before that.  but i've
> used man $path since the 90s.
> 
> not every month.
> 
> but the other likely to recall option is calling grog to see what
> groff options are required and then a suitable pipe chain.
> 
> to remember -l given how infrequently it is required and given the
> extant muscle memory is unlikely.
> 
> and there is never value in eliminating something which has been
> around for decades and is effortless to maintain.
> 
> i can't be the only one who is used to the current support.  on any
> kernel or dist.
> 
> the discussion ought to be much more widespread before changes are
> made.

The problem with mandoc(1) and man(1) keeping the status quo is that the
name space in which you're searching for a page is ambiguous.  The `-l`
option disambiguates it, and selects the file system as the name space.
The traditional name space for man page resolution, I would term the
"topic" name space.

Ingo has pointed out that a slash is actually encountered in real-world
man page topic names.  (I long knew it was "legal", but didn't know any
actual pages exercised this freedom, and had supposed that one could
decide a name space based on the presence of a slash.  Ingo's exhibits
have overturned my supposition.)

Thus, given a command:

$ man foo/bar

when a page listing "foo/bar" as a topic, _and_ a file ./foo/bar
relative to your current working directory are both extant, which one
wins?  Where is the rule written down?  Is the ordering intuitive?  Why
or why not?

You could write a personal "man" wrapper as a shell function to restore
the functionality you don't want to lose, calling man(1) (or mandoc(1))
with or without the `-l` option as you desire.

The fact that such a wrapper would have to decide which name space it
searches first motivates removal of this "DWIM" feature, because if you
were to survey man(1) users, I predict that you would find consensus
lacking on what they "M".

But, I'll wager, most of them don't know that.  They know which
resolution order they expect and have come to rely upon, and would
express astonishment that anyone would expect the opposite one.

Implicit, unexamined assumptions are how a great many unproductive
disagreements originate and are sustained.

Regards,
Branden

[1] I admit that "topic" is my own invention.  groff_man(7) presents the
    distinction between a "title" and a "topic".

groff_man(7):
   Document structure macros
     Document structure macros organize a man page’s content.  All of
     them break the output line.  TH (title heading) identifies the
     document as a man page and configures the page headers and footers.
...
     .SH [heading‐text]
            Set heading‐text as a section heading.
...
            The content of heading‐text and ordering of sections follows
            a set of common practices, as does much of the layout of
            material within sections.  For example, a section called
            “Name” or “NAME” must exist, must be the first section after
            the TH call, and must contain only text of the form
                   topic[, another‐topic]... \- summary‐description
            for tools like makewhatis(8) or mandb(8) to index them.

    You may observe that I depart deliberately from Second Edition Unix
    terminology.  I can look up the topic "strncmp" with man(1) even
    though the page documenting it is in a file named 'strcmp.3.gz'
    (without the "n" infix), and the page "titles" in *roff parlance
    (headers and footers) do not mention "strncmp", because that term
    does not appear in the document's `TH` macro call.

    .TH STRCMP 3  2020-04-11 "" "Linux Programmer's Manual"

    We do, however, locate it in the topic list of the "NAME" section.

    .SH NAME
    strcmp, strncmp \- compare two strings

    mandb(8) locates it similarly, and that is how it knows the correct
    page to give me when I ask for it.

Attachment: signature.asc
Description: PGP signature

Reply via email to