On Sat, Jun 21, 2014 at 11:43:57AM +0200, Jan Stary wrote:
> The mandatory .Os macro of an mdoc(7) manpage
> makes the rendered manpage have "OpenBSD Reference Manual"
> at the top center, and "OpenBSD X.Y" at the bottom.
> As the mdoc(7) manual says,
> 
>       Left unspecified, it defaults to the local
>       operating system version. This is the suggested form.
> 
> Viewing the same page on Linux with mandoc,
> it renders "General Commands Manual" and "Linux 3.2.0-4-amd64".
> 
> Now, vieweing the same manpage on Linux with groff -mdoc,
> it renders "BSD General Commands Manual" at the top center
> and "BSD" at the bottom.
> 
> I suppose there is a difference between how mandoc and groff
> figure out the OS information to use for .Os; groff_mdoc(7) says
> 
>       .Os [<operating system>] [<release>]
>       If the first parameter is empty, the default `' is used.
>       This may be overridden in the local configuration file, mdoc.local.
> 
> Could someone please eleborate on this difference between
> mandoc and groff regarding how they get the OS information?
> Of course my Linux users wonder why the manpage says "BSD".
> 

mandoc uses the code in mdoc_validate.c (ingo will correct me if i'm
wrong) and it's commented thus:

        Set the operating system by way of the `Os' macro.
        * The order of precedence is:
        * 1. the argument of the `Os' macro, unless empty
        * 2. the -Ios=foo command line argument, if provided
        * 3. -DOSNAME="\"foo\"", if provided during compilation
        * 4. "sysname release" from uname(3)

groff uses the stuff in the tmac files in doc-common. it is not a pretty
sight, but you can see where it sets stuff like "General Commands
Manual". i don;t have access to a linux system, but maybe groff classes
mdoc pages as BSD by default, or maybe your linux distro does.

jmc

Reply via email to