Adding upstream version 2.13.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
38ef975b7f
commit
1fa764a8d3
1212 changed files with 566468 additions and 0 deletions
339
docs/COPYING.GPLv2
Normal file
339
docs/COPYING.GPLv2
Normal file
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
502
docs/COPYING.LIB
Normal file
502
docs/COPYING.LIB
Normal file
|
@ -0,0 +1,502 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
169
docs/HACKING.md
Normal file
169
docs/HACKING.md
Normal file
|
@ -0,0 +1,169 @@
|
|||
Hacking on man-db
|
||||
=================
|
||||
|
||||
man-db is not a large or particularly complicated project, but there is
|
||||
still plenty for an interested developer to contribute. Here's a very brief
|
||||
guide on how to get started.
|
||||
|
||||
|
||||
Directory layout
|
||||
----------------
|
||||
|
||||
The source tree looks something like this, ignoring some directories added
|
||||
by autoconf, automake, gettext, and gnulib:
|
||||
|
||||
<dl>
|
||||
<dt><code>docs/</code></dt>
|
||||
<dd>Assorted documentation.</dd>
|
||||
|
||||
<dt><code>man/</code></dt>
|
||||
<dd>Man pages for man-db's programs.</dd>
|
||||
|
||||
<dt><code>manual/</code></dt>
|
||||
<dd>The man-db manual, written in <code>troff</code>.</dd>
|
||||
|
||||
<dt><code>include/</code></dt>
|
||||
<dd>Header files used throughout the package.</dd>
|
||||
|
||||
<dt><code>lib/</code></dt>
|
||||
<dd>
|
||||
Basic library files, some of which supplement inadequate C libraries on
|
||||
various systems and some of which implement utility functions used
|
||||
throughout the package.
|
||||
</dd>
|
||||
|
||||
<dt><code>libdb/</code></dt>
|
||||
<dd>
|
||||
The database access library. Code outside this directory should not know
|
||||
about specific back-end database implementations.
|
||||
</dd>
|
||||
|
||||
<dt><code>src/</code></dt>
|
||||
<dd>Source code to the man-db programs themselves.</dd>
|
||||
|
||||
<dt><code>tools/</code></dt>
|
||||
<dd>Miscellaneous add-on scripts.</dd>
|
||||
|
||||
<dt><code>po/</code></dt>
|
||||
<dd>Translations.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
Coding style
|
||||
------------
|
||||
|
||||
`clang-format` enforces a consistent style, configured in `.clang-format`.
|
||||
You can ensure that this and other checks are applied to your git commits
|
||||
locally by installing the [`pre-commit`](https://pre-commit.com/) package
|
||||
and running `pre-commit install`. Whether you do this or not, if you push
|
||||
your changes to a fork on GitLab, then GitLab CI will run them for you.
|
||||
|
||||
|
||||
Facilities and portability
|
||||
--------------------------
|
||||
|
||||
man-db uses Gnulib to provide portability support and utility functions
|
||||
common to many GNU packages (although man-db is not itself a GNU package),
|
||||
while the `lib/` directory provides some other utility functions specific to
|
||||
man-db. Please make use of these facilities where available. In particular,
|
||||
there are various functions beginning with 'x' which check the return values
|
||||
from the system's memory allocation calls, which you should use instead of
|
||||
their non-'x' siblings.
|
||||
|
||||
`appendstr()` provides manageable string concatenation. Use it where
|
||||
appropriate. Remember to terminate its argument list with `nullptr`. In many
|
||||
cases, `xasprintf()` from Gnulib may be more readable.
|
||||
|
||||
If you're calling any of the `is*()` or `to*()` functions in `<ctype.h>`,
|
||||
please do so via the `CTYPE()` macro in `include/manconfig.h` to ensure that
|
||||
the argument type is correct.
|
||||
|
||||
You may assume C99.
|
||||
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
There is a small test suite in `src/tests/`, as well as basic tests in
|
||||
`man/` to ensure that man-db's own manual pages format without errors. Tests
|
||||
for new bug fixes are not *required*, but are generally a good idea.
|
||||
|
||||
Various test library facilities are available in `src/tests/testlib.sh`.
|
||||
Feel free to extend this as necessary.
|
||||
|
||||
|
||||
Things to do
|
||||
------------
|
||||
|
||||
`docs/TODO` has a number of outstanding projects. Things near the bottom are
|
||||
usually more detailed and accurate.
|
||||
|
||||
The Debian bug tracking system has a number of [outstanding reports on
|
||||
man-db](https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=man-db;ordering=upstream).
|
||||
|
||||
Much of the work needed on man-db is for maintainability. Patches that take
|
||||
difficult-to-understand code with hairy memory allocation and replace it
|
||||
with clean, obvious, and reliable code are most welcome, especially if they
|
||||
introduce new abstractions which are of more general use. The replacement of
|
||||
`splitline()` with the `page_description` interface is a good example of
|
||||
this.
|
||||
|
||||
Work on porting to platforms other than GNU/Linux is welcome. It's been a
|
||||
while since serious effort in that direction has been invested in man-db.
|
||||
Most of the code should be quite portable, but the occasional teething
|
||||
problem would not be a surprise.
|
||||
|
||||
|
||||
Sending patches
|
||||
---------------
|
||||
|
||||
GitLab merge requests are preferred. Create an account on gitlab.com,
|
||||
[fork](https://gitlab.com/man-db/man-db/-/forks/new) the repository to your
|
||||
own account, push your branch, and create a merge request.
|
||||
|
||||
If you can't or don't want to use GitLab merge requests, then you can fall
|
||||
back to sending patches in unified diff format (use `git diff`, or GNU diff
|
||||
with the -u option) to man-db-devel@nongnu.org (see [subscription
|
||||
instructions](https://lists.nongnu.org/mailman/listinfo/man-db-devel)).
|
||||
|
||||
|
||||
Revision control
|
||||
----------------
|
||||
|
||||
man-db is revision-controlled using [git](https://git-scm.com/). The archive
|
||||
may be fetched from here using `git clone`, and merge requests are accepted
|
||||
in the usual way:
|
||||
|
||||
https://gitlab.com/man-db/man-db
|
||||
|
||||
Generated files should be added to `.gitignore` and should not be committed
|
||||
to revision control.
|
||||
|
||||
|
||||
Release process
|
||||
---------------
|
||||
|
||||
1. Update the `AC_INIT` version number in `configure.ac` to "x.y.z-pre1".
|
||||
Commit and tag.
|
||||
|
||||
2. Pushing the tag should cause the GitLab CI machinery to upload a
|
||||
preliminary tarball for translators to the [package
|
||||
registry](https://gitlab.com/man-db/man-db/-/packages). Send this to the
|
||||
Translation Project robot, to provide context for `po/man-db.pot`.
|
||||
|
||||
3. Wait a couple of weeks for a reasonable number of translation updates to
|
||||
arrive. During this time, test until your eyeballs fall out, but try to
|
||||
avoid changing any translated messages.
|
||||
|
||||
4. Once you're ready to release, update `NEWS.md`, and
|
||||
the `AC_INIT` version number and `date` in `configure.ac`. Commit and
|
||||
tag.
|
||||
|
||||
5. Pushing the tag should cause the GitLab CI machinery to upload the
|
||||
release tarball to the [package
|
||||
registry](https://gitlab.com/man-db/man-db/-/packages). GPG-sign that
|
||||
tarball, and upload the tarball and its signature to Savannah so that the
|
||||
URLs in the newly-created [GitLab release
|
||||
notes](https://gitlab.com/man-db/man-db/-/releases) are valid.
|
||||
|
||||
6. Announce to wherever seems appropriate.
|
365
docs/INSTALL.autoconf
Normal file
365
docs/INSTALL.autoconf
Normal file
|
@ -0,0 +1,365 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
The following shell commands:
|
||||
|
||||
test -f configure || ./bootstrap
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
should configure, build, and install this package. The first line,
|
||||
which bootstraps, is intended for developers; when building from
|
||||
distribution tarballs it does nothing and can be skipped.
|
||||
|
||||
The following more-detailed instructions are generic; see the
|
||||
‘README’ file for instructions specific to this package. Some packages
|
||||
provide this ‘INSTALL’ file but do not implement all of the features
|
||||
documented below. The lack of an optional feature in a given package is
|
||||
not necessarily a bug. More recommendations for GNU packages can be
|
||||
found in the GNU Coding Standards.
|
||||
|
||||
Many packages have scripts meant for developers instead of ordinary
|
||||
builders, as they may use developer tools that are less commonly
|
||||
installed, or they may access the network, which has privacy
|
||||
implications. If the ‘bootstrap’ shell script exists, it attempts to
|
||||
build the ‘configure’ shell script and related files, possibly using
|
||||
developer tools or the network. Because the output of ‘bootstrap’ is
|
||||
system-independent, it is normally run by a package developer so that
|
||||
its output can be put into the distribution tarball and ordinary
|
||||
builders and users need not run ‘bootstrap’. Some packages have
|
||||
commands like ‘./autopull.sh’ and ‘./autogen.sh’ that you can run
|
||||
instead of ‘./bootstrap’, for more fine-grained control over
|
||||
bootstrapping.
|
||||
|
||||
The ‘configure’ shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a ‘Makefile’ in each directory of the package.
|
||||
It may also create one or more ‘.h’ files containing system-dependent
|
||||
definitions. Finally, it creates a shell script ‘config.status’ that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file ‘config.log’ containing output useful for debugging ‘configure’.
|
||||
|
||||
It can also use an optional file (typically called ‘config.cache’ and
|
||||
enabled with ‘--cache-file=config.cache’ or simply ‘-C’) that saves the
|
||||
results of its tests to speed up reconfiguring. Caching is disabled by
|
||||
default to prevent problems with accidental use of stale cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how ‘configure’ could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the ‘README’ so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point ‘config.cache’ contains results you don’t want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The ‘autoconf’ program generates ‘configure’ from the file
|
||||
‘configure.ac’. Normally you should edit ‘configure.ac’ instead of
|
||||
editing ‘configure’ directly.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. ‘cd’ to the directory containing the package’s source code.
|
||||
|
||||
2. If this is a developer checkout and file ‘configure’ does not yet
|
||||
exist, type ‘./bootstrap’ to create it. You may need special
|
||||
developer tools and network access to bootstrap, and the network
|
||||
access may have privacy implications.
|
||||
|
||||
3. Type ‘./configure’ to configure the package for your system. This
|
||||
might take a while. While running, ‘configure’ prints messages
|
||||
telling which features it is checking for.
|
||||
|
||||
4. Type ‘make’ to compile the package.
|
||||
|
||||
5. Optionally, type ‘make check’ to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
6. Type ‘make install’ to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the ‘make install’ phase executed with root
|
||||
privileges.
|
||||
|
||||
7. Optionally, type ‘make installcheck’ to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior ‘make install’ required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
8. You can remove the program binaries and object files from the
|
||||
source code directory by typing ‘make clean’. To also remove the
|
||||
files that ‘configure’ created (so you can compile the package for
|
||||
a different kind of computer), type ‘make distclean’. There is
|
||||
also a ‘make maintainer-clean’ target, but that is intended mainly
|
||||
for the package’s developers. If you use it, you may have to
|
||||
bootstrap again.
|
||||
|
||||
9. If the package follows the GNU Coding Standards, you can type ‘make
|
||||
uninstall’ to remove the installed files.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the ‘configure’ script does not know about. Run ‘./configure --help’
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give ‘configure’ initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here is
|
||||
an example:
|
||||
|
||||
./configure CC=gcc CFLAGS=-g LIBS=-lposix
|
||||
|
||||
See “Defining Variables” for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each system in their own
|
||||
directory. To do this, you can use GNU ‘make’. ‘cd’ to the directory
|
||||
where you want the object files and executables to go and run the
|
||||
‘configure’ script. ‘configure’ automatically checks for the source
|
||||
code in the directory that ‘configure’ is in and in ‘..’. This is known
|
||||
as a “VPATH” build.
|
||||
|
||||
With a non-GNU ‘make’, it is safer to compile the package for one
|
||||
system at a time in the source code directory. After you have installed
|
||||
the package for one system, use ‘make distclean’ before reconfiguring
|
||||
for another system.
|
||||
|
||||
Some platforms, notably macOS, support “fat” or “universal” binaries,
|
||||
where a single binary can execute on different architectures. On these
|
||||
platforms you can configure and compile just once, with options specific
|
||||
to that platform.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, ‘make install’ installs the package’s commands under
|
||||
‘/usr/local/bin’, include files under ‘/usr/local/include’, etc. You
|
||||
can specify an installation prefix other than ‘/usr/local’ by giving
|
||||
‘configure’ the option ‘--prefix=PREFIX’, where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option ‘--exec-prefix=PREFIX’ to ‘configure’, the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like ‘--bindir=DIR’ to specify different values for particular
|
||||
kinds of files. Run ‘configure --help’ for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the default
|
||||
for these options is expressed in terms of ‘${prefix}’, so that
|
||||
specifying just ‘--prefix’ will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to ‘configure’; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
‘make install’ command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, ‘make install
|
||||
prefix=/alternate/directory’ will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
‘${prefix}’. Any directories that were specified during ‘configure’,
|
||||
but not in terms of ‘${prefix}’, must each be overridden at install time
|
||||
for the entire installation to be relocated. The approach of makefile
|
||||
variable overrides for each directory variable is required by the GNU
|
||||
Coding Standards, and ideally causes no recompilation. However, some
|
||||
platforms have known limitations with the semantics of shared libraries
|
||||
that end up requiring recompilation when using this method, particularly
|
||||
noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the ‘DESTDIR’ variable. For
|
||||
example, ‘make install DESTDIR=/alternate/directory’ will prepend
|
||||
‘/alternate/directory’ before all installation names. The approach of
|
||||
‘DESTDIR’ overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of ‘${prefix}’
|
||||
at ‘configure’ time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving ‘configure’ the
|
||||
option ‘--program-prefix=PREFIX’ or ‘--program-suffix=SUFFIX’.
|
||||
|
||||
Some packages pay attention to ‘--enable-FEATURE’ and
|
||||
‘--disable-FEATURE’ options to ‘configure’, where FEATURE indicates an
|
||||
optional part of the package. They may also pay attention to
|
||||
‘--with-PACKAGE’ and ‘--without-PACKAGE’ options, where PACKAGE is
|
||||
something like ‘gnu-ld’. ‘./configure --help’ should mention the
|
||||
‘--enable-...’ and ‘--with-...’ options that the package recognizes.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of ‘make’ will be. For these packages, running ‘./configure
|
||||
--enable-silent-rules’ sets the default to minimal output, which can be
|
||||
overridden with ‘make V=1’; while running ‘./configure
|
||||
--disable-silent-rules’ sets the default to verbose, which can be
|
||||
overridden with ‘make V=0’.
|
||||
|
||||
Specifying a System Type
|
||||
========================
|
||||
|
||||
By default ‘configure’ builds for the current system. To create
|
||||
binaries that can run on a different system type, specify a
|
||||
‘--host=TYPE’ option along with compiler variables that specify how to
|
||||
generate object code for TYPE. For example, to create binaries intended
|
||||
to run on a 64-bit ARM processor:
|
||||
|
||||
./configure --host=aarch64-linux-gnu \
|
||||
CC=aarch64-linux-gnu-gcc \
|
||||
CXX=aarch64-linux-gnu-g++
|
||||
|
||||
If done on a machine that can execute these binaries (e.g., via
|
||||
‘qemu-aarch64’, ‘$QEMU_LD_PREFIX’, and Linux’s ‘binfmt_misc’
|
||||
capability), the build behaves like a native build. Otherwise it is a
|
||||
cross-build: ‘configure’ will make cross-compilation guesses instead of
|
||||
running test programs, and ‘make check’ will not work.
|
||||
|
||||
A system type can either be a short name like ‘mingw64’, or a
|
||||
canonical name like ‘x86_64-pc-linux-gnu’. Canonical names have the
|
||||
form CPU-COMPANY-SYSTEM where SYSTEM is either OS or KERNEL-OS. To
|
||||
canonicalize and validate a system type, you can run the command
|
||||
‘config.sub’, which is often squirreled away in a subdirectory like
|
||||
‘build-aux’. For example:
|
||||
|
||||
$ build-aux/config.sub arm64-linux
|
||||
aarch64-unknown-linux-gnu
|
||||
$ build-aux/config.sub riscv-lnx
|
||||
Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
|
||||
|
||||
You can look at the ‘config.sub’ file to see which types are recognized.
|
||||
If the file is absent, this package does not need the system type.
|
||||
|
||||
If ‘configure’ fails with the diagnostic “cannot guess build type”.
|
||||
‘config.sub’ did not recognize your system’s type. In this case, first
|
||||
fetch the newest versions of these files from the GNU config package
|
||||
(https://savannah.gnu.org/projects/config). If that fixes things,
|
||||
please report it to the maintainers of the package containing
|
||||
‘configure’. Otherwise, you can try the configure option ‘--build=TYPE’
|
||||
where TYPE comes close to your system type; also, please report the
|
||||
problem to <config-patches@gnu.org>.
|
||||
|
||||
For more details about configuring system types, see the Autoconf
|
||||
documentation.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for ‘configure’ scripts to share,
|
||||
you can create a site shell script called ‘config.site’ that gives
|
||||
default values for variables like ‘CC’, ‘cache_file’, and ‘prefix’.
|
||||
‘configure’ looks for ‘PREFIX/share/config.site’ if it exists, then
|
||||
‘PREFIX/etc/config.site’ if it exists. Or, you can set the
|
||||
‘CONFIG_SITE’ environment variable to the location of the site script.
|
||||
A warning: not all ‘configure’ scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to ‘configure’. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the ‘configure’ command line, using ‘VAR=value’. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified ‘gcc’ to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for ‘CONFIG_SHELL’ due to an
|
||||
Autoconf limitation. Until the limitation is lifted, you can use this
|
||||
workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
‘configure’ Invocation
|
||||
======================
|
||||
|
||||
‘configure’ recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
‘--help’
|
||||
‘-h’
|
||||
Print a summary of all of the options to ‘configure’, and exit.
|
||||
|
||||
‘--help=short’
|
||||
‘--help=recursive’
|
||||
Print a summary of the options unique to this package’s
|
||||
‘configure’, and exit. The ‘short’ variant lists options used only
|
||||
in the top level, while the ‘recursive’ variant lists options also
|
||||
present in any nested packages.
|
||||
|
||||
‘--version’
|
||||
‘-V’
|
||||
Print the version of Autoconf used to generate the ‘configure’
|
||||
script, and exit.
|
||||
|
||||
‘--cache-file=FILE’
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally ‘config.cache’. FILE defaults to ‘/dev/null’ to
|
||||
disable caching.
|
||||
|
||||
‘--config-cache’
|
||||
‘-C’
|
||||
Alias for ‘--cache-file=config.cache’.
|
||||
|
||||
‘--srcdir=DIR’
|
||||
Look for the package’s source code in directory DIR. Usually
|
||||
‘configure’ can determine that directory automatically.
|
||||
|
||||
‘--prefix=DIR’
|
||||
Use DIR as the installation prefix. See “Installation Names” for
|
||||
more details, including other options available for fine-tuning the
|
||||
installation locations.
|
||||
|
||||
‘--host=TYPE’
|
||||
Build binaries for system TYPE. See “Specifying a System Type”.
|
||||
|
||||
‘--enable-FEATURE’
|
||||
‘--disable-FEATURE’
|
||||
Enable or disable the optional FEATURE. See “Optional Features”.
|
||||
|
||||
‘--with-PACKAGE’
|
||||
‘--without-PACKAGE’
|
||||
Use or omit PACKAGE when building. See “Optional Features”.
|
||||
|
||||
‘--quiet’
|
||||
‘--silent’
|
||||
‘-q’
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to ‘/dev/null’ (any error
|
||||
messages will still be shown).
|
||||
|
||||
‘--no-create’
|
||||
‘-n’
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
‘configure’ also recognizes several environment variables, and accepts
|
||||
some other, less widely useful, options. Run ‘configure --help’ for
|
||||
more details.
|
||||
|
||||
Copyright notice
|
||||
================
|
||||
|
||||
Copyright © 1994–1996, 1999–2002, 2004–2017, 2020–2024 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
49
docs/INSTALL.quick
Normal file
49
docs/INSTALL.quick
Normal file
|
@ -0,0 +1,49 @@
|
|||
Full installation details are included in ../README.md. If you are simply
|
||||
upgrading an old version of man-db and know that all of the defaults
|
||||
are correct (your config file will NOT be overwritten), you may follow
|
||||
the Quick install below.
|
||||
|
||||
man-db requires several external packages:
|
||||
|
||||
* libpipeline >= 1.5.0 (https://libpipeline.gitlab.io/libpipeline/)
|
||||
* flex >= 2.5.30 (https://github.com/westes/flex)
|
||||
* an nroff/troff formatter, one of:
|
||||
groff >= 1.21 (https://www.gnu.org/software/groff/)
|
||||
Heirloom Documentation Tools
|
||||
(https://n-t-roff.github.io/heirloom/doctools.html)
|
||||
* a database library, one of:
|
||||
GDBM (https://www.gnu.org.ua/software/gdbm/)
|
||||
Berkeley DB < 6
|
||||
NDBM
|
||||
|
||||
and on systems without GNU libc:
|
||||
|
||||
* libiconv >= 1.8 (https://www.gnu.org/software/libiconv/)
|
||||
|
||||
Some other packages are recommended and used if available:
|
||||
|
||||
* zlib (https://zlib.net/)
|
||||
* libseccomp (https://github.com/seccomp/libseccomp)
|
||||
|
||||
Quick INSTALL
|
||||
=============
|
||||
|
||||
* RUN `./configure <appropriate flags>'
|
||||
* EDIT configuration files/headers if necessary
|
||||
* RUN `make <appropriate variable definitions>'
|
||||
* RUN `make install <appropriate variable definitions>'
|
||||
|
||||
Note (1): If you don't know what <appropriate flags> or <appropriate
|
||||
variable definitions> mean, you should be reading/following the install
|
||||
procedure in ../README.md instead.
|
||||
|
||||
Note (2): You must not replace the `make install' step by copying the
|
||||
binaries to wherever you may want them. Various paths are hard coded
|
||||
into the binaries during `make' and unless you know exactly what you
|
||||
are doing, it is likely that run time errors will occur.
|
||||
|
||||
Note (3): If you run make with path/prefix/name_transformation variable
|
||||
definitions such as `make prefix=/tmp zsoelim=soelim', you must supply
|
||||
the same variable definitions to `make install'. In general it is
|
||||
better to run `./configure' with the appropriate options rather than
|
||||
waiting until the make stage of the build.
|
13
docs/Makefile.am
Normal file
13
docs/Makefile.am
Normal file
|
@ -0,0 +1,13 @@
|
|||
dist_noinst_DATA = \
|
||||
COPYING.GPLv2 \
|
||||
COPYING.LIB \
|
||||
HACKING.md \
|
||||
TODO \
|
||||
manpage.example \
|
||||
manpage.example.mdoc \
|
||||
manpage.example.pod \
|
||||
manpage.example.sgml
|
||||
|
||||
EXTRA_DIST = \
|
||||
INSTALL.autoconf \
|
||||
INSTALL.quick
|
2210
docs/Makefile.in
Normal file
2210
docs/Makefile.in
Normal file
File diff suppressed because it is too large
Load diff
20
docs/TODO
Normal file
20
docs/TODO
Normal file
|
@ -0,0 +1,20 @@
|
|||
In progress:
|
||||
|
||||
* store .so link in the db.
|
||||
* reduce wasted/duplicated text stored within the databases.
|
||||
10-20% database size reduction so far.
|
||||
* pipeline library:
|
||||
- make COMMAND_FUNCTION child reentrant, so it doesn't have to be a
|
||||
subprocess; will save lots of forks of zlib children in mandb
|
||||
|
||||
In need of attention:
|
||||
|
||||
* clear up the use of troff and/or groff
|
||||
* complete configuration file redesign to allow better dynamic determination
|
||||
of programs/paths/extensions etc.
|
||||
* multiple debug levels?
|
||||
|
||||
Case-insensitive lookup transition:
|
||||
|
||||
* Solaris layout is broken.
|
||||
* Need to make sure pointers trigger an exact-case lookup [done for whatis].
|
114
docs/manpage.example
Normal file
114
docs/manpage.example
Normal file
|
@ -0,0 +1,114 @@
|
|||
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.\"
|
||||
.\" This template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||
.\"
|
||||
.TH FOO SECTION
|
||||
.SH NAME
|
||||
foo, bar \- programs to do something
|
||||
.SH SYNOPSIS
|
||||
A short usage summary.
|
||||
.PP
|
||||
.B foo
|
||||
{
|
||||
.BR this | that
|
||||
}
|
||||
[
|
||||
.B -flags
|
||||
]
|
||||
[
|
||||
.B \-o
|
||||
.I option
|
||||
]
|
||||
.I argument
|
||||
[
|
||||
.I more...
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.\" Putting a newline after each sentence can generate better output.
|
||||
Long drawn-out discussion of the program.
|
||||
It's a good idea to break this up into subsections using the .SS macro,
|
||||
like these:
|
||||
.SS "A Sample Subsection"
|
||||
.SS "Yet Another Sample Subsection"
|
||||
References to the
|
||||
.BR foo (SECTION)
|
||||
(or other) manual page should use the .BR macro as here.
|
||||
.PP
|
||||
Use the .PP macro to start a new paragraph within a section.
|
||||
.SH OPTIONS
|
||||
Some people make this separate from the description.
|
||||
The following style is typically used to document options:
|
||||
.TP
|
||||
.BR this | that
|
||||
The user MUST specify either
|
||||
.B this
|
||||
or
|
||||
.B that
|
||||
to run the program.
|
||||
The { and } braces mean one of the enclosed is required.
|
||||
The bar (|) separates exclusive options (i.e. you cannot have both at once).
|
||||
.TP
|
||||
.B \-o
|
||||
Pass the user-supplied
|
||||
.I option
|
||||
to
|
||||
.B foo
|
||||
to change its behaviour.
|
||||
The fact that
|
||||
.I option
|
||||
is underlined or in italics means that the user replaces it with a valid
|
||||
value for this option.
|
||||
The [ and ] brackets mean it isn't required.
|
||||
.IP
|
||||
Use \(oq\e-\(cq rather than \(oq-\(cq for dashes in command-line options.
|
||||
\(oq-\(cq means hyphen, and formats differently when using certain output
|
||||
devices.
|
||||
.TP
|
||||
.I argument
|
||||
The last
|
||||
.I argument
|
||||
is required, because it is not in brackets.
|
||||
.TP
|
||||
.I more
|
||||
means that the user can optionally specify additional arguments at the end.
|
||||
The ellipses (...) indicate one or more of this parameter is allowed.
|
||||
.SH "RETURN VALUE"
|
||||
What the program or function returns if successful.
|
||||
.SH ERRORS
|
||||
Return codes, either exit status or errno settings.
|
||||
.SH EXAMPLES
|
||||
Give some example uses of the program.
|
||||
.SH ENVIRONMENT
|
||||
Environment variables this program might care about.
|
||||
.SH FILES
|
||||
All files used by the program.
|
||||
Typical usage is like this:
|
||||
.br
|
||||
.nf
|
||||
.\" set tabstop to longest possible filename, plus a wee bit
|
||||
.ta \w'/usr/lib/perl/getopts.pl 'u
|
||||
\fI/usr/man\fR default man tree
|
||||
\fI/usr/man/man*/*.*\fR unformatted (nroff source) man pages
|
||||
.SH NOTES
|
||||
Miscellaneous commentary.
|
||||
.SH CAVEATS
|
||||
Things to take special care with, sometimes called WARNINGS.
|
||||
.SH DIAGNOSTICS
|
||||
All the possible error messages the program can print out,
|
||||
what they mean, and how to correct them if applicable.
|
||||
.SH BUGS
|
||||
Things that are broken or just don't work quite right.
|
||||
.SH RESTRICTIONS
|
||||
Bugs you don't plan to fix. :-)
|
||||
.SH AUTHOR
|
||||
Who wrote it (or AUTHORS if multiple).
|
||||
.SH HISTORY
|
||||
Programs derived from other sources sometimes have this.
|
||||
.SH "SEE ALSO"
|
||||
.\" Always quote multiple words for .SH
|
||||
Other man pages to check out, like
|
||||
.BR man (1),
|
||||
.BR man (7),
|
||||
.BR mandb (8),
|
||||
.BR catman (8).
|
134
docs/manpage.example.mdoc
Normal file
134
docs/manpage.example.mdoc
Normal file
|
@ -0,0 +1,134 @@
|
|||
.\" -mdoc is a groff macro package supporting logical formatting. The author
|
||||
.\" of this example considers it the best package available in groff for
|
||||
.\" writing manual pages. If you're used to the traditional Unix -man
|
||||
.\" macros, give this a try; it doesn't take long to learn. groff_mdoc(7) is
|
||||
.\" a complete reference manual.
|
||||
.\"
|
||||
.\" Many of the macros below stack, so ".Op Ar foo" means an optional
|
||||
.\" argument called "foo", while ".Ar foo" means an argument called "foo".
|
||||
.\" Where you see things like ".Ql .Fl" below, the second dot causes ".Fl"
|
||||
.\" to be interpreted as ordinary text rather than calling the .Fl macro.
|
||||
.Dd June 4, 2005
|
||||
.Os FooOS
|
||||
.Dt FOO 1
|
||||
.Sh NAME
|
||||
.Nm foo
|
||||
.Nd program to do something
|
||||
.Sh SYNOPSIS
|
||||
A short usage summary.
|
||||
.Pp
|
||||
.Nm
|
||||
.Brq Cm this | Cm that
|
||||
.Op Fl flags
|
||||
.Op Fl o Ar option
|
||||
.Ar argument
|
||||
.\" Punctuation is treated specially by -mdoc, and often gets pushed up
|
||||
.\" against whatever precedes it without the special formatting, so having
|
||||
.\" an underlined argument immediately followed by a normal comma is easy.
|
||||
.\" If you want to make sure this special handling isn't applied, put a
|
||||
.\" zero-width space, \&, before the punctuation.
|
||||
.Op Ar more \&...
|
||||
.Sh DESCRIPTION
|
||||
.\" Putting a newline after each sentence generates better output.
|
||||
Long drawn-out discussion of the program.
|
||||
It's a good idea to break this up into subsections using the
|
||||
.Ql .Ss
|
||||
macro, like these:
|
||||
.Ss A Sample Subsection
|
||||
.Ss Yet Another Sample Subsection
|
||||
.Pp
|
||||
References to the
|
||||
.Xr foo SECTION
|
||||
(or other) manual page should use the
|
||||
.Ql .Xr
|
||||
macro as here.
|
||||
References to the
|
||||
.Sx OPTIONS
|
||||
(or other) section within this manual page should use the
|
||||
.Ql .Sx
|
||||
macro as here.
|
||||
.Pp
|
||||
Use the
|
||||
.Ql .Pp
|
||||
macro to start a new paragraph within a section.
|
||||
.Sh OPTIONS
|
||||
Some people make this separate from the description.
|
||||
The following list style is typically used to document options:
|
||||
.Bl -tag -width 4n
|
||||
.It Cm this | Cm that
|
||||
The user MUST specify either
|
||||
.Cm this
|
||||
or
|
||||
.Cm that
|
||||
to run the program.
|
||||
The { and } braces (using the
|
||||
.Ql .Brq
|
||||
macro) mean one of the enclosed is required.
|
||||
The bar (|) separates exclusive options (i.e. you cannot have both at once).
|
||||
.It Fl o
|
||||
Pass the user-supplied
|
||||
.Ar option
|
||||
to
|
||||
.Nm
|
||||
to change its behaviour.
|
||||
The fact that
|
||||
.Ar option
|
||||
is underlined or in italics means that the user replaces it with a valid
|
||||
value for this option.
|
||||
The [ and ] brackets (using the
|
||||
.Ql .Op
|
||||
macro) mean it isn't required.
|
||||
.Pp
|
||||
Use the
|
||||
.Ql .Fl
|
||||
macro to render dashes in command-line option.
|
||||
.It Ar argument
|
||||
The last
|
||||
.Ar argument
|
||||
is required, because it is not in brackets.
|
||||
.It Ar more
|
||||
means that the user can optionally specify additional arguments at the end.
|
||||
The ellipses
|
||||
.Pf ( Ar ... )
|
||||
indicate one or more of this parameter is allowed.
|
||||
.\" Remember to close lists you open with .Bl.
|
||||
.El
|
||||
.Sh RETURN VALUE
|
||||
What the program or function returns if successful.
|
||||
.Sh ERRORS
|
||||
Return codes, either exit status or errno settings.
|
||||
.Sh EXAMPLES
|
||||
Give some example uses of the program.
|
||||
.Sh ENVIRONMENT
|
||||
Environment variables this program might care about.
|
||||
.Sh FILES
|
||||
All files used by the program.
|
||||
Typical usage is like this:
|
||||
.Pp
|
||||
.Bl -tag -width "/usr/man/man*/*.*" -compact
|
||||
.It Pa /usr/man
|
||||
default man tree
|
||||
.It Pa /usr/man/man*/*.*
|
||||
unformatted (nroff source) man pages
|
||||
.El
|
||||
.Sh NOTES
|
||||
Miscellaneous commentary.
|
||||
.Sh CAVEATS
|
||||
Things to take special care with, sometimes called WARNINGS.
|
||||
.Sh DIAGNOSTICS
|
||||
All the possible error messages the program can print out,
|
||||
what they mean, and how to correct them if applicable.
|
||||
.Sh BUGS
|
||||
Things that are broken or just don't work quite right.
|
||||
.Sh RESTRICTIONS
|
||||
Bugs you don't plan to fix. :-)
|
||||
.Sh AUTHOR
|
||||
Who wrote it (or AUTHORS if multiple).
|
||||
.Sh HISTORY
|
||||
Programs derived from other sources sometimes have this.
|
||||
.Sh SEE ALSO
|
||||
Other man pages to check out, like
|
||||
.Xr man 1 ,
|
||||
.Xr man 7 ,
|
||||
.Xr mandb 8 ,
|
||||
.Xr catman 8 .
|
126
docs/manpage.example.pod
Normal file
126
docs/manpage.example.pod
Normal file
|
@ -0,0 +1,126 @@
|
|||
=head1 NAME
|
||||
|
||||
foo, bar - programs to do something
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
A short usage summary.
|
||||
|
||||
B<foo> { B<this>|B<that> } [ B<-flags> ] [ B<-o> I<option> ] I<argument> [ I<more...> ]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Long drawn-out discussion of the program. It's a good idea to break this
|
||||
up into subsections using "=head2" directives, like these:
|
||||
|
||||
=head2 A Sample Subsection
|
||||
|
||||
=head2 Yet Another Sample Subsection
|
||||
|
||||
References to the foo(1) (or other) manual page should be written normally
|
||||
as here; B<pod2man> will usually guess the correct formatting. Use S<L><>
|
||||
(e.g. L<foo(SECTION)>) if you need to force this.
|
||||
|
||||
Paragraphs are separated by blank lines.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
Some people make this separate from the description.
|
||||
|
||||
The following style is typically used to document options:
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<this>|B<that>
|
||||
|
||||
The user MUST specify either B<this> or B<that> to run the program. The {
|
||||
and } braces mean one of the enclosed is required. The bar (|) separates
|
||||
exclusive options (i.e. you cannot have both at once).
|
||||
|
||||
=item B<-o>
|
||||
|
||||
Pass the user-supplied I<option> to B<foo> to change its behaviour. The
|
||||
fact that I<option> is underlined or in italics means that the user replaces
|
||||
it with a valid value for this option. The [ and ] brackets mean it isn't
|
||||
required.
|
||||
|
||||
=item I<argument>
|
||||
|
||||
The last I<argument> is required, because it is not in brackets.
|
||||
|
||||
=item I<more>
|
||||
|
||||
means that the user can optionally specify additional arguments at the end.
|
||||
The ellipses (...) indicate one or more of this parameter is allowed.
|
||||
|
||||
=back
|
||||
|
||||
=head1 RETURN VALUE
|
||||
|
||||
What the program or function returns if successful.
|
||||
|
||||
=head1 ERRORS
|
||||
|
||||
Return codes, either exit status or errno settings.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
Give some example uses of the program.
|
||||
|
||||
=head1 ENVIRONMENT
|
||||
|
||||
Environment variables this program might care about.
|
||||
|
||||
=head1 FILES
|
||||
|
||||
All files used by the program. Typical usage is like this:
|
||||
|
||||
=over 8
|
||||
|
||||
=item F</usr/man>
|
||||
|
||||
default man tree
|
||||
|
||||
=item F</usr/man/man*/*.*>
|
||||
|
||||
unformatted (nroff source) man pages
|
||||
|
||||
=back
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Miscellaneous commentary.
|
||||
|
||||
=head1 CAVEATS
|
||||
|
||||
Things to take special care with, sometimes called WARNINGS.
|
||||
|
||||
=head1 DIAGNOSTICS
|
||||
|
||||
All the possible error messages the program can print out, what they
|
||||
mean, and how to correct them if applicable.
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Things that are broken or just don't work quite right.
|
||||
|
||||
=head1 RESTRICTIONS
|
||||
|
||||
Bugs you don't plan to fix. :-)
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Who wrote it (or AUTHORS if multiple).
|
||||
|
||||
This example was constructed by Colin Watson <S<cjwatson@debian.org>>
|
||||
from a template provided by Tom Christiansen <S<tchrist@jhereg.perl.com>>.
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
Programs derived from other sources sometimes have this.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Other man pages to check out, like man(1), man(7), mandb(8), catman(8).
|
||||
|
||||
For this example, see pod2man(1) for more details.
|
232
docs/manpage.example.sgml
Normal file
232
docs/manpage.example.sgml
Normal file
|
@ -0,0 +1,232 @@
|
|||
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
|
||||
|
||||
<!-- Process this file with docbook-to-man to generate an nroff manual
|
||||
page: `docbook-to-man manpage.sgml > manpage.1'. You may view
|
||||
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
|
||||
less'. A typical entry in a Makefile or Makefile.am is:
|
||||
|
||||
manpage.1: manpage.sgml
|
||||
docbook-to-man $< > $@
|
||||
-->
|
||||
|
||||
<!-- This example was constructed by Colin Watson
|
||||
<email>cjwatson@debian.org</email>, based on a man page template
|
||||
provided by Tom Christiansen <email>tchrist@jhereg.perl.com</email>
|
||||
and a DocBook man page example by Craig Small
|
||||
<email>csmall@debian.org</email>.
|
||||
-->
|
||||
|
||||
<!-- Fill in the various UPPER CASE things here. -->
|
||||
<!ENTITY manfirstname "<firstname>FIRSTNAME</firstname>">
|
||||
<!ENTITY mansurname "<surname>SURNAME</surname>">
|
||||
<!-- Please adjust the date whenever revising the manpage. -->
|
||||
<!ENTITY mandate "<date>DATE</date>">
|
||||
<!-- SECTION should be 1-8, maybe with subsection. Other parameters are
|
||||
allowed: see man(7), man(1). -->
|
||||
<!ENTITY mansection "<manvolnum>SECTION</manvolnum>">
|
||||
<!ENTITY manemail "<email>EMAIL</email>">
|
||||
<!ENTITY manusername "USERNAME">
|
||||
<!ENTITY manucpackage "<refentrytitle>UCPACKAGE</refentrytitle>">
|
||||
<!ENTITY manpackage "PACKAGE">
|
||||
]>
|
||||
|
||||
<refentry>
|
||||
<refentryinfo>
|
||||
<address>
|
||||
&manemail;
|
||||
</address>
|
||||
<author>
|
||||
&manfirstname;
|
||||
&mansurname;
|
||||
</author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder>&manusername;</holder>
|
||||
</copyright>
|
||||
&mandate;
|
||||
</refentryinfo>
|
||||
<refmeta>
|
||||
&manucpackage;
|
||||
|
||||
&mansection;
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>&manpackage;</refname>
|
||||
|
||||
<refpurpose>program to do something</refpurpose>
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>&manpackage;</command>
|
||||
|
||||
<group choice="req"><arg>this</arg><arg>that</arg></group>
|
||||
<group choice="opt"><arg>-flags</arg></group>
|
||||
<group choice="opt">
|
||||
<arg>-o <replaceable>option</replaceable></arg>
|
||||
</group>
|
||||
<arg>argument</arg>
|
||||
<arg rep="repeat" choice="opt"><replaceable>more</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
<refsect1>
|
||||
<title>DESCRIPTION</title>
|
||||
|
||||
<para>Long drawn-out discussion of <command>&manpackage;</command>.
|
||||
It's a good idea to break this up into subsections, like these:</para>
|
||||
|
||||
<refsect2>
|
||||
<title>A Sample Subsection</title>
|
||||
<para></para>
|
||||
</refsect2>
|
||||
<refsect2>
|
||||
<title>Yet Another Sample Subsection</title>
|
||||
|
||||
<para>References to the
|
||||
<citerefentry>
|
||||
<refentrytitle>foo</refentrytitle><manvolnum>SECTION</manvolnum>
|
||||
</citerefentry> (or other) manual page should use the
|
||||
<markup><citerefentry></markup> element as here.
|
||||
</para>
|
||||
|
||||
<para>Each paragraph within a section is contained within a
|
||||
<markup><para></markup> tag.</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>OPTIONS</title>
|
||||
|
||||
<para>Some people make this separate from the description.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>this</option>|<option>that</option></term>
|
||||
<listitem>
|
||||
<para>The user MUST specify either <option>this</option> or
|
||||
<option>that</option> to run the program. The { and } braces
|
||||
mean one of the enclosed is required. The bar (|) separates
|
||||
exclusive options (i.e. you cannot have both at once.)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-o</option></term>
|
||||
<listitem>
|
||||
<para>Pass the user-supplied <replaceable>option</replaceable> to
|
||||
<command>foo</command> to change its behaviour. The fact that
|
||||
<replaceable>option</replaceable> is underlined or in italics
|
||||
means that the user replaces it with a valid value for this
|
||||
option. The [ and ] brackets mean it isn't required.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>argument</option></term>
|
||||
<listitem>
|
||||
<para>The last <option>argument</option> is required, because it
|
||||
is not in brackets.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>more</option></term>
|
||||
<listitem>
|
||||
<para>means that the user can optionally specify additional
|
||||
arguments at the end. The ellipses (...) indicate one or more of
|
||||
this parameter is allowed.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>RETURN VALUE</title>
|
||||
|
||||
<para>What the program or function returns if successful.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>ERRORS</title>
|
||||
|
||||
<para>Return codes, either exit status or errno settings.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>EXAMPLES</title>
|
||||
|
||||
<para>Give some example uses of the program.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>ENVIRONMENT</title>
|
||||
|
||||
<para>Environment variables this program might care about.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>FILES</title>
|
||||
|
||||
<para>All files used by the program. Typical usage is like this:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>/usr/man</filename></term>
|
||||
<listitem><para>default man tree</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>/usr/man/man*/*.*</filename></term>
|
||||
<listitem><para>unformatted (nroff source) man pages</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>NOTES</title>
|
||||
|
||||
<para>Miscellaneous commentary.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>CAVEATS</title>
|
||||
|
||||
<para>Things to take special care with, sometimes called WARNINGS.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>DIAGNOSTICS</title>
|
||||
|
||||
<para>All the possible error messages the program can print out, what
|
||||
they mean, and how to correct them if applicable.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>BUGS</title>
|
||||
|
||||
<para>Things that are broken or just don't work quite right.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>RESTRICTIONS</title>
|
||||
|
||||
<para>Bugs you don't plan to fix. :-)</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>AUTHOR</title>
|
||||
|
||||
<para>Who wrote it (or AUTHORS if multiple).</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>HISTORY</title>
|
||||
|
||||
<para>Programs derived from other sources sometimes have this.</para>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>SEE ALSO</title>
|
||||
|
||||
<para>Other man pages to check out, like man(1), man(7), mandb(8),
|
||||
catman(8).</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:t
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:2
|
||||
sgml-indent-data:t
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:nil
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
-->
|
Loading…
Add table
Add a link
Reference in a new issue