.\" Copyright (C), 1995, Graeme W. Wilford. (Wilf.)
.\" Copyright (c) 2002, 2007 Colin Watson.
.\"
.\" You may distribute under the terms of the GNU General Public
.\" License as specified in the file docs/COPYING.GPLv2 that comes with the
.\" man-db distribution.
.\"
.\" Thu Sep 21 19:22:47 BST 1995  Wilf. (G.Wilford@ee.surrey.ac.uk)
.\"
.BS 1 "The specifics of Sections"
.BS 2 "Package specific manual page sections"
.lp
The use of package specific manual page
sections is discouraged as packages large enough to warrant their own
section probably contain manual pages that span other sections.
An example might be package
.b foo
that has its own section
.ip
.i /usr/share/man/manfoo
.lp
which contains manual pages
describing its programs, the library routines it offers and the format of
several of its configuration files.
These pages would normally be allocated to sections
.b 1 ,
.b 3
and
.b 5
respectively and thus combining them all under section
.b foo
is misleading.
Subtle problems will arise if there are any
base name-space clashes with standard manual pages, e.g.
.b exit (3),
.b exit (foo)
and the order in which they should be shown.
.lp
There are two standard solutions to this problem.
.np
Create a separate manual page hierarchy for the package's manual pages such as
.(l
.i /usr/local/packages/foo/man
.)l
.np
Install the pages in their relevant sections, with a unique extension
appended to the filename such that
.(l
.i /usr/share/man/manfoo/exit.foo
.)l
would instead be installed as
.(l
.i /usr/share/man/man1/exit.1foo
.)l
.lp
Only (2) offers a complete
solution to manual page ordering problems and
allows users to access the desired page directly.
.BS 2 "Selecting a section type"
.BS 3 "Specifying a section"
.lp
This is done via use of the section argument to man
.ip
.bx "man 1 exit"
.lp
will look for
.i exit.1*
in section
.b 1
of the manual.
If
.i exit.1
exists, it will be displayed in preference to
.i exit.1foo
.ip
.bx "man 1foo exit"
.lp
will look for
.i exit.1foo*
in section
.b 1
of the manual.
The asterisk (*) represents a wild-card of any type or length,
including length zero.
.lp
For an argument to be interpreted as a section name rather than a page name, it
must either begin with a digit, or be included in the standard section list.
The default section list is defined in
.i include/manconfig.h
to be
.b 1 ,
.b n ,
.b l ,
.b 8 ,
.b 3 ,
.b 2 ,
.b 5 ,
.b 4 ,
.b 9 ,
.b 6
and
.b 7 .
This should be modified in order and content to meet the local conventions.
It may be altered at run-time using the
.b SECTION
directive in the \*M configuration file.
.lp
Every subdirectory section name in the entire system must be in the list,
including sections found in imported manual page hierarchies.
It is not necessary to list sections with extensions unless a special
ordering for those extensions is desired.
The order is important because in normal operation,
.b man
will only display the first manual page it finds that meets the search
criteria. Using the
.b \-\-all
argument will cause
.b man
to attempt to display all manual pages that meet the criteria. See
.b man (1)
for further information.
.lp
Having an excess of sections listed will not slow
.b man
down.
.BS 3 "Specifying an extension"
.lp
If the section is unknown, but the package extension is,
it is possible to use the extension argument
.ip
.bx "man \-e foo exit"
.lp
to search in all sections for manual pages named
.i exit
from package
.i foo .
