Import of stripped down GNU texinfo 4.5
This commit is contained in:
parent
03e8b201d8
commit
a889f1983f
@ -1,3 +1,12 @@
|
||||
Richard Stallman, Brian Fox, Bob Chassell, Noah Friedman, Paul Rubin,
|
||||
Karl Berry, Eli Zaretskii, and many others.
|
||||
$Id: AUTHORS,v 1.4 2002/10/09 22:23:44 karl Exp $
|
||||
Texinfo authors.
|
||||
|
||||
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.
|
||||
|
||||
Richard Stallman, Brian Fox, Bob Chassell, Noah Friedman, Paul Rubin,
|
||||
Karl Berry, Eli Zaretskii, Philippe Martin, and many others.
|
||||
|
||||
Please see http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for
|
||||
the translation teams for a given language LL.
|
||||
|
@ -1,340 +1,11 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
The files in here are all Copyright (C) Free Software Foundation, and
|
||||
are under three different licenses:
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
* GPL - (text in doc/COPYING)
|
||||
* LGPL - (text in doc/COPYING.LIB)
|
||||
* FDL - (text in doc/COPYING.DOC and doc/fdl.texi)
|
||||
|
||||
Preamble
|
||||
The source files are grouped by license into their respective
|
||||
directories. All documents in doc/ contain the relevant licensing
|
||||
information.
|
||||
|
||||
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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General
|
||||
Public License instead of this License.
|
||||
|
@ -1,7 +1,8 @@
|
||||
GNU Free Documentation License
|
||||
Version 1.1, March 2000
|
||||
Version 1.2, November 2002
|
||||
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
@ -10,12 +11,12 @@
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
written document "free" in the sense of freedom: to assure everyone
|
||||
the effective freedom to copy and redistribute it, with or without
|
||||
modifying it, either commercially or noncommercially. Secondarily,
|
||||
this License preserves for the author and publisher a way to get
|
||||
credit for their work, while not being considered responsible for
|
||||
modifications made by others.
|
||||
functional and useful document "free" in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
@ -33,11 +34,15 @@ principally for works whose purpose is instruction or reference.
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work that contains a
|
||||
notice placed by the copyright holder saying it can be distributed
|
||||
under the terms of this License. The "Document", below, refers to any
|
||||
such manual or work. Any member of the public is a licensee, and is
|
||||
addressed as "you".
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The "Document", below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as "you". You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
@ -47,7 +52,7 @@ A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (For example, if the Document is in part a
|
||||
within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
@ -56,33 +61,40 @@ them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License.
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License.
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, whose contents can be viewed and edited directly and
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup has been designed to thwart or discourage
|
||||
subsequent modification by readers is not Transparent. A copy that is
|
||||
not "Transparent" is called "Opaque".
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML designed for human modification. Opaque formats include
|
||||
PostScript, PDF, proprietary formats that can be read and edited only
|
||||
by proprietary word processors, SGML or XML for which the DTD and/or
|
||||
HTML, PostScript or PDF designed for human modification. Examples of
|
||||
transparent image formats include PNG, XCF and JPG. Opaque formats
|
||||
include proprietary formats that can be read and edited only by
|
||||
proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML produced by some word processors for output
|
||||
purposes only.
|
||||
machine-generated HTML, PostScript or PDF produced by some word
|
||||
processors for output purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
@ -91,6 +103,21 @@ formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section "Entitled XYZ" means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as "Acknowledgements",
|
||||
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section "Entitled XYZ" according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
@ -110,9 +137,10 @@ you may publicly display copies.
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies of the Document numbering more than 100,
|
||||
and the Document's license notice requires Cover Texts, you must enclose
|
||||
the copies in covers that carry, clearly and legibly, all these Cover
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
@ -130,16 +158,15 @@ pages.
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a publicly-accessible computer-network location containing a complete
|
||||
Transparent copy of the Document, free of added material, which the
|
||||
general network-using public has access to download anonymously at no
|
||||
charge using public-standard network protocols. If you use the latter
|
||||
option, you must take reasonably prudent steps, when you begin
|
||||
distribution of Opaque copies in quantity, to ensure that this
|
||||
Transparent copy will remain thus accessible at the stated location
|
||||
until at least one year after the last time you distribute an Opaque
|
||||
copy (directly or through your agents or retailers) of that edition to
|
||||
the public.
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
@ -163,7 +190,8 @@ A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has less than five).
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
@ -175,10 +203,10 @@ F. Include, immediately after the copyright notices, a license notice
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section entitled "History", and its title, and add to
|
||||
it an item stating at least the title, year, new authors, and
|
||||
I. Preserve the section Entitled "History", Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section entitled "History" in the Document, create one
|
||||
there is no section Entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
@ -189,17 +217,18 @@ J. Preserve the network location, if any, given in the Document for
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. In any section entitled "Acknowledgements" or "Dedications",
|
||||
preserve the section's title, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements
|
||||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||||
Preserve the Title of the section, and preserve in the section all
|
||||
the substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section entitled "Endorsements". Such a section
|
||||
M. Delete any section Entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section as "Endorsements"
|
||||
N. Do not retitle any existing section to be Entitled "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
O. Preserve any Warranty Disclaimers.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
@ -208,7 +237,7 @@ of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section entitled "Endorsements", provided it contains
|
||||
You may add a section Entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
@ -236,7 +265,7 @@ License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice.
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
@ -247,11 +276,11 @@ author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections entitled "History"
|
||||
in the various original documents, forming one section entitled
|
||||
"History"; likewise combine any sections entitled "Acknowledgements",
|
||||
and any sections entitled "Dedications". You must delete all sections
|
||||
entitled "Endorsements."
|
||||
In the combination, you must combine any sections Entitled "History"
|
||||
in the various original documents, forming one section Entitled
|
||||
"History"; likewise combine any sections Entitled "Acknowledgements",
|
||||
and any sections Entitled "Dedications". You must delete all sections
|
||||
Entitled "Endorsements".
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
@ -272,18 +301,20 @@ other respects regarding verbatim copying of that document.
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, does not as a whole count as a Modified Version
|
||||
of the Document, provided no compilation copyright is claimed for the
|
||||
compilation. Such a compilation is called an "aggregate", and this
|
||||
License does not apply to the other self-contained works thus compiled
|
||||
with the Document, on account of their being thus compiled, if they
|
||||
are not themselves derivative works of the Document.
|
||||
distribution medium, is called an "aggregate" if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one quarter
|
||||
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that surround only the Document within the aggregate.
|
||||
Otherwise they must appear on covers around the whole aggregate.
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
@ -294,10 +325,17 @@ Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License provided that you also include the
|
||||
original English version of this License. In case of a disagreement
|
||||
between the translation and the original English version of this
|
||||
License, the original English version will prevail.
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warrany Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled "Acknowledgements",
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
@ -335,19 +373,23 @@ To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
|
||||
If you have no Invariant Sections, write "with no Invariant Sections"
|
||||
instead of saying which ones are invariant. If you have no
|
||||
Front-Cover Texts, write "no Front-Cover Texts" instead of
|
||||
"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the "with...Texts." line with this:
|
||||
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,183 +1,27 @@
|
||||
Basic Installation
|
||||
==================
|
||||
$Id: INSTALL,v 1.2 2002/09/11 16:32:09 karl Exp $
|
||||
|
||||
These are generic installation instructions.
|
||||
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.
|
||||
|
||||
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, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
For generic installation instructions on compiling and installing this
|
||||
Automake-based distribution, please read the file `INSTALL.generic'.
|
||||
|
||||
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 at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
Installation notes specific to Texinfo:
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
* The Info tree uses a file `dir' as its root node; the `dir-example'
|
||||
file in this distribution is included as a possible starting point.
|
||||
Use it, modify it, or ignore it just as you like.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
* You can create a file texinfo.cnf to be read by TeX when
|
||||
processing Texinfo manuals. For example, you might like to use
|
||||
@afourpaper by default. See the `Preparing for TeX' node in
|
||||
texinfo.txi for more details. You don't have to create the file if
|
||||
you have nothing to put in it.
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. 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 get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
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 architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as 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 `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' 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.
|
||||
|
||||
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'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
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.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--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).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
* If your info files are not in $prefix/info, you may wish to add a line
|
||||
#define DEFAULT_INFOPATH "/mydir1:/mydir2:..."
|
||||
to config.h after running configure.
|
||||
|
||||
* For instructions on compiling this distribution with DJGPP tools
|
||||
for MS-DOS and MS-Windows, see the file djgpp/README.
|
||||
|
@ -1,10 +1,13 @@
|
||||
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01
|
||||
Free Software Foundation, Inc.
|
||||
$Id: INTRODUCTION,v 1.2 2002/09/11 16:32:09 karl Exp $
|
||||
Getting started with Texinfo.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
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.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
|
||||
|
||||
|
||||
Getting Started with Texinfo
|
||||
|
@ -1,13 +1,13 @@
|
||||
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
|
||||
|
||||
$Id: NEWS,v 1.34 2003/02/05 00:54:07 karl Exp $
|
||||
This file records noteworthy changes.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003 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.
|
||||
|
||||
|
||||
*** IMPORTANT NEWS FOR ALL AUTHORS OF TEXINFO MANUALS ***
|
||||
|
||||
@ -20,6 +20,74 @@ formats. The manual has detailed explanations and examples. For
|
||||
convenience, here's a url to one of the relevant sections:
|
||||
http://texinfo.org/manual/Document-Permissions.html
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
4.5 (4 February 2003)
|
||||
* info:
|
||||
. a bug in 4.4 prevented compressed info files from being found.
|
||||
* Distribution:
|
||||
. detect sys/ptem.h on Solaris.
|
||||
|
||||
|
||||
4.4 (31 January 2003)
|
||||
* Language:
|
||||
. The ' (ASCII apostrophe/right quote) character is finally allowed in
|
||||
node and anchor names. Thus, after installing this texinfo.tex,
|
||||
existing .aux files will cause errors! Remove them and rerun TeX to
|
||||
generate good ones.
|
||||
. @value constructs are now expanded in the filename arguments to
|
||||
@include and @verbatiminclude.
|
||||
* makeinfo:
|
||||
. bug fix: @copying text is now reflected in tag table positions;
|
||||
before, nodes may not have been found with a long-enough @copying.
|
||||
. bug fix: html @verb arg is quoted properly, and does not imply
|
||||
a paragraph break.
|
||||
* texinfo.tex:
|
||||
. @smallexample and the like now output in a smaller font (9pt) in all
|
||||
paper formats, not just @smallbook and @afourpaper.
|
||||
. new translation txi-tr.tex.
|
||||
. bug fix: <>| and other characters do not disappear when they are
|
||||
first on a line in @verbatim.
|
||||
* install-info:
|
||||
. bug fix: don't translate the `* Menu' info keyword.
|
||||
* info:
|
||||
. CTRL-H is treated like DEL in incremental search.
|
||||
. arrow keys once again work in isearch contexts under Solaris.
|
||||
* infokey:
|
||||
. use .info key bindings before defaults.
|
||||
. allow prefix keys to be disabled.
|
||||
* Distribution:
|
||||
. update to GNU FDL 1.2 (http://www.gnu.org/licenses/fdl.html).
|
||||
. getopt and other common library files updated from gnulib
|
||||
(http://savannah.gnu.org/projects/gnulib/).
|
||||
. autoconf 2.57, automake 1.7.2.
|
||||
|
||||
|
||||
4.3 (14 November 2002)
|
||||
* Language:
|
||||
. new command @tie{} to do a real tie (unbreakable interword space).
|
||||
* makeinfo:
|
||||
. html output for @defun and friends now has font changes.
|
||||
. html output has some class attributes.
|
||||
. xml and docbook output improved in many details.
|
||||
* texinfo.tex:
|
||||
. new Italian translations, txi-it.tex.
|
||||
. pdf bookmarks for unnumbered sections work.
|
||||
. type name for @defun and friends no longer extends into margin.
|
||||
* info:
|
||||
. automatic-footnotes now off by default, for emacs compatibility.
|
||||
. crash when MALLOC_CHECK_=2 fixed.
|
||||
* install-info:
|
||||
. new option --infodir synonym for --info-dir, for compatibility with
|
||||
the Debian install-info.
|
||||
. support for bzip2-compressed files.
|
||||
* texindex:
|
||||
. omit initial if the entire index is under one character.
|
||||
* Distribution:
|
||||
. development sources now available under CVS, see
|
||||
http://savannah.gnu.org/projects/texinfo/
|
||||
. Turkish message translation.
|
||||
. gettext 0.11.5, autoconf 2.54, automake 1.7.1.
|
||||
|
||||
|
||||
4.2 (1 April 2002)
|
||||
@ -43,7 +111,6 @@ convenience, here's a url to one of the relevant sections:
|
||||
at make time, to appease Automake's make distcheck.
|
||||
. gettext 0.11.1, autoconf 2.53, automake 1.6 (with install-info kludge).
|
||||
|
||||
|
||||
|
||||
4.1 (4 March 2002)
|
||||
* Language:
|
||||
@ -100,7 +167,8 @@ convenience, here's a url to one of the relevant sections:
|
||||
(rather than in addition to) the url for info and dvi output.
|
||||
. @footnote works in an @item for a @table.
|
||||
* texinfo.tex:
|
||||
. latest version always at ftp://ftp.gnu.org/gnu/texinfo.tex (and mirrors).
|
||||
. latest version always at ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
|
||||
(and mirrors).
|
||||
. implements @macro.
|
||||
. implements @paragraphindent (except asis).
|
||||
. @emph and @i use true italic type (cmti) instead of slanted (cmsl).
|
||||
|
@ -1,33 +1,39 @@
|
||||
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
|
||||
|
||||
|
||||
$Id: README,v 1.14 2003/01/03 20:17:37 karl Exp $
|
||||
This is the README file for the GNU Texinfo distribution.
|
||||
The primary distribution point is ftp://ftp.gnu.org/gnu/texinfo/
|
||||
and the primary home page is http://www.gnu.org/software/texinfo/,
|
||||
secondary home page at http://texinfo.org/.
|
||||
|
||||
Mailing lists:
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003 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.
|
||||
|
||||
See ./INSTALL* for installation instructions.
|
||||
|
||||
Primary distribution point: ftp://ftp.gnu.org/gnu/texinfo/
|
||||
(list of mirrors at: http://www.gnu.org/prep/ftp.html)
|
||||
|
||||
Home page: http://www.gnu.org/software/texinfo/
|
||||
(list of mirrors at: http://www.gnu.org/server/list-mirrors.html)
|
||||
This page includes links to other Texinfo-related programs.
|
||||
|
||||
Mailing lists and archives:
|
||||
- bug-texinfo@gnu.org for bug reports or enhancement suggestions,
|
||||
archived at ftp://ftp-mailing-list-archives.gnu.org/bug-texinfo/.
|
||||
- help-texinfo@gnu.org for authoring questions and general discussion.
|
||||
archived at ftp://ftp-mailing-list-archives.gnu.org/help-texinfo/.
|
||||
archive: http://mail.gnu.org/pipermail/bug-texinfo
|
||||
- help-texinfo@gnu.org for authoring questions and general discussion,
|
||||
archive: http://mail.gnu.org/pipermail/help-texinfo
|
||||
- texinfo-pretest@texinfo.org for pretests of new releases,
|
||||
archived at ftp://ftp.texinfo.org/texinfo/texinfo-pretest-archive/.
|
||||
There are as yet no corresponding newsgroups.
|
||||
archive: http://texinfo.org/ftp/texinfo-pretest-archive
|
||||
There are no corresponding newsgroups.
|
||||
|
||||
For bug reports, please include enough information for the maintainers
|
||||
to reproduce the problem. Generally speaking, that means:
|
||||
Bug reports:
|
||||
please include enough information for the maintainers to reproduce the
|
||||
problem. Generally speaking, that means:
|
||||
- the contents of any input files necessary to reproduce the bug (crucial!).
|
||||
- a description of the problem and any samples of the erroneous output.
|
||||
- the version number of Texinfo and the program(s) involved (use --version).
|
||||
- hardware, operating system, and compiler versions (uname -a).
|
||||
- any unusual options you gave to configure (see config.status).
|
||||
- unusual options you gave to configure, if any (see config.status).
|
||||
- anything else that you think would be helpful.
|
||||
|
||||
Patches are most welcome; if possible, please make them with diff -c and
|
||||
@ -35,55 +41,26 @@ include ChangeLog entries.
|
||||
|
||||
When sending email, please do not encode or split the messages in any
|
||||
way if at all possible; it's easier to deal with one large message than
|
||||
many small ones. GNU shar is a convenient way of packaging multiple
|
||||
and/or binary files for email.
|
||||
|
||||
|
||||
For generic installation instructions on compiling and installing this
|
||||
Automake-based distribution, please read the file `INSTALL'.
|
||||
Installation notes specific to Texinfo:
|
||||
|
||||
* The Info tree uses a file `dir' as its root node; the `dir-example'
|
||||
file in this distribution is included as a possible starting point.
|
||||
Use it, modify it, or ignore it just as you like.
|
||||
|
||||
* You can create a file texinfo.cnf to be read by TeX when
|
||||
processing Texinfo manuals. For example, you might like to use
|
||||
@afourpaper by default. See the `Preparing for TeX' node in
|
||||
texinfo.txi for more details. You don't have to create the file if
|
||||
you have nothing to put in it.
|
||||
|
||||
* If your info files are not in $prefix/info, you may wish to add a line
|
||||
#define DEFAULT_INFOPATH "/mydir1:/mydir2:..."
|
||||
to config.h after running configure.
|
||||
|
||||
* For instructions on compiling this distribution with DJGPP tools
|
||||
for MS-DOS and MS-Windows, see the file djgpp/README.
|
||||
|
||||
|
||||
If you would like to contribute to the GNU project by implementing
|
||||
additional documentation output formats for Texinfo, that would be
|
||||
great. But please do not write a separate translator texi2foo for your
|
||||
favorite format foo! That is the hard way to do the job, and makes
|
||||
extra work in subsequent maintenance, since the Texinfo language is
|
||||
continually being enhanced and updated. Instead, the best approach is
|
||||
modify Makeinfo to generate the new format, as it does now for Info,
|
||||
HTML, XML, and DocBook.
|
||||
|
||||
If you want to convert from DocBook to Texinfo, please see
|
||||
http://docbook2X.sourceforge.net/.
|
||||
many small ones. GNU shar (http://www.gnu.org/software/sharutils/) is a
|
||||
convenient way of packaging multiple and/or binary files for email.
|
||||
|
||||
See README.dev for information on the Texinfo development environment --
|
||||
any interested parties are welcome. If you're a programmer and wish to
|
||||
contribute, this should get you started. And if you're not a
|
||||
programmer, you can still make significant contributions by writing test
|
||||
cases, checking the documentation against the implementation, etc.
|
||||
|
||||
This distribution includes the following files, among others:
|
||||
README This file.
|
||||
README.dev Texinfo developer information.
|
||||
|
||||
INSTALL Texinfo-specific installation notes.
|
||||
NEWS Summary of new features by release.
|
||||
|
||||
INTRODUCTION Brief introduction to the system, and
|
||||
how to create readable files from the
|
||||
Texinfo source files in this distribution.
|
||||
|
||||
Texinfo source files (in ./doc):
|
||||
Texinfo documentation files (in ./doc):
|
||||
texinfo.txi Describes the Texinfo language and many
|
||||
of the associated tools. It tells how
|
||||
to use Texinfo to write documentation,
|
||||
@ -92,7 +69,7 @@ Texinfo source files (in ./doc):
|
||||
Texinfo formatting commands.
|
||||
|
||||
info.texi This manual tells you how to use
|
||||
Info. This document comes as part of
|
||||
Info. This document also comes as part of
|
||||
GNU Emacs. If you do not have Emacs,
|
||||
you can format this Texinfo source
|
||||
file with makeinfo or TeX and then
|
||||
@ -120,42 +97,15 @@ Printing related files:
|
||||
producing an indexed DVI file using
|
||||
TeX and texindex.
|
||||
|
||||
|
||||
Source files for standalone C programs (./lib, ./makeinfo, ./info):
|
||||
|
||||
makeinfo/makeinfo.c This file contains the source for
|
||||
the `makeinfo' program that you can
|
||||
use to create an Info file from a
|
||||
Texinfo file.
|
||||
|
||||
info/info.c This file contains the source for
|
||||
the `info' program that you can use to
|
||||
view Info files on an ASCII terminal.
|
||||
Source files for standalone C programs:
|
||||
./lib
|
||||
./makeinfo
|
||||
./info
|
||||
|
||||
Installation files:
|
||||
configure This file creates creates a Makefile
|
||||
which in turn creates an `info' or
|
||||
`makeinfo' executable, or a C sources
|
||||
distribution.
|
||||
|
||||
configure.in This is a template for creating
|
||||
`configure' using Autoconf.
|
||||
|
||||
Makefile.in This is a template for `configure'
|
||||
to use to make a Makefile. Created by
|
||||
Automake.
|
||||
|
||||
Makefile.am This is a template for Automake
|
||||
to use to make a Makefile.in.
|
||||
|
||||
|
||||
Other files:
|
||||
fixfonts This is a shell script to install the
|
||||
`lcircle10' TeX fonts as an alias for
|
||||
the `circle10' fonts. In some older
|
||||
TeX distributions the names are
|
||||
different.
|
||||
|
||||
tex3patch This handles a bug for version
|
||||
3.0 of TeX that does not occur in
|
||||
more recent versions.
|
||||
Makefile.am What Automake uses to make a Makefile.in.
|
||||
Makefile.in What `configure' uses to make a Makefile,
|
||||
created by Automake.
|
||||
configure.ac What Autoconf uses to create `configure'.
|
||||
configure Configuration script for local conditions,
|
||||
created by Autoconf.
|
||||
|
@ -1,14 +1,58 @@
|
||||
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02
|
||||
Free Software Foundation.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
|
||||
|
||||
|
||||
$Id: TODO,v 1.6 2003/01/27 13:05:44 karl Exp $
|
||||
This is the todo list for GNU Texinfo.
|
||||
If you are interested in working on any of these, email bug-texinfo@gnu.org.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003 Free Software Foundation.
|
||||
|
||||
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.
|
||||
|
||||
* General:
|
||||
- Test for memory leaks, e.g., with valgrind:
|
||||
http://developer.kde.org/~sewardj/
|
||||
- Rationalize and improve the dir categories in existing manuals.
|
||||
See http://mail.gnu.org/pipermail/emacs-devel/2002-October/013094.html
|
||||
(and the containing thread).
|
||||
- Extend and improve the tests.
|
||||
- Get Info declared as a MIME Content-Type.
|
||||
- Support compressed image files.
|
||||
- Handle reference card creation, perhaps by only paying attention to
|
||||
sectioning and @def... commands.
|
||||
- Allow @end (and other?) commands to be indented in the source.
|
||||
|
||||
* Language:
|
||||
- @figure, something like:
|
||||
@figure [xref-label]
|
||||
@figureinclude <filename>, [<height>], [<width>]
|
||||
@figurehsize <dimen>
|
||||
@figurevsize <dimen>
|
||||
@caption ... @end caption
|
||||
<arbitrary Texinfo commands>
|
||||
@end figure
|
||||
- @else for the @if... conditionals.
|
||||
- @xindexterm [def] primary [,secondary [,tertiary]] or some such?
|
||||
- multicolumn * width to take up `the rest'.
|
||||
- another table command to take N succeeding items and split them
|
||||
into M columns (see eplain).
|
||||
- support bibliographies with BibTeX (see web2c/doc for kludge prototype).
|
||||
- @flushboth to combine @flushleft and @flushright, for RFC's.
|
||||
- @part sectioning command.
|
||||
- Allow subitems and `see' and `see also' in indices.
|
||||
- @exercise/@answer command for, e.g., gawk.
|
||||
- Allow @hsep/@vsep at @item, instead of just in template.
|
||||
- Support automatic line numbering of examples.
|
||||
- Better macro syntax.
|
||||
- Allow : in node names for info files, for names like
|
||||
`class::method'. Likewise index entries. A quoting mechanism such
|
||||
as surrounding node names with SPACE BACKSPACE is probably the best
|
||||
solution, although this is an incompatible change to Info format, sigh.
|
||||
- Change bars. This is difficult or impossible in TeX,
|
||||
unfortunately. To do it right requires device driver support.
|
||||
wdiff or ediff may be all we can do.
|
||||
- @LaTeX{} command to produce the LaTeX logo.
|
||||
|
||||
* Makeinfo:
|
||||
- Try directory of main source file.
|
||||
- Support @`{@dotless{i}} et al. in HTML.
|
||||
@ -34,43 +78,7 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
|
||||
- Support 8-bit input characters, perhaps via the ec fonts.
|
||||
- Repeat table headings if a @multitable is multiple pages long.
|
||||
- Table of contents gets misaligned if there are 10 or more [sub]sections.
|
||||
|
||||
* General:
|
||||
- Rationalize and improve the dir categories in existing manuals.
|
||||
- @xindexterm [def] primary [,secondary [,tertiary]] or some such?
|
||||
- Support compressed image files.
|
||||
- Handle reference card creation, perhaps by only paying attention to
|
||||
sectioning and @def... commands.
|
||||
- Allow @end (and other?) commands to be indented in the source.
|
||||
- Get Info declared as a MIME Content-Type.
|
||||
|
||||
* Language:
|
||||
- @figure:
|
||||
@figure [xref-label]
|
||||
@figureinclude <filename>, [<height>], [<width>]
|
||||
@figurehsize <dimen>
|
||||
@figurevsize <dimen>
|
||||
@caption ... @end caption
|
||||
<arbitrary Texinfo commands>
|
||||
@end figure
|
||||
- multicolumn * width to take up `the rest'.
|
||||
- another table command to take N succeeding items and split them
|
||||
into M columns (see eplain).
|
||||
- support bibliographies with BibTeX (see web2c/doc for kludge prototype).
|
||||
- @flushboth to combine @flushleft and @flushright, for RFC's.
|
||||
- @part sectioning command.
|
||||
- Allow subitems and `see' and `see also' in indices.
|
||||
- @exercise/@answer command for, e.g., gawk.
|
||||
- Allow @hsep/@vsep at @item, instead of just in template.
|
||||
- Support automatic line numbering of examples.
|
||||
- Better macro syntax.
|
||||
- Allow : in node names for info files, for names like
|
||||
`class::method'. Likewise index entries. A quoting mechanism such
|
||||
as surrounding node names with SPACE BACKSPACE is probably the best
|
||||
solution, although this is an incompatible change to Info format, sigh.
|
||||
- Change bars. This is difficult or impossible in TeX,
|
||||
unfortunately. To do it right requires device driver support.
|
||||
wdiff or ediff may be all we can do.
|
||||
- Use url.sty (or something) to allow linebreak of url's.
|
||||
|
||||
* Doc:
|
||||
- Include a complete functional summary, as in a reference card, in
|
||||
@ -100,7 +108,6 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
|
||||
* PDF:
|
||||
- make each letter of the index (A, B, ...) a section in the TOC.
|
||||
From Carsten Dominik <dominik@astro.uva.nl>.
|
||||
|
||||
|
||||
* install-info:
|
||||
- be able to copy the info file to compile-time $(infodir), to
|
||||
|
@ -32,6 +32,10 @@
|
||||
*/
|
||||
#undef HAVE_DCGETTEXT
|
||||
|
||||
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_GETENV
|
||||
|
||||
/* Define if this function is declared. */
|
||||
#undef HAVE_DECL_STRCASECMP
|
||||
|
||||
@ -77,15 +81,22 @@
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the `getuid' function. */
|
||||
#undef HAVE_GETUID
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#undef HAVE_ICONV
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
|
||||
declares uintmax_t. */
|
||||
#undef HAVE_INTTYPES_H_WITH_UINTMAX
|
||||
|
||||
/* Define to 1 if you have the <io.h> header file. */
|
||||
#undef HAVE_IO_H
|
||||
|
||||
@ -122,6 +133,9 @@
|
||||
/* Define to 1 if you have the `memset' function. */
|
||||
#undef HAVE_MEMSET
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#undef HAVE_MKSTEMP
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
@ -149,6 +163,9 @@
|
||||
/* Define to 1 if you have the `setvbuf' function. */
|
||||
#undef HAVE_SETVBUF
|
||||
|
||||
/* Define to 1 if you have the `sigaction' function. */
|
||||
#undef HAVE_SIGACTION
|
||||
|
||||
/* Define to 1 if you have the `sigprocmask' function. */
|
||||
#undef HAVE_SIGPROCMASK
|
||||
|
||||
@ -161,6 +178,10 @@
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
|
||||
uintmax_t. */
|
||||
#undef HAVE_STDINT_H_WITH_UINTMAX
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
@ -210,6 +231,9 @@
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stream.h> header file. */
|
||||
#undef HAVE_SYS_STREAM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
@ -234,9 +258,15 @@
|
||||
/* Define to 1 if you have the `tsearch' function. */
|
||||
#undef HAVE_TSEARCH
|
||||
|
||||
/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
|
||||
#undef HAVE_UINTMAX_T
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define if you have the 'unsigned long long' type. */
|
||||
#undef HAVE_UNSIGNED_LONG_LONG
|
||||
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#undef HAVE_VPRINTF
|
||||
|
||||
@ -249,9 +279,15 @@
|
||||
/* Define to 1 if you have the `__argz_stringify' function. */
|
||||
#undef HAVE___ARGZ_STRINGIFY
|
||||
|
||||
/* Define to 1 if you have the `__secure_getenv' function. */
|
||||
#undef HAVE___SECURE_GETENV
|
||||
|
||||
/* Define as const if the declaration of iconv() needs const. */
|
||||
#undef ICONV_CONST
|
||||
|
||||
/* Define if integer division by zero raises signal SIGFPE. */
|
||||
#undef INTDIV0_RAISES_SIGFPE
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
@ -270,6 +306,9 @@
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
|
||||
#undef PRI_MACROS_BROKEN
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
@ -310,8 +349,15 @@
|
||||
if it is not supported. */
|
||||
#undef inline
|
||||
|
||||
/* Define to rpl_mkstemp if the replacement function should be used. */
|
||||
#undef mkstemp
|
||||
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to unsigned long or unsigned long long if <stdint.h> and
|
||||
<inttypes.h> don't define. */
|
||||
#undef uintmax_t
|
||||
|
@ -1,3 +1,12 @@
|
||||
$Id: README,v 1.3 2002/12/05 21:42:23 karl Exp $
|
||||
texinfo/doc/README
|
||||
|
||||
Copyright (C) 2002 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 directory contains documentation on the Texinfo system and the TeX
|
||||
sources needed to process Texinfo sources. We recommend using the
|
||||
texi2dvi included in this distribution to run a Texinfo manual through
|
||||
@ -23,7 +32,7 @@ ones, you very likely have to update your ls-R file; do this with the
|
||||
mktexlsr command. In older versions, this was named MakeTeXls-R.
|
||||
|
||||
You can get the latest texinfo.tex from
|
||||
ftp://ftp.gnu.org/gnu/texinfo.tex (and all GNU mirrors)
|
||||
ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex (and all GNU mirrors)
|
||||
ftp://tug.org/tex/texinfo.tex (and all CTAN mirrors)
|
||||
or on the FSF machines in /home/gd/gnu/doc/texinfo.tex.
|
||||
If you have problems with the version in this distribution, please check
|
||||
|
@ -3,10 +3,10 @@
|
||||
@appendixsec GNU Free Documentation License
|
||||
|
||||
@cindex FDL, GNU Free Documentation License
|
||||
@center Version 1.1, March 2000
|
||||
@center Version 1.2, November 2002
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 2000 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
@ -18,12 +18,12 @@ of this license document, but changing it is not allowed.
|
||||
PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
written document @dfn{free} in the sense of freedom: to assure everyone
|
||||
the effective freedom to copy and redistribute it, with or without
|
||||
modifying it, either commercially or noncommercially. Secondarily,
|
||||
this License preserves for the author and publisher a way to get
|
||||
credit for their work, while not being considered responsible for
|
||||
modifications made by others.
|
||||
functional and useful document @dfn{free} in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of ``copyleft'', which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
@ -41,57 +41,69 @@ principally for works whose purpose is instruction or reference.
|
||||
@item
|
||||
APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work that contains a
|
||||
notice placed by the copyright holder saying it can be distributed
|
||||
under the terms of this License. The ``Document'', below, refers to any
|
||||
such manual or work. Any member of the public is a licensee, and is
|
||||
addressed as ``you''.
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The ``Document'', below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as ``you''. You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A ``Modified Version'' of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A ``Secondary Section'' is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (For example, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
A ``Secondary Section'' is a named appendix or a front-matter section
|
||||
of the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall
|
||||
subject (or to related matters) and contains nothing that could fall
|
||||
directly within that overall subject. (Thus, if the Document is in
|
||||
part a textbook of mathematics, a Secondary Section may not explain
|
||||
any mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License.
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The ``Cover Texts'' are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License.
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A ``Transparent'' copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, whose contents can be viewed and edited directly and
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup has been designed to thwart or discourage
|
||||
subsequent modification by readers is not Transparent. A copy that is
|
||||
not ``Transparent'' is called ``Opaque''.
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not ``Transparent'' is called ``Opaque''.
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
|
||||
@acronym{SGML} or @acronym{XML} using a publicly available
|
||||
@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
|
||||
for human modification. Opaque formats include PostScript,
|
||||
@acronym{PDF}, proprietary formats that can be read and edited only by
|
||||
proprietary word processors, @acronym{SGML} or @acronym{XML} for which
|
||||
the @acronym{DTD} and/or processing tools are not generally available,
|
||||
and the machine-generated @acronym{HTML} produced by some word
|
||||
processors for output purposes only.
|
||||
@sc{ascii} without markup, Texinfo input format, La@TeX{} input
|
||||
format, @acronym{SGML} or @acronym{XML} using a publicly available
|
||||
@acronym{DTD}, and standard-conforming simple @acronym{HTML},
|
||||
PostScript or @acronym{PDF} designed for human modification. Examples
|
||||
of transparent image formats include @acronym{PNG}, @acronym{XCF} and
|
||||
@acronym{JPG}. Opaque formats include proprietary formats that can be
|
||||
read and edited only by proprietary word processors, @acronym{SGML} or
|
||||
@acronym{XML} for which the @acronym{DTD} and/or processing tools are
|
||||
not generally available, and the machine-generated @acronym{HTML},
|
||||
PostScript or @acronym{PDF} produced by some word processors for
|
||||
output purposes only.
|
||||
|
||||
The ``Title Page'' means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
@ -100,6 +112,21 @@ formats which do not have any title page as such, ``Title Page'' means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section ``Entitled XYZ'' means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as ``Acknowledgements'',
|
||||
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section ``Entitled XYZ'' according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
@item
|
||||
VERBATIM COPYING
|
||||
|
||||
@ -119,9 +146,10 @@ you may publicly display copies.
|
||||
@item
|
||||
COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies of the Document numbering more than 100,
|
||||
and the Document's license notice requires Cover Texts, you must enclose
|
||||
the copies in covers that carry, clearly and legibly, all these Cover
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
@ -139,16 +167,15 @@ pages.
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a publicly-accessible computer-network location containing a complete
|
||||
Transparent copy of the Document, free of added material, which the
|
||||
general network-using public has access to download anonymously at no
|
||||
charge using public-standard network protocols. If you use the latter
|
||||
option, you must take reasonably prudent steps, when you begin
|
||||
distribution of Opaque copies in quantity, to ensure that this
|
||||
Transparent copy will remain thus accessible at the stated location
|
||||
until at least one year after the last time you distribute an Opaque
|
||||
copy (directly or through your agents or retailers) of that edition to
|
||||
the public.
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
@ -176,7 +203,8 @@ if the original publisher of that version gives permission.
|
||||
List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has less than five).
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
|
||||
@item
|
||||
State on the Title page the name of the publisher of the
|
||||
@ -202,10 +230,10 @@ and required Cover Texts given in the Document's license notice.
|
||||
Include an unaltered copy of this License.
|
||||
|
||||
@item
|
||||
Preserve the section entitled ``History'', and its title, and add to
|
||||
it an item stating at least the title, year, new authors, and
|
||||
Preserve the section Entitled ``History'', Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section entitled ``History'' in the Document, create one
|
||||
there is no section Entitled ``History'' in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
@ -220,10 +248,10 @@ least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
|
||||
@item
|
||||
In any section entitled ``Acknowledgments'' or ``Dedications'',
|
||||
preserve the section's title, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgments
|
||||
and/or dedications given therein.
|
||||
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
|
||||
the Title of the section, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements and/or
|
||||
dedications given therein.
|
||||
|
||||
@item
|
||||
Preserve all the Invariant Sections of the Document,
|
||||
@ -231,12 +259,15 @@ unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
|
||||
@item
|
||||
Delete any section entitled ``Endorsements''. Such a section
|
||||
Delete any section Entitled ``Endorsements''. Such a section
|
||||
may not be included in the Modified Version.
|
||||
|
||||
@item
|
||||
Do not retitle any existing section as ``Endorsements''
|
||||
or to conflict in title with any Invariant Section.
|
||||
Do not retitle any existing section to be Entitled ``Endorsements'' or
|
||||
to conflict in title with any Invariant Section.
|
||||
|
||||
@item
|
||||
Preserve any Warranty Disclaimers.
|
||||
@end enumerate
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
@ -246,7 +277,7 @@ of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section entitled ``Endorsements'', provided it contains
|
||||
You may add a section Entitled ``Endorsements'', provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties---for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
@ -274,7 +305,7 @@ License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice.
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
@ -285,11 +316,11 @@ author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections entitled ``History''
|
||||
in the various original documents, forming one section entitled
|
||||
``History''; likewise combine any sections entitled ``Acknowledgments'',
|
||||
and any sections entitled ``Dedications''. You must delete all sections
|
||||
entitled ``Endorsements.''
|
||||
In the combination, you must combine any sections Entitled ``History''
|
||||
in the various original documents, forming one section Entitled
|
||||
``History''; likewise combine any sections Entitled ``Acknowledgements'',
|
||||
and any sections Entitled ``Dedications''. You must delete all
|
||||
sections Entitled ``Endorsements.''
|
||||
|
||||
@item
|
||||
COLLECTIONS OF DOCUMENTS
|
||||
@ -310,18 +341,20 @@ AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, does not as a whole count as a Modified Version
|
||||
of the Document, provided no compilation copyright is claimed for the
|
||||
compilation. Such a compilation is called an ``aggregate'', and this
|
||||
License does not apply to the other self-contained works thus compiled
|
||||
with the Document, on account of their being thus compiled, if they
|
||||
are not themselves derivative works of the Document.
|
||||
distribution medium, is called an ``aggregate'' if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one quarter
|
||||
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that surround only the Document within the aggregate.
|
||||
Otherwise they must appear on covers around the whole aggregate.
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
@item
|
||||
TRANSLATION
|
||||
@ -332,10 +365,17 @@ Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License provided that you also include the
|
||||
original English version of this License. In case of a disagreement
|
||||
between the translation and the original English version of this
|
||||
License, the original English version will prevail.
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warrany Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled ``Acknowledgements'',
|
||||
``Dedications'', or ``History'', the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
@item
|
||||
TERMINATION
|
||||
@ -378,19 +418,28 @@ license notices just after the title page:
|
||||
@group
|
||||
Copyright (C) @var{year} @var{your name}.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with the Invariant Sections being @var{list their titles}, with the
|
||||
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
|
||||
A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled
|
||||
``GNU Free Documentation License''.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
If you have no Invariant Sections, write ``with no Invariant Sections''
|
||||
instead of saying which ones are invariant. If you have no
|
||||
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
|
||||
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the ``with...Texts.'' line with this:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
with the Invariant Sections being @var{list their titles}, with
|
||||
the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
|
||||
being @var{list}.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
|
@ -1,7 +1,8 @@
|
||||
#!/usr/local/bin/perl -w
|
||||
|
||||
# Generate a short man page from --help and --version output.
|
||||
# Copyright © 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software
|
||||
# Foundation, Inc.
|
||||
|
||||
# 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
|
||||
@ -17,25 +18,25 @@
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Written by Brendan O'Dea <bod@compusol.com.au>
|
||||
# Written by Brendan O'Dea <bod@debian.org>
|
||||
# Available from ftp://ftp.gnu.org/gnu/help2man/
|
||||
|
||||
use 5.004;
|
||||
use 5.005;
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use Text::Tabs qw(expand);
|
||||
use POSIX qw(strftime setlocale LC_TIME);
|
||||
|
||||
my $this_program = 'help2man';
|
||||
my $this_version = '1.24';
|
||||
my $this_version = '1.29';
|
||||
my $version_info = <<EOT;
|
||||
GNU $this_program $this_version
|
||||
|
||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Written by Brendan O'Dea <bod\@compusol.com.au>
|
||||
Written by Brendan O'Dea <bod\@debian.org>
|
||||
EOT
|
||||
|
||||
my $help_info = <<EOT;
|
||||
@ -43,29 +44,46 @@ my $help_info = <<EOT;
|
||||
|
||||
Usage: $this_program [OPTION]... EXECUTABLE
|
||||
|
||||
-n, --name=STRING use `STRING' as the description for the NAME paragraph
|
||||
-s, --section=SECTION use `SECTION' as the section for the man page
|
||||
-n, --name=STRING description for the NAME paragraph
|
||||
-s, --section=SECTION section number for manual page (1, 6, 8)
|
||||
-m, --manual=TEXT name of manual (User Commands, ...)
|
||||
-S, --source=TEXT source of program (FSF, Debian, ...)
|
||||
-i, --include=FILE include material from `FILE'
|
||||
-I, --opt-include=FILE include material from `FILE' if it exists
|
||||
-o, --output=FILE send output to `FILE'
|
||||
-p, --info-page=TEXT name of Texinfo manual
|
||||
-N, --no-info suppress pointer to Texinfo manual
|
||||
--help print this help, then exit
|
||||
--version print version number, then exit
|
||||
|
||||
EXECUTABLE should accept `--help' and `--version' options.
|
||||
EXECUTABLE should accept `--help' and `--version' options although
|
||||
alternatives may be specified using:
|
||||
|
||||
-h, --help-option=STRING help option string
|
||||
-v, --version-option=STRING version option string
|
||||
|
||||
Report bugs to <bug-help2man\@gnu.org>.
|
||||
EOT
|
||||
|
||||
my $section = 1;
|
||||
my ($opt_name, @opt_include, $opt_output, $opt_no_info);
|
||||
my $manual = '';
|
||||
my $source = '';
|
||||
my $help_option = '--help';
|
||||
my $version_option = '--version';
|
||||
my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
|
||||
|
||||
my %opt_def = (
|
||||
'n|name=s' => \$opt_name,
|
||||
's|section=s' => \$section,
|
||||
'i|include=s' => sub { push @opt_include, [ pop, 1 ] },
|
||||
'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] },
|
||||
'o|output=s' => \$opt_output,
|
||||
'N|no-info' => \$opt_no_info,
|
||||
'n|name=s' => \$opt_name,
|
||||
's|section=s' => \$section,
|
||||
'm|manual=s' => \$manual,
|
||||
'S|source=s' => \$source,
|
||||
'i|include=s' => sub { push @opt_include, [ pop, 1 ] },
|
||||
'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] },
|
||||
'o|output=s' => \$opt_output,
|
||||
'p|info-page=s' => \$opt_info,
|
||||
'N|no-info' => \$opt_no_info,
|
||||
'h|help-option=s' => \$help_option,
|
||||
'v|version-option=s' => \$version_option,
|
||||
);
|
||||
|
||||
# Parse options.
|
||||
@ -81,9 +99,6 @@ my %include = ();
|
||||
my %append = ();
|
||||
my @include = (); # retain order given in include file
|
||||
|
||||
# Provide replacement `quote-regex' operator for pre-5.005.
|
||||
BEGIN { eval q(sub qr { '' =~ $_[0]; $_[0] }) if $] < 5.005 }
|
||||
|
||||
# Process include file (if given). Format is:
|
||||
#
|
||||
# [section name]
|
||||
@ -175,9 +190,9 @@ setlocale LC_TIME, 'C';
|
||||
|
||||
# Grab help and version info from executable.
|
||||
my ($help_text, $version_text) = map {
|
||||
join '', map { s/ +$//; expand $_ } `$ARGV[0] --$_ 2>/dev/null`
|
||||
or die "$this_program: can't get `--$_' info from $ARGV[0]\n"
|
||||
} qw(help version);
|
||||
join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
|
||||
or die "$this_program: can't get `$_' info from $ARGV[0]\n"
|
||||
} $help_option, $version_option;
|
||||
|
||||
my $date = strftime "%B %Y", localtime;
|
||||
(my $program = $ARGV[0]) =~ s!.*/!!;
|
||||
@ -239,6 +254,18 @@ $include{NAME} ||= "$program \\- manual page for $program $version\n";
|
||||
# Man pages traditionally have the page title in caps.
|
||||
my $PROGRAM = uc $program;
|
||||
|
||||
# Set default page head/footers
|
||||
$source ||= "$program $version";
|
||||
unless ($manual)
|
||||
{
|
||||
for ($section)
|
||||
{
|
||||
if (/^(1[Mm]|8)/) { $manual = 'System Administration Utilities' }
|
||||
elsif (/^6/) { $manual = 'Games' }
|
||||
else { $manual = 'User Commands' }
|
||||
}
|
||||
}
|
||||
|
||||
# Extract usage clause(s) [if any] for SYNOPSIS.
|
||||
if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m)
|
||||
{
|
||||
@ -377,7 +404,7 @@ while (length)
|
||||
my $content = '';
|
||||
|
||||
# Option with description.
|
||||
if (s/^( {1,10}([+-]\S.*?))(?:( +)|\n( {20,}))(\S.*)\n//)
|
||||
if (s/^( {1,10}([+-]\S.*?))(?:( +(?!-))|\n( {20,}))(\S.*)\n//)
|
||||
{
|
||||
$matched .= $& if %append;
|
||||
$indent = length ($4 || "$1$3");
|
||||
@ -462,6 +489,8 @@ while (length)
|
||||
# Refer to the real documentation.
|
||||
unless ($opt_no_info)
|
||||
{
|
||||
my $info_page = $opt_info || $program;
|
||||
|
||||
$sect = 'SEE ALSO';
|
||||
$include{$sect} ||= '';
|
||||
$include{$sect} .= ".PP\n" if $include{$sect};
|
||||
@ -474,7 +503,7 @@ and
|
||||
.B $program
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info $program
|
||||
.B info $info_page
|
||||
.PP
|
||||
should give you access to the complete manual.
|
||||
EOT
|
||||
@ -483,7 +512,7 @@ EOT
|
||||
# Output header.
|
||||
print <<EOT;
|
||||
.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
|
||||
.TH $PROGRAM "$section" "$date" "$package $version" FSF
|
||||
.TH $PROGRAM "$section" "$date" "$source" "$manual"
|
||||
EOT
|
||||
|
||||
# Section ordering.
|
||||
|
@ -1,5 +1,5 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@comment $Id: info-stnd.texi,v 1.43 2002/03/23 20:38:57 karl Exp $
|
||||
@comment $Id: info-stnd.texi,v 1.4 2002/11/06 00:42:29 karl Exp $
|
||||
@comment %**start of header
|
||||
@setfilename info-stnd.info
|
||||
@include version-stnd.texi
|
||||
@ -14,7 +14,7 @@ This manual is for GNU Info (version @value{VERSION}, @value{UPDATED}),
|
||||
a program for viewing documents in Info format (usually created from
|
||||
Texinfo source files).
|
||||
|
||||
Copyright @copyright{} 1992, 93, 96, 97, 98, 99, 2001, 02
|
||||
Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
@quotation
|
||||
@ -73,8 +73,7 @@ first, as it includes more background information and a thorough tutorial.
|
||||
* Printing Nodes:: How to print out the contents of a node.
|
||||
* Miscellaneous Commands:: A few commands that defy categories.
|
||||
* Variables:: How to change the default behavior of Info.
|
||||
* Custom Key Bindings:: How to define your own key-to-command
|
||||
bindings.
|
||||
* Custom Key Bindings:: How to define your own key-to-command bindings.
|
||||
* Copying This Manual:: The GNU Free Documentation License.
|
||||
* Index:: Global index containing keystrokes,
|
||||
command names, variable names,
|
||||
@ -465,7 +464,7 @@ commands detailed in this section are used to shift which part of the
|
||||
current node is visible on the screen.
|
||||
|
||||
Scrolling commands are bound differently when @samp{--vi-keys} operation
|
||||
(@pxref{--vi-keys}) is in effect. These key bindings are designated
|
||||
is in effect (@pxref{--vi-keys}). These key bindings are designated
|
||||
with ``vi-like operation''.
|
||||
|
||||
@table @asis
|
||||
@ -1465,9 +1464,9 @@ Transpose the characters at the cursor.
|
||||
The next group of commands deal with @dfn{killing}, and @dfn{yanking}
|
||||
text@footnote{
|
||||
Some people are used to calling these operations @dfn{cut} and
|
||||
@dfn{paste}, respectively.}. For an in depth discussion of killing and
|
||||
yanking, @pxref{Killing, , Killing and Deleting, emacs, the GNU Emacs
|
||||
Manual}
|
||||
@dfn{paste}, respectively.}. For an in-depth discussion of killing and
|
||||
yanking, see @ref{Killing, , Killing and Deleting, emacs, the GNU Emacs
|
||||
Manual}.
|
||||
|
||||
@table @asis
|
||||
@item @key{M-d} (@code{echo-area-kill-word})
|
||||
@ -1809,15 +1808,16 @@ Here is a list of the variables that you can set in Info.
|
||||
@table @code
|
||||
@item automatic-footnotes
|
||||
@vindex automatic-footnotes
|
||||
When set to @code{On}, footnotes appear and disappear automatically.
|
||||
This variable is @code{On} by default. When a node is selected, a
|
||||
window containing the footnotes which appear in that node is created,
|
||||
and the footnotes are displayed within the new window. The window that
|
||||
Info creates to contain the footnotes is called @samp{*Footnotes*}. If
|
||||
a node is selected which contains no footnotes, and a @samp{*Footnotes*}
|
||||
window is on the screen, the @samp{*Footnotes*} window is deleted.
|
||||
Footnote windows created in this fashion are not automatically tiled so
|
||||
that they can use as little of the display as is possible.
|
||||
When set to @code{On}, footnotes appear and disappear automatically;
|
||||
else, they appear at the bottom of the node text. This variable is
|
||||
@code{Off} by default. When a node is selected, a window containing
|
||||
the footnotes which appear in that node is created, and the footnotes
|
||||
are displayed within the new window. The window that Info creates to
|
||||
contain the footnotes is called @samp{*Footnotes*}. If a node is
|
||||
selected which contains no footnotes, and a @samp{*Footnotes*} window
|
||||
is on the screen, the @samp{*Footnotes*} window is deleted. Footnote
|
||||
windows created in this fashion are not automatically tiled so that
|
||||
they can use as little of the display as is possible.
|
||||
|
||||
@item automatic-tiling
|
||||
@vindex automatic-tiling
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24.
|
||||
.TH INFO "1" "April 2002" "GNU texinfo 4.2" FSF
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
|
||||
.TH INFO "1" "February 2003" "info 4.4" "User Commands"
|
||||
.SH NAME
|
||||
info \- read Info documents
|
||||
.SH SYNOPSIS
|
||||
@ -77,7 +77,7 @@ Email bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2002 Free Software Foundation, Inc.
|
||||
Copyright \(co 2003 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" info(5)
|
||||
.\" $Id: info.5,v 1.2 1998/07/31 17:39:31 karl Exp $
|
||||
.\" $Id: info.5,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
.\"
|
||||
.\" Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
.\"
|
||||
|
@ -6,21 +6,16 @@
|
||||
@syncodeindex vr cp
|
||||
@syncodeindex ky cp
|
||||
@comment %**end of header
|
||||
@comment $Id: info.texi,v 1.20 2002/03/18 06:45:49 eliz Exp $
|
||||
@comment $Id: info.texi,v 1.3 2002/11/06 00:45:36 karl Exp $
|
||||
|
||||
@dircategory Texinfo documentation system
|
||||
@direntry
|
||||
* Info: (info). How to use the documentation browsing system.
|
||||
@end direntry
|
||||
|
||||
@ifinfo
|
||||
@copying
|
||||
This file describes how to use Info, the on-line, menu-driven GNU
|
||||
documentation system.
|
||||
|
||||
Copyright (C) 1989, 92, 96, 97, 98, 99, 2000, 2001, 2002
|
||||
Copyright (C) 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
@ -37,7 +32,13 @@ This document is part of a collection distributed under the GNU Free
|
||||
Documentation License. If you want to distribute this document
|
||||
separately from the collection, you can do so by adding a copy of the
|
||||
license to the document, as described in section 6 of the license.
|
||||
@end ifinfo
|
||||
@end quotation
|
||||
@end copying
|
||||
|
||||
@dircategory Texinfo documentation system
|
||||
@direntry
|
||||
* Info: (info). How to use the documentation browsing system.
|
||||
@end direntry
|
||||
|
||||
@titlepage
|
||||
@title Info
|
||||
@ -46,58 +47,36 @@ license to the document, as described in section 6 of the license.
|
||||
@author and the GNU Texinfo community
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
Copyright @copyright{} 1989, 92, 93, 96, 97, 98, 99, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
@sp 2
|
||||
Published by the Free Software Foundation @*
|
||||
59 Temple Place - Suite 330 @*
|
||||
Boston, MA 02111-1307, USA.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU
|
||||
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
|
||||
license is included in the section entitled ``GNU Free Documentation
|
||||
License'' in the Emacs manual.
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
||||
this GNU Manual, like GNU software. Copies published by the Free
|
||||
Software Foundation raise funds for GNU development.''
|
||||
|
||||
This document is part of a collection distributed under the GNU Free
|
||||
Documentation License. If you want to distribute this document
|
||||
separately from the collection, you can do so by adding a copy of the
|
||||
license to the document, as described in section 6 of the license.
|
||||
@insertcopying
|
||||
@end titlepage
|
||||
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top Info: An Introduction
|
||||
|
||||
Info is a program, which you are using now, for reading documentation of
|
||||
computer programs. The GNU Project distributes most of its on-line
|
||||
manuals in the Info format, so you need a program called @dfn{Info
|
||||
reader} to read the manuals. One of such programs you are using now.
|
||||
The GNU Project distributes most of its on-line manuals in the
|
||||
@dfn{Info format}, which you read using an @dfn{Info reader}. You are
|
||||
probably using an Info reader to read this now.
|
||||
|
||||
@ifinfo
|
||||
If you are new to Info and want to learn how to use it, type the
|
||||
command @kbd{h} now. It brings you to a programmed instruction
|
||||
sequence.
|
||||
If you are new to the Info reader and want to learn how to use it,
|
||||
type the command @kbd{h} now. It brings you to a programmed
|
||||
instruction sequence.
|
||||
|
||||
To learn advanced Info commands, type @kbd{n} twice. This brings you to
|
||||
@cite{Info for Experts}, skipping over the `Getting Started' chapter.
|
||||
To read about expert-level Info commands, type @kbd{n} twice. This
|
||||
brings you to @cite{Info for Experts}, skipping over the `Getting
|
||||
Started' chapter.
|
||||
@end ifinfo
|
||||
@end ifnottex
|
||||
|
||||
@menu
|
||||
* Getting Started:: Getting started using an Info reader.
|
||||
* Advanced Info:: Advanced commands within Info.
|
||||
* Expert Info:: Info commands for experts.
|
||||
* Creating an Info File:: How to make your own Info file.
|
||||
* Index:: An index of topics, commands, and variables.
|
||||
@end menu
|
||||
|
||||
@node Getting Started, Advanced Info, Top, Top
|
||||
@node Getting Started, Expert Info, Top, Top
|
||||
@comment node-name, next, previous, up
|
||||
@chapter Getting Started
|
||||
|
||||
@ -241,15 +220,14 @@ level of detail. This node's topic is ``how to use Info''. The mode
|
||||
line says that this is node @samp{Help} in the file @file{info}.
|
||||
|
||||
@cindex header of Info node
|
||||
The top line of a node is its @dfn{header}. This node's header (look at
|
||||
it now) says that the @samp{Next} node after this one is the node
|
||||
called @samp{Help-P}. An advanced Info command lets you go to any node
|
||||
whose name you know. In the stand-alone Info reader program, the
|
||||
header line shows the names of this node and the info file as well.
|
||||
In Emacs, the header line is displayed in a special typeface, and it
|
||||
doesn't scroll off the screen when you scroll the display. The names
|
||||
of this node and of its Info file are omitted by Emacs from the header
|
||||
line.
|
||||
The top line of a node is its @dfn{header}. This node's header
|
||||
(look at it now) says that the @samp{Next} node after this one is the
|
||||
node called @samp{Help-P}. An advanced Info command lets you go to
|
||||
any node whose name you know. In the stand-alone Info reader program,
|
||||
the header line shows the names of this node and the info file as
|
||||
well. In Emacs, the header line is duplicated in a special typeface,
|
||||
and the duplicate remains at the top of the window all the time even
|
||||
if you scroll through the node.
|
||||
|
||||
Besides a @samp{Next}, a node can have a @samp{Previous} or an
|
||||
@samp{Up} links, or both. As you can see, this node has all of these
|
||||
@ -267,9 +245,9 @@ links.
|
||||
@samp{>>} in the margin means it is really time to try a command.
|
||||
|
||||
@format
|
||||
>> If you have a mouse, and if you already practiced typing @kbd{n}
|
||||
to get to the next node, click now with the right mouse button on
|
||||
the @samp{Next} link to do the same ``the mouse way''.
|
||||
>> If you are in Emacs and have a mouse, and if you already practiced
|
||||
typing @kbd{n} to get to the next node, click now with the middle
|
||||
mouse button on the @samp{Next} link to do the same ``the mouse way''.
|
||||
@end format
|
||||
|
||||
@node Help-P, Help-^L, Help, Getting Started
|
||||
@ -280,40 +258,39 @@ links.
|
||||
This node is called @samp{Help-P}. The @samp{Previous} node, as you see,
|
||||
is @samp{Help}, which is the one you just came from using the @kbd{n}
|
||||
command. Another @kbd{n} command now would take you to the next
|
||||
node, @samp{Help-^L}. In Emacs, @kbd{n} runs the Emacs command
|
||||
@code{Info-next}, and @kbd{p} runs @code{Info-prev}.
|
||||
node, @samp{Help-^L}.
|
||||
|
||||
@format
|
||||
>> But do not type @kbd{n} yet. First, try the @kbd{p} command,
|
||||
or click the mouse on the @samp{Prev} link, which takes you to the
|
||||
@samp{Previous} node. When you get there, you can do an @kbd{n}
|
||||
again to return here.
|
||||
or click the middle mouse button on the @samp{Prev} link. That
|
||||
takes you to the @samp{Previous} node. Then use @kbd{n} to return here.
|
||||
@end format
|
||||
|
||||
If you read this in Emacs, you will see an @samp{Info} item in the
|
||||
menu bar, close to its right edge. Clicking your mouse on the
|
||||
menu bar, close to its right edge. Clicking the mouse on the
|
||||
@samp{Info} menu-bar item opens a menu of commands which include
|
||||
@samp{Next} and @samp{Prev} (and also some others which you didn't yet
|
||||
learn about).
|
||||
|
||||
This all probably seems insultingly simple so far, but @emph{do not} be
|
||||
led into skimming. Things will get more complicated soon. Also,
|
||||
do not try a new command until you are told it is time to. Otherwise,
|
||||
you may make Info skip past an important warning that was coming up.
|
||||
This all probably seems insultingly simple so far, but @emph{please
|
||||
don't} start skimming. Things will get complicated soon enough!
|
||||
Also, please do not try a new command until you are told it is time
|
||||
to. You could make Info skip past an important warning that was
|
||||
coming up.
|
||||
|
||||
@format
|
||||
>> Now do an @kbd{n}, or click the mouse on the @samp{Next} link, to
|
||||
get to the node @samp{Help-^L} and learn more.
|
||||
>> Now do an @kbd{n}, or click the middle mouse button on the @samp{Next}
|
||||
link, to get to the node @samp{Help-^L} and learn more.
|
||||
@end format
|
||||
|
||||
@node Help-^L, Help-M, Help-P, Getting Started
|
||||
@comment node-name, next, previous, up
|
||||
@section The Space, DEL, B and ^L commands.
|
||||
|
||||
This node's mode line tells you that you are now at node @samp{Help-^L},
|
||||
and the header line tells you that @kbd{p} would get you back to
|
||||
@samp{Help-P}. The node's title is underlined; it says what the node
|
||||
is about (most nodes have titles).
|
||||
This node's mode line tells you that you are now at node
|
||||
@samp{Help-^L}, and the header line tells you that @kbd{p} would get
|
||||
you back to @samp{Help-P}. The node's title is highlighted and may be
|
||||
underlined as well; it says what the node is about.
|
||||
|
||||
This is a big node and it does not all fit on your display screen.
|
||||
You can tell that there is more that is not visible because you
|
||||
@ -336,9 +313,7 @@ allow you to ``move around'' in a node that does not all fit on the
|
||||
screen at once. @key{SPC} moves forward, to show what was below the
|
||||
bottom of the screen. @key{DEL} or @key{BACKSPACE} moves backward, to
|
||||
show what was above the top of the screen (there is not anything above
|
||||
the top until you have typed some spaces). In Emacs, @key{SPC} runs
|
||||
the command @code{Info-scroll-up}, while @key{BACKSPACE} runs
|
||||
@code{Info-scroll-down}.
|
||||
the top until you have typed some spaces).
|
||||
|
||||
@format
|
||||
>> Now try typing a @key{SPC} (afterward, type a @key{BACKSPACE} to
|
||||
@ -354,31 +329,34 @@ lines above them they may not make it all the way to the bottom.
|
||||
If you are reading this in Emacs, note that the header line is
|
||||
always visible, never scrolling off the display. That way, you can
|
||||
always see the @samp{Next}, @samp{Prev}, and @samp{Up} links, and you
|
||||
can conveniently go to one of these links from anywhere in the node by
|
||||
clicking the mouse on one of these links.
|
||||
can conveniently go to one of these links at any time by
|
||||
clicking the middle mouse button on the link.
|
||||
|
||||
@cindex reading Info documents top to bottom
|
||||
@cindex Info documents as tutorials
|
||||
@key{SPC} and @key{DEL} not only move forward and backward through
|
||||
the current node. When these keys hit the beginning or the end of the
|
||||
current node, they move to preceding or subsequent nodes.
|
||||
Specifically, they scroll through all the nodes in an Info file as a
|
||||
single logical sequence. In this sequence, a node's subnodes appear
|
||||
following their parent. If a node has a menu, @key{SPC} takes you
|
||||
into the subnodes listed in the menu, one by one. Once you reach the
|
||||
end of a node, and have seen all of its subnodes, @key{SPC} takes you
|
||||
to the next node or to the parent's next node. This is so you could
|
||||
read the entire manual top to bottom by just typing @key{SPC}.
|
||||
the current node. They also move between nodes. @key{SPC} at the end
|
||||
of a node moves to the next node; @key{DEL} (or @key{BACKSPACE}) at
|
||||
the beginning of a node moves to the previous node. In effect, these
|
||||
commands scroll through all the nodes in an Info file as a single
|
||||
logical sequence. You can read an entire manual top to bottom by just
|
||||
typing @key{SPC}, and move backward through the entire manual from
|
||||
bottom to top by typing @key{DEL} (or @key{BACKSPACE}).
|
||||
|
||||
In this sequence, a node's subnodes appear following their parent.
|
||||
If a node has a menu, @key{SPC} takes you into the subnodes listed in
|
||||
the menu, one by one. Once you reach the end of a node, and have seen
|
||||
all of its subnodes, @key{SPC} takes you to the next node or to the
|
||||
parent's next node.
|
||||
|
||||
@kindex PAGEUP @r{(Info mode)}
|
||||
@kindex PAGEDOWN @r{(Info mode)}
|
||||
Many keyboards nowadays have two scroll keys labeled @samp{PageUp}
|
||||
and @samp{PageDown} (or maybe @samp{Prior} and @samp{Next}). If your
|
||||
keyboard has these keys, you can use them to move forward and backward
|
||||
through the text, like with @key{SPC} and @key{BACKSPACE}. However,
|
||||
unlike @key{SPC} and @key{BACKSPACE}, @key{PAGEUP} and @key{PAGEDOWN}
|
||||
keys will never scroll beyond the beginning or the end of the current
|
||||
node.
|
||||
through the text of one node, like @key{SPC} and @key{BACKSPACE} (or
|
||||
@key{DEL}). However, @key{PAGEUP} and @key{PAGEDOWN} keys never
|
||||
scroll beyond the beginning or the end of the current node.
|
||||
|
||||
@kindex C-l @r{(Info mode)}
|
||||
If your screen is ever garbaged, you can tell Info to display it
|
||||
@ -391,18 +369,19 @@ again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down
|
||||
|
||||
@kindex b @r{(Info mode)}
|
||||
To move back to the beginning of the node you are on, you can type
|
||||
a lot of @key{BACKSPACE} keys. You can also type simply @kbd{b} for
|
||||
beginning.
|
||||
the @key{BACKSPACE} key (or @key{DEL}) many times. You can also type
|
||||
@kbd{b} just once. @kbd{b} stands for ``beginning.''
|
||||
|
||||
@format
|
||||
>> Try that now. (We have put in enough verbiage to push this past
|
||||
the first screenful, but screens are so big nowadays that perhaps it
|
||||
isn't enough. You may need to shrink your Emacs or Info window.)
|
||||
Then come back, with @key{SPS}s.
|
||||
Then come back, by typing @key{SPC} one or more times.
|
||||
@end format
|
||||
|
||||
If your screen is very tall, all of this node might fit at once.
|
||||
In that case, @kbd{b} won't do anything. Sorry; what can we do?
|
||||
If your screen is very tall, all of this node might fit at once. In
|
||||
that case, @kbd{b} won't do anything. But you could observe the
|
||||
effect of the @kbd{b} key if you use a smaller window.
|
||||
|
||||
@kindex ? @r{(Info mode)}
|
||||
@findex Info-summary
|
||||
@ -414,8 +393,8 @@ the list, make it go away by typing a @key{SPC} repeatedly.
|
||||
|
||||
@format
|
||||
>> Type a @key{?} now. Press @key{SPC} to see consecutive screenfuls of
|
||||
the list until finished. Then type @key{SPC} several times, until
|
||||
it goes away.
|
||||
the list until finished. Then type @key{SPC} several times. If
|
||||
you are using Emacs, the help will then go away automatically.
|
||||
@end format
|
||||
|
||||
(If you are using the stand-alone Info reader, type @kbd{C-x 0} to
|
||||
@ -429,8 +408,8 @@ move around in them without being told. Since not all terminals have
|
||||
the same size screen, it would be impossible to warn you anyway.
|
||||
|
||||
@format
|
||||
>> Now type @kbd{n}, or click the mouse on the @samp{Next} link, to
|
||||
see the description of the @kbd{m} command.
|
||||
>> Now type @kbd{n}, or click the middle mouse button on the @samp{Next} link,
|
||||
to see the description of the @kbd{m} command.
|
||||
@end format
|
||||
|
||||
@node Help-M, Help-Xref, Help-^L, Getting Started
|
||||
@ -459,7 +438,7 @@ special meaning---they are only for the human reader's benefit and do
|
||||
not define additional subtopics. Here is an example:
|
||||
|
||||
@example
|
||||
* Foo: Node about FOO This tells about FOO
|
||||
* Foo: Node about FOO. This tells about FOO.
|
||||
@end example
|
||||
|
||||
The subtopic name is Foo, and the node describing it is @samp{Node
|
||||
@ -479,7 +458,7 @@ and so both it and the subtopic name are the same. There is an
|
||||
abbreviation for this:
|
||||
|
||||
@example
|
||||
* Foo:: This tells about FOO
|
||||
* Foo:: This tells about FOO.
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@ -494,26 +473,31 @@ both @samp{Foo}.
|
||||
@kbd{m} command is not available.
|
||||
@end format
|
||||
|
||||
If you keep typing @key{SPC} once the menu appears on the screen, it
|
||||
will move to another node (the first one in the menu). If that
|
||||
happens, type @key{BACKSPACE} to come back.
|
||||
|
||||
@kindex m @r{(Info mode)}
|
||||
The command to go to one of the subnodes is @kbd{m}---but @emph{do
|
||||
not do it yet!} Before you use @kbd{m}, you need to learn about
|
||||
commands which prompt you for more input. So far, you have learned
|
||||
several commands that do not need additional input; when you typed
|
||||
one, Info processed it and was instantly ready for another command.
|
||||
The @kbd{m} command is different: it is incomplete without the
|
||||
@dfn{name of the subtopic}. Once you have typed @kbd{m}, Info tries
|
||||
to read the subtopic name.
|
||||
The command to go to one of the subnodes is @kbd{m}. This is very
|
||||
different from the commands you have used: it is a command that
|
||||
prompts you for more input.
|
||||
|
||||
The Info commands you know do not need additional input; when you
|
||||
type one of them, Info processes it instantly and then is ready for
|
||||
another command. The @kbd{m} command is different: it needs to know
|
||||
the @dfn{name of the subtopic}. Once you have typed @kbd{m}, Info
|
||||
tries to read the subtopic name.
|
||||
|
||||
Now look for the line containing many dashes near the bottom of the
|
||||
screen. There is one more line beneath that one, but usually it is
|
||||
blank. If it is empty, Info is ready for a command, such as @kbd{n}
|
||||
blank. When it is blank, Info is ready for a command, such as @kbd{n}
|
||||
or @kbd{b} or @key{SPC} or @kbd{m}. If that line contains text ending
|
||||
in a colon, it means Info is trying to read more input for the last
|
||||
command. At such times, commands do not work, because Info tries to
|
||||
use them as the input it needs. You must either type your response and
|
||||
finish the command you started, or type @kbd{Control-g} to cancel the
|
||||
command. When you have done one of those things, the line becomes
|
||||
blank again.
|
||||
in a colon, it means Info is reading more input for the last command.
|
||||
You can't type an Info command then, because Info is trying to read
|
||||
input, not commands. You must either give the input and finish the
|
||||
command you started, or type @kbd{Control-g} to cancel the command.
|
||||
When you have done one of those things, the input entry line becomes
|
||||
blank again. Then you can type Info commands again.
|
||||
|
||||
@findex Info-menu
|
||||
The command to go to a subnode via a menu is @kbd{m}. After you type
|
||||
@ -532,21 +516,22 @@ item name, except for one space where a space appears in the item in
|
||||
the menu.
|
||||
|
||||
@cindex completion of Info node names
|
||||
You can also use the @dfn{completion} feature to help enter the subtopic
|
||||
name. If you type the @key{TAB} key after entering part of a name, it will
|
||||
magically fill in more of the name---as much as follows uniquely from
|
||||
what you have entered.
|
||||
You can also use the @dfn{completion} feature to help enter the
|
||||
subtopic name. If you type the @key{TAB} key after entering part of a
|
||||
name, it will fill in more of the name---as much as Info can deduce
|
||||
from the part you have entered.
|
||||
|
||||
If you move the cursor to one of the menu subtopic lines, then you do
|
||||
not need to type the argument: you just type a @key{RET}, and it
|
||||
stands for the subtopic of the line you are on.
|
||||
stands for the subtopic of the line you are on. You can also click
|
||||
the middle mouse button directly on the subtopic line to go there.
|
||||
|
||||
Here is a menu to give you a chance to practice. This menu gives you
|
||||
three ways of going to one place, Help-FOO:
|
||||
|
||||
@menu
|
||||
* Foo: Help-FOO. A node you can visit for fun.
|
||||
* Bar: Help-FOO. Strange! two ways to get to the same place.
|
||||
* Bar: Help-FOO. We have made two ways to get to the same place.
|
||||
* Help-FOO:: And yet another!
|
||||
@end menu
|
||||
|
||||
@ -606,18 +591,19 @@ somewhere between the beginning @samp{*} and the colon @samp{:} which
|
||||
ends the subtopic's brief name. You will see the subtopic's name
|
||||
change its appearance (usually, its background color will change), and
|
||||
the shape of the mouse pointer will change if your platform supports
|
||||
that. After a while, if you leave the mouse on that spot, a tooltip
|
||||
will pop up saying ``Mouse-2: go to that node''. (If the tooltips are
|
||||
turned off or unavailable, this message is displayed in the @dfn{echo
|
||||
area}, the bottom screen line where you typed the menu subtopics in
|
||||
response to the prompt.) @kbd{Mouse-2} is the second button of your
|
||||
mouse counting from the left---the rightmost button for two-button
|
||||
mice, the middle button for 3-button mice. So pressing @kbd{Mouse-2}
|
||||
while the mouse pointer is on a menu subtopic goes to that subtopic.
|
||||
that. After a while, if you leave the mouse on that spot, a small
|
||||
window will pop up, saying ``Mouse-2: go to that node'', or the same
|
||||
message may appear at the bottom of the screen.
|
||||
|
||||
@kbd{Mouse-2} is the second button of your mouse counting from the
|
||||
left---the middle button on a 3-button mouse. (On a 2-button mouse,
|
||||
you may have to press both buttons together to ``press the middle
|
||||
button''.) The message tells you pressing @kbd{Mouse-2} with the
|
||||
current position of the mouse pointer (on subtopic in the menu) will
|
||||
go to that subtopic.
|
||||
|
||||
@findex Info-mouse-follow-nearest-node
|
||||
More generally, @kbd{Mouse-2} in an Info buffer runs the Emacs
|
||||
command @code{Info-mouse-follow-nearest-node}, which finds the nearest
|
||||
More generally, @kbd{Mouse-2} in an Info buffer finds the nearest
|
||||
link to another node and goes there. For example, near a cross
|
||||
reference it acts like @kbd{f}, in a menu it acts like @kbd{m}, on the
|
||||
node's header line it acts like @kbd{n}, @kbd{p}, or @kbd{u}, etc. At
|
||||
@ -655,8 +641,8 @@ get back to where you were reading you have to type some @key{SPC}s.
|
||||
(Some Info readers, such as the one built into Emacs, put you at the
|
||||
same place where you were reading in @samp{Help-M}.)
|
||||
|
||||
Another way to go Up is to click on the @samp{Up} pointer shown in
|
||||
the header line (provided that you have a mouse).
|
||||
Another way to go Up is to click @kbd{Mouse-2} on the @samp{Up}
|
||||
pointer shown in the header line (provided that you have a mouse).
|
||||
|
||||
@format
|
||||
>> Now type @kbd{u} to move back up to @samp{Help-M}.
|
||||
@ -742,7 +728,7 @@ records the nodes where you have been in a special history list. The
|
||||
@kbd{l} command revisits nodes in the history list; each successive
|
||||
@kbd{l} command moves one step back through the history.
|
||||
|
||||
If you have been following directions, ad @kbd{l} command now will get
|
||||
If you have been following directions, an @kbd{l} command now will get
|
||||
you back to @samp{Help-M}. Another @kbd{l} command would undo the
|
||||
@kbd{u} and get you back to @samp{Help-FOO}. Another @kbd{l} would undo
|
||||
the @kbd{m} and get you back to @samp{Help-M}.
|
||||
@ -792,27 +778,28 @@ underlying text and the mouse pointer change in response.
|
||||
>> Now type @kbd{n} to see the last node of the course.
|
||||
@end format
|
||||
|
||||
@xref{Advanced Info}, for more advanced Info features.
|
||||
@xref{Expert Info}, for more advanced Info features.
|
||||
|
||||
@c If a menu appears at the end of this node, remove it.
|
||||
@c It is an accident of the menu updating command.
|
||||
|
||||
@node Advanced Info
|
||||
@node Expert Info
|
||||
@chapter Info for Experts
|
||||
|
||||
This chapter describes various advanced Info commands. (If you are
|
||||
using a stand-alone Info reader, there are additional commands
|
||||
This chapter describes various Info commands for experts. (If you
|
||||
are using a stand-alone Info reader, there are additional commands
|
||||
specific to it, which are documented in several chapters of @ref{Top,,
|
||||
GNU Info, info-stnd, GNU Info}.)
|
||||
|
||||
This chapter also explains how to write an Info as distinct from a
|
||||
Texinfo file. (However, in most cases, writing a Texinfo file is
|
||||
better, since you can use it @emph{both} to generate an Info file and
|
||||
to make a printed manual. @xref{Top,, Overview of Texinfo, texinfo,
|
||||
Texinfo: The GNU Documentation Format}.)
|
||||
better, since you can use it to make a printed manual or produce other
|
||||
formats, such as HTML and DocBook, as well as for generating Info
|
||||
files.) @xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU
|
||||
Documentation Format}.)
|
||||
|
||||
@menu
|
||||
* Expert:: Advanced Info commands: g, s, e, and 1 - 5.
|
||||
* Advanced:: Advanced Info commands: g, s, e, and 1 - 5.
|
||||
* Info Search:: How to search Info documents for specific subjects.
|
||||
* Add:: Describes how to add new nodes to the hierarchy.
|
||||
Also tells what nodes look like.
|
||||
@ -823,7 +810,7 @@ Texinfo: The GNU Documentation Format}.)
|
||||
* Emacs Info Variables:: Variables modifying the behavior of Emacs Info.
|
||||
@end menu
|
||||
|
||||
@node Expert, Info Search, , Advanced Info
|
||||
@node Advanced, Info Search, , Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section Advanced Info Commands
|
||||
|
||||
@ -837,7 +824,7 @@ Here are some more Info commands that make it easier to move around.
|
||||
If you know a node's name, you can go there by typing @kbd{g}, the
|
||||
name, and @key{RET}. Thus, @kbd{gTop@key{RET}} would go to the node
|
||||
called @samp{Top} in this file. (This is equivalent to @kbd{t}, see
|
||||
@ref{Help-Int}.) @kbd{gExpert@key{RET}} would come back here.
|
||||
@ref{Help-Int}.) @kbd{gAdvanced@key{RET}} would come back here.
|
||||
@kbd{g} in Emacs runs the command @code{Info-goto-node}.
|
||||
|
||||
Unlike @kbd{m}, @kbd{g} does not allow the use of abbreviations.
|
||||
@ -894,7 +881,7 @@ only if the variable @code{Info-enable-edit} is non-@code{nil}.
|
||||
edit the Info file, so typing @kbd{e} there goes to the end of the
|
||||
current node.
|
||||
|
||||
@node Info Search, Add, Expert, Advanced Info
|
||||
@node Info Search, Add, Advanced, Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section How to search Info documents for specific subjects
|
||||
|
||||
@ -970,7 +957,7 @@ kind of search command. Both @kbd{s} and @kbd{M-s} run in Emacs the
|
||||
command @code{Info-search}.
|
||||
|
||||
|
||||
@node Add, Menus, Info Search, Advanced Info
|
||||
@node Add, Menus, Info Search, Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section Adding a new node to Info
|
||||
|
||||
@ -985,8 +972,11 @@ Put that topic in the menu in the directory. @xref{Menus, Menu}.
|
||||
|
||||
Usually, the way to create the nodes is with Texinfo (@pxref{Top,,
|
||||
Overview of Texinfo, texinfo, Texinfo: The GNU Documentation Format});
|
||||
this has the advantage that you can also make a printed manual from
|
||||
them. However, if you want to edit an Info file, here is how.
|
||||
this has the advantage that you can also make a printed manual or HTML
|
||||
from them. You would use the @samp{@@dircategory} and
|
||||
@samp{@@direntry} commands to put the manual into the Info directory.
|
||||
However, if you want to edit an Info file manually and install it
|
||||
manually, here is how.
|
||||
|
||||
@cindex node delimiters
|
||||
The new node can live in an existing documentation file, or in a new
|
||||
@ -1000,12 +990,11 @@ page boundary as well is to put a @samp{^L} @emph{right after} the
|
||||
@samp{^_}.}
|
||||
|
||||
The @samp{^_} starting a node must be followed by a newline or a
|
||||
@samp{^L} newline, after which comes the node's header line. The header
|
||||
line must give the node's name (by which Info finds it), and state the
|
||||
names of the @samp{Next}, @samp{Previous}, and @samp{Up} nodes (if there
|
||||
are any). As you can see, this node's @samp{Up} node is the node
|
||||
@samp{Top}, which points at all the documentation for Info. The
|
||||
@samp{Next} node is @samp{Menus}.
|
||||
@samp{^L} newline, after which comes the node's header line. The
|
||||
header line must give the node's name (by which Info finds it), and
|
||||
state the names of the @samp{Next}, @samp{Previous}, and @samp{Up}
|
||||
nodes (if there are any). As you can see, this node's @samp{Up} node
|
||||
is the node @samp{Expert Info}. The @samp{Next} node is @samp{Menus}.
|
||||
|
||||
@cindex node header line format
|
||||
@cindex format of node headers
|
||||
@ -1051,7 +1040,7 @@ node is in the same file, it was not necessary to use one.
|
||||
line. The file names are ignored by Info, but they serve as comments
|
||||
to help identify the node for the user.
|
||||
|
||||
@node Menus, Cross-refs, Add, Advanced Info
|
||||
@node Menus, Cross-refs, Add, Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section How to Create Menus
|
||||
|
||||
@ -1107,7 +1096,7 @@ collector, nothing terrible happens if a substructure is not pointed
|
||||
to, but such a substructure is rather useless since nobody can
|
||||
ever find out that it exists.
|
||||
|
||||
@node Cross-refs, Tags, Menus, Advanced Info
|
||||
@node Cross-refs, Tags, Menus, Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section Creating Cross References
|
||||
|
||||
@ -1166,7 +1155,7 @@ as new users should do when they learn a new package.
|
||||
|
||||
Another set of Info commands is useful when you need to find
|
||||
something quickly in a manual---that is, when you need to use a manual
|
||||
as a reference rather than as a tutorial. We urge you to make learn
|
||||
as a reference rather than as a tutorial. We urge you to learn
|
||||
these search commands as well. If you want to do that now, follow this
|
||||
cross reference to @ref{Info Search}.
|
||||
|
||||
@ -1182,7 +1171,7 @@ manner.
|
||||
@end format
|
||||
|
||||
|
||||
@node Tags, Checking, Cross-refs, Advanced Info
|
||||
@node Tags, Checking, Cross-refs, Expert Info
|
||||
@comment node-name, next, previous, up
|
||||
@section Tags Tables for Info Files
|
||||
|
||||
@ -1227,7 +1216,7 @@ a @samp{DEL} character, and the character position in the file of the
|
||||
beginning of the node.
|
||||
|
||||
|
||||
@node Checking, Emacs Info Variables, Tags, Advanced Info
|
||||
@node Checking, Emacs Info Variables, Tags, Expert Info
|
||||
@section Checking an Info File
|
||||
|
||||
When creating an Info file, it is easy to forget the name of a node when
|
||||
@ -1246,7 +1235,7 @@ usually few.
|
||||
To check an Info file, do @kbd{M-x Info-validate} while looking at any
|
||||
node of the file with Emacs Info mode.
|
||||
|
||||
@node Emacs Info Variables, , Checking, Advanced Info
|
||||
@node Emacs Info Variables, , Checking, Expert Info
|
||||
@section Emacs Info-mode Variables
|
||||
|
||||
The following variables may modify the behavior of Info-mode in Emacs;
|
||||
@ -1276,10 +1265,10 @@ These directories are not searched for merging the @file{dir} file.
|
||||
@item Info-fontify
|
||||
When set to a non-@code{nil} value, enables highlighting of Info
|
||||
files. The default is @code{t}. You can change how the highlighting
|
||||
looks by customizing the faces @code{info-node}, @code{info-menu-5},
|
||||
@code{info-xref}, @code{info-header-xref}, @code{info-header-node},
|
||||
@code{info-title-@var{n}-face} (where @var{n} is the level of the
|
||||
section, a number between 1 and 4), and @code{info-menu-header}. To
|
||||
looks by customizing the faces @code{info-node}, @code{info-xref},
|
||||
@code{info-header-xref}, @code{info-header-node}, @code{info-menu-5},
|
||||
@code{info-menu-header}, and @code{info-title-@var{n}-face} (where
|
||||
@var{n} is the level of the section, a number between 1 and 4). To
|
||||
customize a face, type @kbd{M-x customize-face @key{RET} @var{face}
|
||||
@key{RET}}, where @var{face} is one of the face names listed here.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24.
|
||||
.TH INSTALL-INFO "1" "April 2002" "GNU texinfo 4.2" FSF
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
|
||||
.TH INSTALL-INFO "1" "February 2003" "install-info 4.4" "User Commands"
|
||||
.SH NAME
|
||||
install-info \- update info/dir entries
|
||||
.SH SYNOPSIS
|
||||
@ -60,7 +60,7 @@ Email bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2002 Free Software Foundation, Inc.
|
||||
Copyright \(co 2003 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24.
|
||||
.TH MAKEINFO "1" "April 2002" "GNU texinfo 4.2" FSF
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
|
||||
.TH MAKEINFO "1" "February 2003" "makeinfo 4.4" "User Commands"
|
||||
.SH NAME
|
||||
makeinfo \- translate Texinfo documents
|
||||
.SH SYNOPSIS
|
||||
@ -36,13 +36,13 @@ display version information and exit.
|
||||
.SS "Output format selection (default is to produce Info):"
|
||||
.TP
|
||||
\fB\-\-docbook\fR
|
||||
output DocBook rather than Info.
|
||||
output DocBook XML rather than Info.
|
||||
.TP
|
||||
\fB\-\-html\fR
|
||||
output HTML rather than Info.
|
||||
.TP
|
||||
\fB\-\-xml\fR
|
||||
output XML (TexinfoML) rather than Info.
|
||||
output Texinfo XML rather than Info.
|
||||
.SS "General output options:"
|
||||
.TP
|
||||
\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
|
||||
@ -117,6 +117,9 @@ process @ifplaintext even if not generating plain text.
|
||||
\fB\-\-iftex\fR
|
||||
process @iftex and @tex; implies \fB\-\-no\-split\fR.
|
||||
.TP
|
||||
\fB\-\-ifxml\fR
|
||||
process @ifxml and @xml.
|
||||
.TP
|
||||
\fB\-\-no\-ifhtml\fR
|
||||
do not process @ifhtml and @html text.
|
||||
.TP
|
||||
@ -128,6 +131,9 @@ do not process @ifplaintext text.
|
||||
.TP
|
||||
\fB\-\-no\-iftex\fR
|
||||
do not process @iftex and @tex text.
|
||||
.TP
|
||||
\fB\-\-no\-ifxml\fR
|
||||
do not process @ifxml and @xml text.
|
||||
.IP
|
||||
The defaults for the @if... conditionals depend on the output format:
|
||||
if generating HTML, \fB\-\-ifhtml\fR is on and the others are off;
|
||||
@ -142,7 +148,7 @@ makeinfo \fB\-\-html\fR foo.texi
|
||||
write HTML to @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-xml\fR foo.texi
|
||||
write XML to @setfilename
|
||||
write Texinfo XML to @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-docbook\fR foo.texi
|
||||
write DocBook XML to @setfilename
|
||||
@ -158,7 +164,7 @@ Email bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2002 Free Software Foundation, Inc.
|
||||
Copyright \(co 2003 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24.
|
||||
.TH TEXINDEX "1" "April 2002" "GNU texinfo 4.2" FSF
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
|
||||
.TH TEXINDEX "1" "February 2003" "texindex 4.4" "User Commands"
|
||||
.SH NAME
|
||||
texindex \- sort Texinfo index files
|
||||
.SH SYNOPSIS
|
||||
@ -29,7 +29,7 @@ Email bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2002 Free Software Foundation, Inc.
|
||||
Copyright \(co 2003 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
|
@ -1,7 +1,7 @@
|
||||
.\" texinfo(5)
|
||||
.\" $Id: texinfo.5,v 1.3 1999/03/25 21:28:25 karl Exp $
|
||||
.\" $Id: texinfo.5,v 1.1 2002/09/03 23:44:57 karl Exp $
|
||||
.\"
|
||||
.\" Copyright (C) 1998, 99 Free Software Foundation, Inc.
|
||||
.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
.\"
|
||||
.\" Permission is granted to make and distribute verbatim copies of this
|
||||
.\" manual provided the copyright notice and this permission notice are
|
||||
@ -19,7 +19,7 @@
|
||||
.\"
|
||||
.TH TEXINFO 5 "GNU Texinfo" "FSF"
|
||||
.SH NAME
|
||||
Texinfo \- software documentation system
|
||||
texinfo \- software documentation system
|
||||
.SH DESCRIPTION
|
||||
Texinfo is a documentation system that uses a single source file to
|
||||
produce both online information and printed output. It is primarily
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
@set UPDATED 23 March 2002
|
||||
@set UPDATED-MONTH March 2002
|
||||
@set EDITION 4.2
|
||||
@set VERSION 4.2
|
||||
@set UPDATED 5 November 2002
|
||||
@set UPDATED-MONTH November 2002
|
||||
@set EDITION 4.5
|
||||
@set VERSION 4.5
|
||||
|
@ -1,4 +1,4 @@
|
||||
@set UPDATED 28 March 2002
|
||||
@set UPDATED-MONTH March 2002
|
||||
@set EDITION 4.2
|
||||
@set VERSION 4.2
|
||||
@set UPDATED 4 February 2003
|
||||
@set UPDATED-MONTH February 2003
|
||||
@set EDITION 4.5
|
||||
@set VERSION 4.5
|
||||
|
@ -1,3 +1,12 @@
|
||||
$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
|
||||
texinfo/info/README
|
||||
|
||||
Copyright (C) 2002 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.
|
||||
|
||||
Info 2.0 is a complete rewrite of the original standalone Info I wrote in
|
||||
1987, the first program I wrote for rms. That program was something like
|
||||
my second Unix program ever, and my die-hard machine language coding habits
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* dir.c -- how to build a special "dir" node from "localdir" files.
|
||||
$Id: dir.c,v 1.7 1998/06/28 19:51:36 karl Exp $
|
||||
$Id: dir.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* display.c -- How to display Info windows.
|
||||
$Id: display.c,v 1.7 2002/03/08 21:41:44 karl Exp $
|
||||
$Id: display.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* display.h -- How the display in Info is done.
|
||||
$Id: display.h,v 1.2 1997/07/15 18:37:29 karl Exp $
|
||||
$Id: display.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* doc.h -- Structures associating function pointers with documentation.
|
||||
$Id: doc.h,v 1.5 2001/11/16 23:16:40 karl Exp $
|
||||
$Id: doc.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 2001 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* echo-area.c -- how to read a line in the echo area.
|
||||
$Id: echo-area.c,v 1.15 2001/12/12 16:19:39 karl Exp $
|
||||
$Id: echo-area.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* echo-area.h -- Functions used in reading information from the echo area.
|
||||
$Id: echo-area.h,v 1.3 1997/07/15 18:38:21 karl Exp $
|
||||
$Id: echo-area.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* filesys.c -- filesystem specific functions.
|
||||
$Id: filesys.c,v 1.15 2002/03/23 20:45:24 karl Exp $
|
||||
$Id: filesys.c,v 1.3 2003/01/31 19:18:11 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2000, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -266,43 +267,43 @@ info_absolute_file (fname)
|
||||
return info_file_in_path (filename_non_directory (fname), containing_dir);
|
||||
}
|
||||
|
||||
/* Given a string containing units of information separated by
|
||||
the PATH_SEP character, return the next one pointed to by
|
||||
IDX, or NULL if there are no more.
|
||||
Advance IDX to the character after the colon. */
|
||||
|
||||
/* Given a string containing units of information separated by the
|
||||
PATH_SEP character, return the next one after IDX, or NULL if there
|
||||
are no more. Advance IDX to the character after the colon. */
|
||||
|
||||
char *
|
||||
extract_colon_unit (string, idx)
|
||||
char *string;
|
||||
int *idx;
|
||||
{
|
||||
register int i, start;
|
||||
int i = *idx;
|
||||
int start = *idx;
|
||||
|
||||
i = start = *idx;
|
||||
if ((i >= strlen (string)) || !string)
|
||||
return ((char *) NULL);
|
||||
if (!string || i >= strlen (string))
|
||||
return NULL;
|
||||
|
||||
/* Advance to next PATH_SEP. */
|
||||
while (string[i] && string[i] != PATH_SEP[0])
|
||||
i++;
|
||||
if (i == start)
|
||||
{
|
||||
return ((char *) NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *value;
|
||||
|
||||
value = (char *) xmalloc (1 + (i - start));
|
||||
strncpy (value, &string[start], (i - start));
|
||||
value[i - start] = '\0';
|
||||
if (string[i])
|
||||
++i;
|
||||
*idx = i;
|
||||
return (value);
|
||||
}
|
||||
if (!string[i] && i == start) /* end of string, and didn't advance */
|
||||
return NULL;
|
||||
|
||||
{
|
||||
char *value = xmalloc ((i - start) + 1);
|
||||
strncpy (value, &string[start], (i - start));
|
||||
value[i - start] = 0;
|
||||
|
||||
i++; /* move past PATH_SEP */
|
||||
*idx = i;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/* A structure which associates a filename with its expansion. */
|
||||
typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
char *filename;
|
||||
char *expansion;
|
||||
} FILENAME_LIST;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* filesys.h -- external declarations for filesys.c.
|
||||
$Id: filesys.h,v 1.5 1998/07/21 22:25:44 karl Exp $
|
||||
$Id: filesys.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* footnotes.c -- Some functions for manipulating footnotes.
|
||||
$Id: footnotes.c,v 1.9 1999/09/25 16:10:04 karl Exp $
|
||||
$Id: footnotes.c,v 1.2 2002/11/06 00:41:17 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -21,8 +21,8 @@
|
||||
|
||||
#include "info.h"
|
||||
|
||||
/* Non-zero means attempt to show footnotes when displaying a new window. */
|
||||
int auto_footnotes_p = 1;
|
||||
/* Nonzero means attempt to show footnotes when displaying a new window. */
|
||||
int auto_footnotes_p = 0;
|
||||
|
||||
static char *footnote_nodename = "*Footnotes*";
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* footnotes.h -- Some functions for manipulating footnotes.
|
||||
$Id: footnotes.h,v 1.4 1998/11/29 21:44:49 karl Exp $
|
||||
$Id: footnotes.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* gc.h -- Functions for garbage collecting unused node contents.
|
||||
$Id: gc.h,v 1.2 1997/07/15 18:41:53 karl Exp $
|
||||
$Id: gc.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* indices.c -- deal with an Info file index.
|
||||
$Id: indices.c,v 1.15 2002/03/11 13:43:52 karl Exp $
|
||||
$Id: indices.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* indices.h -- Functions defined in indices.c.
|
||||
$Id: indices.h,v 1.2 1997/07/06 20:50:29 karl Exp $
|
||||
$Id: indices.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* info-utils.c -- miscellanous.
|
||||
$Id: info-utils.c,v 1.8 2002/03/08 21:41:44 karl Exp $
|
||||
$Id: info-utils.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 98 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* info-utils.h -- Exported functions and variables from info-utils.c.
|
||||
$Id: info-utils.h,v 1.5 1998/08/10 18:07:28 karl Exp $
|
||||
$Id: info-utils.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 96, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1996, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* info.c -- Display nodes of Info files in multiple windows.
|
||||
$Id: info.c,v 1.60 2002/03/11 19:54:29 karl Exp $
|
||||
$Id: info.c,v 1.2 2003/01/19 18:45:59 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 96, 97, 98, 99, 2000, 01, 02
|
||||
Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -280,7 +280,7 @@ main (argc, argv)
|
||||
There is NO warranty. You may redistribute this software\n\
|
||||
under the terms of the GNU General Public License.\n\
|
||||
For more information about these matters, see the files named COPYING.\n"),
|
||||
"2002");
|
||||
"2003");
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* info.h -- Header file which includes all of the other headers.
|
||||
$Id: info.h,v 1.16 2002/02/23 19:12:02 karl Exp $
|
||||
$Id: info.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* infodoc.c -- Functions which build documentation nodes.
|
||||
$Id: infodoc.c,v 1.28 2002/02/27 13:37:33 karl Exp $
|
||||
/* infodoc.c -- functions which build documentation nodes.
|
||||
$Id: infodoc.c,v 1.5 2002/11/06 00:40:08 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99, 2001, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -66,12 +67,12 @@ static char *info_internal_help_text[] = {
|
||||
"\n",
|
||||
N_("Moving within a node:\n\
|
||||
---------------------\n"),
|
||||
N_("\\%-10[scroll-forward] Scroll forward a page.\n"),
|
||||
N_("\\%-10[scroll-backward] Scroll backward a page.\n"),
|
||||
N_("\\%-10[beginning-of-node] Go to the beginning of this node.\n"),
|
||||
N_("\\%-10[end-of-node] Go to the end of this node.\n"),
|
||||
N_("\\%-10[scroll-forward] Scroll forward 1 line.\n"),
|
||||
N_("\\%-10[scroll-backward] Scroll backward 1 line.\n"),
|
||||
N_("\\%-10[next-line] Scroll forward 1 line.\n"),
|
||||
N_("\\%-10[prev-line] Scroll backward 1 line.\n"),
|
||||
N_("\\%-10[scroll-forward] Scroll forward a page.\n"),
|
||||
N_("\\%-10[scroll-backward] Scroll backward a page.\n"),
|
||||
"\n",
|
||||
N_("Other commands:\n\
|
||||
---------------\n"),
|
||||
@ -226,7 +227,7 @@ dump_map_to_message_buffer (prefix, map)
|
||||
if (last - 1 != i)
|
||||
{
|
||||
printf_to_message_buffer ("%s .. ", pretty_keyseq (new_prefix));
|
||||
new_prefix[prefix_len] = last - 1;
|
||||
new_prefix[prefix_len] = last - 1;
|
||||
printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix));
|
||||
i = last - 1;
|
||||
}
|
||||
@ -329,29 +330,29 @@ create_internal_info_help_node (help_is_only_window_p)
|
||||
InfoCommand *cmd = DocInfoCmd(&function_doc_array[i]);
|
||||
|
||||
if (InfoFunction(cmd) != info_do_lowercase_version
|
||||
&& !where_is_internal (info_keymap, cmd)
|
||||
&& !where_is_internal (info_keymap, cmd)
|
||||
&& !where_is_internal (echo_area_keymap, cmd))
|
||||
{
|
||||
if (!printed_one_mx)
|
||||
{
|
||||
printf_to_message_buffer ("---------------------\n\n");
|
||||
if (exec_keys && exec_keys[0])
|
||||
printf_to_message_buffer
|
||||
(_("The following commands can only be invoked via %s:\n\n"), exec_keys);
|
||||
else
|
||||
printf_to_message_buffer
|
||||
(_("The following commands cannot be invoked at all:\n\n"));
|
||||
if (exec_keys && exec_keys[0])
|
||||
printf_to_message_buffer
|
||||
(_("The following commands can only be invoked via %s:\n\n"), exec_keys);
|
||||
else
|
||||
printf_to_message_buffer
|
||||
(_("The following commands cannot be invoked at all:\n\n"));
|
||||
printed_one_mx = 1;
|
||||
}
|
||||
|
||||
printf_to_message_buffer
|
||||
("%s %s\n %s\n",
|
||||
exec_keys,
|
||||
exec_keys,
|
||||
function_doc_array[i].func_name,
|
||||
replace_in_documentation (strlen (function_doc_array[i].doc)
|
||||
? _(function_doc_array[i].doc)
|
||||
: "")
|
||||
);
|
||||
? _(function_doc_array[i].doc)
|
||||
: "")
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
@ -661,7 +662,7 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
|
||||
return;
|
||||
}
|
||||
|
||||
*k++ = '\e';
|
||||
*k++ = '\e';
|
||||
keystroke = UnMeta (keystroke);
|
||||
map = (Keymap)map[ESC].function;
|
||||
}
|
||||
@ -686,28 +687,28 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
|
||||
char *keyname, *message, *fundoc, *funname = "";
|
||||
|
||||
#if defined (INFOKEY)
|
||||
/* If the key is bound to do-lowercase-version, but its
|
||||
lower-case variant is undefined, say that this key is
|
||||
also undefined. This is especially important for unbound
|
||||
edit keys that emit an escape sequence: it's terribly
|
||||
confusing to see a message "Home (do-lowercase-version)"
|
||||
or some such when Home is unbound. */
|
||||
if (InfoFunction(map[keystroke].function) == info_do_lowercase_version)
|
||||
{
|
||||
unsigned char lowerkey = Meta_p(keystroke)
|
||||
? Meta (tolower (UnMeta (keystroke)))
|
||||
: tolower (keystroke);
|
||||
/* If the key is bound to do-lowercase-version, but its
|
||||
lower-case variant is undefined, say that this key is
|
||||
also undefined. This is especially important for unbound
|
||||
edit keys that emit an escape sequence: it's terribly
|
||||
confusing to see a message "Home (do-lowercase-version)"
|
||||
or some such when Home is unbound. */
|
||||
if (InfoFunction(map[keystroke].function) == info_do_lowercase_version)
|
||||
{
|
||||
unsigned char lowerkey = Meta_p(keystroke)
|
||||
? Meta (tolower (UnMeta (keystroke)))
|
||||
: tolower (keystroke);
|
||||
|
||||
if (map[lowerkey].function == (InfoCommand *)NULL)
|
||||
{
|
||||
message_in_echo_area (_("%s is undefined."),
|
||||
pretty_keyseq (keys));
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (map[lowerkey].function == (InfoCommand *)NULL)
|
||||
{
|
||||
message_in_echo_area (_("%s is undefined."),
|
||||
pretty_keyseq (keys));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
keyname = pretty_keyseq (keys);
|
||||
keyname = pretty_keyseq (keys);
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
funname = function_name (map[keystroke].function);
|
||||
@ -878,7 +879,7 @@ strrpbrk (s, f)
|
||||
{
|
||||
for (t = f; *t; t++)
|
||||
if (*e == *t)
|
||||
return (char *)e;
|
||||
return (char *)e;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@ -905,146 +906,146 @@ replace_in_documentation (string, help_is_only_window_p)
|
||||
|
||||
/* Is this the start of a replaceable function name? */
|
||||
if (string[i] == '\\')
|
||||
{
|
||||
char *fmt = NULL;
|
||||
unsigned min = 0;
|
||||
unsigned max = 0;
|
||||
{
|
||||
char *fmt = NULL;
|
||||
unsigned min = 0;
|
||||
unsigned max = 0;
|
||||
|
||||
if(string[j] == '%')
|
||||
{
|
||||
if (string[++j] == '-')
|
||||
j++;
|
||||
if (isdigit(string[j]))
|
||||
{
|
||||
min = atoi(string + j);
|
||||
while (isdigit(string[j]))
|
||||
j++;
|
||||
if (string[j] == '.' && isdigit(string[j + 1]))
|
||||
{
|
||||
j += 1;
|
||||
max = atoi(string + j);
|
||||
while (isdigit(string[j]))
|
||||
j++;
|
||||
}
|
||||
fmt = (char *)xmalloc (j - i + 2);
|
||||
strncpy (fmt, string + i + 1, j - i);
|
||||
fmt[j - i - 1] = 's';
|
||||
fmt[j - i] = '\0';
|
||||
}
|
||||
else
|
||||
j = i + 1;
|
||||
}
|
||||
if (string[j] == '[')
|
||||
{
|
||||
unsigned arg = 0;
|
||||
char *argstr = NULL;
|
||||
char *rep_name, *fun_name, *rep;
|
||||
InfoCommand *command;
|
||||
char *repstr = NULL;
|
||||
unsigned replen;
|
||||
if(string[j] == '%')
|
||||
{
|
||||
if (string[++j] == '-')
|
||||
j++;
|
||||
if (isdigit(string[j]))
|
||||
{
|
||||
min = atoi(string + j);
|
||||
while (isdigit(string[j]))
|
||||
j++;
|
||||
if (string[j] == '.' && isdigit(string[j + 1]))
|
||||
{
|
||||
j += 1;
|
||||
max = atoi(string + j);
|
||||
while (isdigit(string[j]))
|
||||
j++;
|
||||
}
|
||||
fmt = (char *)xmalloc (j - i + 2);
|
||||
strncpy (fmt, string + i + 1, j - i);
|
||||
fmt[j - i - 1] = 's';
|
||||
fmt[j - i] = '\0';
|
||||
}
|
||||
else
|
||||
j = i + 1;
|
||||
}
|
||||
if (string[j] == '[')
|
||||
{
|
||||
unsigned arg = 0;
|
||||
char *argstr = NULL;
|
||||
char *rep_name, *fun_name, *rep;
|
||||
InfoCommand *command;
|
||||
char *repstr = NULL;
|
||||
unsigned replen;
|
||||
|
||||
/* Copy in the old text. */
|
||||
strncpy (result + next, string + start, i - start);
|
||||
next += (i - start);
|
||||
start = j + 1;
|
||||
/* Copy in the old text. */
|
||||
strncpy (result + next, string + start, i - start);
|
||||
next += (i - start);
|
||||
start = j + 1;
|
||||
|
||||
/* Look for an optional numeric arg. */
|
||||
i = start;
|
||||
if (isdigit(string[i])
|
||||
|| (string[i] == '-' && isdigit(string[i + 1])) )
|
||||
{
|
||||
arg = atoi(string + i);
|
||||
if (string[i] == '-')
|
||||
i++;
|
||||
while (isdigit(string[i]))
|
||||
i++;
|
||||
}
|
||||
start = i;
|
||||
/* Look for an optional numeric arg. */
|
||||
i = start;
|
||||
if (isdigit(string[i])
|
||||
|| (string[i] == '-' && isdigit(string[i + 1])) )
|
||||
{
|
||||
arg = atoi(string + i);
|
||||
if (string[i] == '-')
|
||||
i++;
|
||||
while (isdigit(string[i]))
|
||||
i++;
|
||||
}
|
||||
start = i;
|
||||
|
||||
/* Move to the end of the function name. */
|
||||
for (i = start; string[i] && (string[i] != ']'); i++);
|
||||
/* Move to the end of the function name. */
|
||||
for (i = start; string[i] && (string[i] != ']'); i++);
|
||||
|
||||
rep_name = (char *)xmalloc (1 + i - start);
|
||||
strncpy (rep_name, string + start, i - start);
|
||||
rep_name[i - start] = '\0';
|
||||
rep_name = (char *)xmalloc (1 + i - start);
|
||||
strncpy (rep_name, string + start, i - start);
|
||||
rep_name[i - start] = '\0';
|
||||
|
||||
/* If we have only one window (because the window size was too
|
||||
small to split it), we have to quit help by going back one
|
||||
noew in the history list, not deleting the window. */
|
||||
if (strcmp (rep_name, "quit-help") == 0)
|
||||
fun_name = help_is_only_window_p ? "history-node"
|
||||
: "delete-window";
|
||||
else
|
||||
fun_name = rep_name;
|
||||
/* If we have only one window (because the window size was too
|
||||
small to split it), we have to quit help by going back one
|
||||
noew in the history list, not deleting the window. */
|
||||
if (strcmp (rep_name, "quit-help") == 0)
|
||||
fun_name = help_is_only_window_p ? "history-node"
|
||||
: "delete-window";
|
||||
else
|
||||
fun_name = rep_name;
|
||||
|
||||
/* Find a key which invokes this function in the info_keymap. */
|
||||
command = named_function (fun_name);
|
||||
/* Find a key which invokes this function in the info_keymap. */
|
||||
command = named_function (fun_name);
|
||||
|
||||
free (rep_name);
|
||||
free (rep_name);
|
||||
|
||||
/* If the internal documentation string fails, there is a
|
||||
serious problem with the associated command's documentation.
|
||||
We croak so that it can be fixed immediately. */
|
||||
if (!command)
|
||||
abort ();
|
||||
/* If the internal documentation string fails, there is a
|
||||
serious problem with the associated command's documentation.
|
||||
We croak so that it can be fixed immediately. */
|
||||
if (!command)
|
||||
abort ();
|
||||
|
||||
if (arg)
|
||||
{
|
||||
char *argrep, *p;
|
||||
if (arg)
|
||||
{
|
||||
char *argrep, *p;
|
||||
|
||||
argrep = where_is (info_keymap, InfoCmd(info_add_digit_to_numeric_arg));
|
||||
p = argrep ? strrpbrk (argrep, "0123456789-") : NULL;
|
||||
if (p)
|
||||
{
|
||||
argstr = (char *)xmalloc (p - argrep + 21);
|
||||
strncpy (argstr, argrep, p - argrep);
|
||||
sprintf (argstr + (p - argrep), "%d", arg);
|
||||
}
|
||||
else
|
||||
command = NULL;
|
||||
}
|
||||
rep = command ? where_is (info_keymap, command) : NULL;
|
||||
if (!rep)
|
||||
rep = "N/A";
|
||||
replen = (argstr ? strlen (argstr) + 1 : 0) + strlen (rep);
|
||||
repstr = (char *)xmalloc (replen);
|
||||
repstr[0] = '\0';
|
||||
if (argstr)
|
||||
{
|
||||
strcat(repstr, argstr);
|
||||
strcat(repstr, " ");
|
||||
free (argstr);
|
||||
}
|
||||
strcat(repstr, rep);
|
||||
argrep = where_is (info_keymap, InfoCmd(info_add_digit_to_numeric_arg));
|
||||
p = argrep ? strrpbrk (argrep, "0123456789-") : NULL;
|
||||
if (p)
|
||||
{
|
||||
argstr = (char *)xmalloc (p - argrep + 21);
|
||||
strncpy (argstr, argrep, p - argrep);
|
||||
sprintf (argstr + (p - argrep), "%d", arg);
|
||||
}
|
||||
else
|
||||
command = NULL;
|
||||
}
|
||||
rep = command ? where_is (info_keymap, command) : NULL;
|
||||
if (!rep)
|
||||
rep = "N/A";
|
||||
replen = (argstr ? strlen (argstr) : 0) + strlen (rep) + 1;
|
||||
repstr = (char *)xmalloc (replen);
|
||||
repstr[0] = '\0';
|
||||
if (argstr)
|
||||
{
|
||||
strcat(repstr, argstr);
|
||||
strcat(repstr, " ");
|
||||
free (argstr);
|
||||
}
|
||||
strcat(repstr, rep);
|
||||
|
||||
if (fmt)
|
||||
{
|
||||
if (replen > max)
|
||||
replen = max;
|
||||
if (replen < min)
|
||||
replen = min;
|
||||
}
|
||||
if (next + replen > reslen)
|
||||
{
|
||||
reslen = next + replen + 1;
|
||||
result = (char *)xrealloc (result, reslen + 1);
|
||||
}
|
||||
if (fmt)
|
||||
{
|
||||
if (replen > max)
|
||||
replen = max;
|
||||
if (replen < min)
|
||||
replen = min;
|
||||
}
|
||||
if (next + replen > reslen)
|
||||
{
|
||||
reslen = next + replen + 1;
|
||||
result = (char *)xrealloc (result, reslen + 1);
|
||||
}
|
||||
|
||||
if (fmt)
|
||||
sprintf (result + next, fmt, repstr);
|
||||
else
|
||||
strcpy (result + next, repstr);
|
||||
if (fmt)
|
||||
sprintf (result + next, fmt, repstr);
|
||||
else
|
||||
strcpy (result + next, repstr);
|
||||
|
||||
next = strlen (result);
|
||||
free (repstr);
|
||||
next = strlen (result);
|
||||
free (repstr);
|
||||
|
||||
start = i;
|
||||
if (string[i])
|
||||
start++;
|
||||
}
|
||||
start = i;
|
||||
if (string[i])
|
||||
start++;
|
||||
}
|
||||
|
||||
maybe_free (fmt);
|
||||
}
|
||||
maybe_free (fmt);
|
||||
}
|
||||
}
|
||||
strcpy (result + next, string + start);
|
||||
return (result);
|
||||
@ -1076,7 +1077,7 @@ where_is (map, cmd)
|
||||
|
||||
name = function_name (cmd);
|
||||
if (!name)
|
||||
return NULL; /* no such function */
|
||||
return NULL; /* no such function */
|
||||
|
||||
rep = where_is_internal (map, InfoCmd(info_execute_command));
|
||||
if (!rep)
|
||||
@ -1107,7 +1108,15 @@ where_is_internal (map, cmd)
|
||||
return NULL;
|
||||
|
||||
#else /* !INFOKEY */
|
||||
|
||||
/* There is a bug in that create_internal_info_help_node calls
|
||||
where_is_internal without setting where_is_rep_index to zero. This
|
||||
was found by Mandrake and reported by Thierry Vignaud
|
||||
<tvignaud@mandrakesoft.com> around April 24, 2002.
|
||||
|
||||
I think the best fix is to make where_is_rep_index another
|
||||
parameter to this recursively-called function, instead of a static
|
||||
variable. But this [!INFOKEY] branch of the code is not enabled
|
||||
any more, so let's just skip the whole thing. --karl, 28sep02. */
|
||||
register int i;
|
||||
|
||||
/* If the function is directly invokable in MAP, return the representation
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* infokey.c -- compile ~/.infokey to ~/.info.
|
||||
$Id: infokey.c,v 1.10 2002/03/19 14:36:49 karl Exp $
|
||||
$Id: infokey.c,v 1.3 2003/01/19 18:46:27 karl Exp $
|
||||
|
||||
Copyright (C) 1999, 2001, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -140,7 +140,7 @@ main (argc, argv)
|
||||
There is NO warranty. You may redistribute this software\n\
|
||||
under the terms of the GNU General Public License.\n\
|
||||
For more information about these matters, see the files named COPYING.\n"),
|
||||
"1999");
|
||||
"2003");
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* infokey.h -- Custom keystroke definition support.
|
||||
$Id: infokey.h,v 1.1 2002/03/20 16:03:22 karl Exp $
|
||||
$Id: infokey.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* infomap.c -- keymaps for Info.
|
||||
$Id: infomap.c,v 1.28 2002/02/08 23:02:53 karl Exp $
|
||||
$Id: infomap.c,v 1.5 2003/01/24 19:04:54 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 99, 2001, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -58,47 +59,154 @@ keymap_make_keymap ()
|
||||
return (keymap);
|
||||
}
|
||||
|
||||
#if defined(INFOKEY)
|
||||
static FUNCTION_KEYSEQ *
|
||||
find_function_keyseq (map, c, rootmap)
|
||||
Keymap map;
|
||||
int c;
|
||||
Keymap rootmap;
|
||||
{
|
||||
FUNCTION_KEYSEQ *k;
|
||||
|
||||
if (map[c].type != ISFUNC)
|
||||
abort();
|
||||
if (map[c].function == NULL)
|
||||
return NULL;
|
||||
for (k = map[c].function->keys; k; k = k->next)
|
||||
{
|
||||
const unsigned char *p;
|
||||
Keymap m = rootmap;
|
||||
if (k->map != rootmap)
|
||||
continue;
|
||||
for (p = k->keyseq; *p && m[*p].type == ISKMAP; p++)
|
||||
m = (Keymap)m[*p].function;
|
||||
if (*p != c || p[1])
|
||||
continue;
|
||||
if (m[*p].type != ISFUNC)
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
|
||||
static void
|
||||
add_function_keyseq (function, keyseq, rootmap)
|
||||
InfoCommand *function;
|
||||
const unsigned char *keyseq;
|
||||
Keymap rootmap;
|
||||
{
|
||||
FUNCTION_KEYSEQ *ks;
|
||||
|
||||
if (function == NULL ||
|
||||
function == InfoCmd(info_do_lowercase_version) ||
|
||||
function == InfoCmd(ea_insert))
|
||||
return;
|
||||
ks = (FUNCTION_KEYSEQ *)xmalloc (sizeof(FUNCTION_KEYSEQ));
|
||||
ks->next = function->keys;
|
||||
ks->map = rootmap;
|
||||
ks->keyseq = xstrdup(keyseq);
|
||||
function->keys = ks;
|
||||
}
|
||||
|
||||
static void
|
||||
remove_function_keyseq (function, keyseq, rootmap)
|
||||
InfoCommand *function;
|
||||
const unsigned char *keyseq;
|
||||
Keymap rootmap;
|
||||
{
|
||||
|
||||
FUNCTION_KEYSEQ *k, *kp;
|
||||
|
||||
if (function == NULL ||
|
||||
function == InfoCmd(info_do_lowercase_version) ||
|
||||
function == InfoCmd(ea_insert))
|
||||
return;
|
||||
for (kp = NULL, k = function->keys; k; kp = k, k = k->next)
|
||||
if (k->map == rootmap && strcmp(k->keyseq, keyseq) == 0)
|
||||
break;
|
||||
if (!k)
|
||||
abort ();
|
||||
if (kp)
|
||||
kp->next = k->next;
|
||||
else
|
||||
function->keys = k->next;
|
||||
}
|
||||
#endif /* INFOKEY */
|
||||
|
||||
/* Return a new keymap which is a copy of MAP. */
|
||||
Keymap
|
||||
keymap_copy_keymap (map)
|
||||
Keymap map;
|
||||
keymap_copy_keymap (map, rootmap, newroot)
|
||||
Keymap map;
|
||||
Keymap rootmap;
|
||||
Keymap newroot;
|
||||
{
|
||||
int i;
|
||||
Keymap keymap;
|
||||
#if defined(INFOKEY)
|
||||
FUNCTION_KEYSEQ *ks;
|
||||
#endif /* INFOKEY */
|
||||
|
||||
keymap = keymap_make_keymap ();
|
||||
if (!newroot)
|
||||
newroot = keymap;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
keymap[i].type = map[i].type;
|
||||
keymap[i].function = map[i].function;
|
||||
switch (map[i].type)
|
||||
{
|
||||
case ISFUNC:
|
||||
keymap[i].function = map[i].function;
|
||||
#if defined(INFOKEY)
|
||||
ks = find_function_keyseq (map, i, rootmap, NULL);
|
||||
if (ks)
|
||||
add_function_keyseq(map[i].function, ks->keyseq, newroot);
|
||||
#endif /* INFOKEY */
|
||||
break;
|
||||
case ISKMAP:
|
||||
keymap[i].function = (InfoCommand *)keymap_copy_keymap (
|
||||
(Keymap)map[i].function, rootmap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (keymap);
|
||||
}
|
||||
|
||||
/* Free the keymap and its descendants. */
|
||||
void
|
||||
keymap_discard_keymap (map)
|
||||
Keymap (map);
|
||||
keymap_discard_keymap (map, rootmap)
|
||||
Keymap map;
|
||||
Keymap rootmap;
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!map)
|
||||
return;
|
||||
if (!rootmap)
|
||||
rootmap = map;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
#if defined(INFOKEY)
|
||||
FUNCTION_KEYSEQ *ks;
|
||||
#endif /* INFOKEY */
|
||||
switch (map[i].type)
|
||||
{
|
||||
case ISFUNC:
|
||||
#if defined(INFOKEY)
|
||||
ks = find_function_keyseq(map, i, rootmap);
|
||||
if (ks)
|
||||
remove_function_keyseq (map[i].function, ks->keyseq, rootmap);
|
||||
#endif /* INFOKEY */
|
||||
break;
|
||||
|
||||
case ISKMAP:
|
||||
keymap_discard_keymap ((Keymap)map[i].function);
|
||||
keymap_discard_keymap ((Keymap)map[i].function, rootmap);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
free(map);
|
||||
}
|
||||
|
||||
/* Conditionally bind key sequence. */
|
||||
@ -116,27 +224,45 @@ keymap_bind_keyseq (map, keyseq, keyentry)
|
||||
|
||||
while ((c = *s++) != '\0')
|
||||
{
|
||||
#if defined(INFOKEY)
|
||||
FUNCTION_KEYSEQ *ks;
|
||||
#endif /* INFOKEY */
|
||||
switch (m[c].type)
|
||||
{
|
||||
case ISFUNC:
|
||||
#if defined(INFOKEY)
|
||||
ks = find_function_keyseq(m, c, map);
|
||||
if (ks)
|
||||
remove_function_keyseq (m[c].function, ks->keyseq, map);
|
||||
#else /* !INFOKEY */
|
||||
if (!(m[c].function == NULL || (
|
||||
#if !defined(INFOKEY)
|
||||
m != map &&
|
||||
#endif /* !INFOKEY */
|
||||
m[c].function == InfoCmd(info_do_lowercase_version))
|
||||
))
|
||||
return 0;
|
||||
#endif /* !INFOKEY */
|
||||
|
||||
if (*s != '\0')
|
||||
{
|
||||
m[c].type = ISKMAP;
|
||||
/* Here we are casting the Keymap pointer returned from
|
||||
keymap_make_keymap to an InfoCommand pointer. Ugh.
|
||||
This makes the `function' structure garbage
|
||||
if it's actually interpreted as an InfoCommand.
|
||||
Should really be using a union, and taking steps to
|
||||
avoid the possible error. */
|
||||
m[c].function = (InfoCommand *)keymap_make_keymap ();
|
||||
}
|
||||
break;
|
||||
|
||||
case ISKMAP:
|
||||
#if defined(INFOKEY)
|
||||
if (*s == '\0')
|
||||
keymap_discard_keymap ((Keymap)m[c].function, map);
|
||||
#else /* !INFOKEY */
|
||||
if (*s == '\0')
|
||||
return 0;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if (*s != '\0')
|
||||
@ -146,18 +272,7 @@ keymap_bind_keyseq (map, keyseq, keyentry)
|
||||
else
|
||||
{
|
||||
#if defined(INFOKEY)
|
||||
FUNCTION_KEYSEQ *k;
|
||||
|
||||
for (k = keyentry->function->keys; k && k->map != map; k = k->next)
|
||||
;
|
||||
if (!k)
|
||||
{
|
||||
FUNCTION_KEYSEQ *ks = (FUNCTION_KEYSEQ *)xmalloc (sizeof(FUNCTION_KEYSEQ));
|
||||
ks->next = keyentry->function->keys;
|
||||
ks->map = map;
|
||||
ks->keyseq = xstrdup (keyseq);
|
||||
keyentry->function->keys = ks;
|
||||
}
|
||||
add_function_keyseq (keyentry->function, keyseq, map);
|
||||
#endif /* INFOKEY */
|
||||
m[c] = *keyentry;
|
||||
}
|
||||
@ -505,8 +620,8 @@ initialize_vi_like_keymaps ()
|
||||
map['b'].function = ea_backward_word;
|
||||
map['d'].function = ea_kill_word;
|
||||
map['f'].function = ea_forward_word;
|
||||
map['h'].function = ea_forward;
|
||||
map['l'].function = ea_backward;
|
||||
map['h'].function = ea_backward;
|
||||
map['l'].function = ea_forward;
|
||||
map['w'].function = ea_forward_word;
|
||||
map['x'].function = ea_delete;
|
||||
map['X'].function = ea_kill_word;
|
||||
@ -1721,3 +1836,4 @@ initialize_info_keymaps ()
|
||||
}
|
||||
|
||||
#endif /* defined(INFOKEY) */
|
||||
/* vim: set sw=2 cino={1s>2sn-s^-se-s: */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* infomap.h -- description of a keymap in Info and related functions.
|
||||
$Id: infomap.h,v 1.6 2001/11/16 23:16:59 karl Exp $
|
||||
$Id: infomap.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 2001 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* m-x.c -- Meta-x minibuffer reader.
|
||||
$Id: m-x.c,v 1.9 2001/11/16 23:14:33 karl Exp $
|
||||
$Id: m-x.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* man.c: How to read and format man files.
|
||||
$Id: man.c,v 1.16 2002/02/23 19:12:02 karl Exp $
|
||||
$Id: man.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1995, 97, 98, 99, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* man.h: Defines and external function declarations for man.c.
|
||||
$Id: man.h,v 1.2 1997/07/15 18:42:56 karl Exp $
|
||||
$Id: man.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* nodemenu.c -- produce a menu of all visited nodes.
|
||||
$Id: nodemenu.c,v 1.8 1998/06/28 19:54:27 karl Exp $
|
||||
$Id: nodemenu.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* nodes.c -- how to get an Info file and node.
|
||||
$Id: nodes.c,v 1.15 2000/11/11 00:40:37 karl Exp $
|
||||
$Id: nodes.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 98, 99, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* nodes.h -- How we represent nodes internally.
|
||||
$Id: nodes.h,v 1.8 1998/07/10 20:28:43 karl Exp $
|
||||
$Id: nodes.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* search.c -- searching large bodies of text.
|
||||
$Id: search.c,v 1.6 2002/03/23 20:45:24 karl Exp $
|
||||
$Id: search.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* search.h -- Structure used to search large bodies of text, with bounds.
|
||||
$Id: search.h,v 1.4 1998/04/19 20:50:23 karl Exp $
|
||||
$Id: search.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* session.c -- user windowing interface to Info.
|
||||
$Id: session.c,v 1.45 2002/03/02 15:05:04 karl Exp $
|
||||
$Id: session.c,v 1.3 2003/01/24 19:05:53 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 96, 97, 98, 99, 2000, 01, 02
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -3936,7 +3936,7 @@ incremental_search (window, count, ignore)
|
||||
key = info_get_input_char ();
|
||||
window_get_state (window, &mystate);
|
||||
|
||||
if (key == DEL)
|
||||
if (key == DEL || key == Control ('h'))
|
||||
{
|
||||
/* User wants to delete one level of search? */
|
||||
if (!isearch_states_index)
|
||||
@ -3967,9 +3967,15 @@ incremental_search (window, count, ignore)
|
||||
|
||||
if (!Meta_p (key) || key > 32)
|
||||
{
|
||||
func = InfoFunction(window->keymap[key].function);
|
||||
/* If this key is not a keymap, get its associated function,
|
||||
if any. If it is a keymap, then it's probably ESC from an
|
||||
arrow key, and we handle that case below. */
|
||||
char type = window->keymap[key].type;
|
||||
func = type == ISFUNC
|
||||
? InfoFunction(window->keymap[key].function)
|
||||
: NULL; /* function member is a Keymap if ISKMAP */
|
||||
|
||||
if (isprint (key) || func == (VFunction *)NULL)
|
||||
if (isprint (key) || (type == ISFUNC && func == NULL))
|
||||
{
|
||||
insert_and_search:
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* session.h -- Functions found in session.c.
|
||||
$Id: session.h,v 1.10 2001/11/16 23:17:15 karl Exp $
|
||||
$Id: session.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 98, 99, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* signals.c -- install and maintain Info signal handlers.
|
||||
$Id: signals.c,v 1.6 1998/12/06 22:00:04 karl Exp $
|
||||
$Id: signals.c,v 1.4 2003/01/29 19:23:22 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 94, 95, 98 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1995, 1998, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -28,9 +29,6 @@
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Non-zero when our signal handler has been called to handle SIGWINCH. */
|
||||
static int in_sigwinch = 0;
|
||||
|
||||
#if !defined (HAVE_SIGPROCMASK) && defined (HAVE_SIGSETMASK)
|
||||
/* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */
|
||||
static void
|
||||
@ -63,32 +61,86 @@ sigprocmask (operation, newset, oldset)
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
typedef RETSIGTYPE signal_handler ();
|
||||
#if defined (HAVE_SIGACTION) || defined (HAVE_SIGPROCMASK) ||\
|
||||
defined (HAVE_SIGSETMASK)
|
||||
static void
|
||||
mask_termsig (set)
|
||||
sigset_t *set;
|
||||
{
|
||||
# if defined (SIGTSTP)
|
||||
sigaddset (set, SIGTSTP);
|
||||
sigaddset (set, SIGTTOU);
|
||||
sigaddset (set, SIGTTIN);
|
||||
# endif
|
||||
# if defined (SIGWINCH)
|
||||
sigaddset (set, SIGWINCH);
|
||||
# endif
|
||||
#if defined (SIGINT)
|
||||
sigaddset (set, SIGINT);
|
||||
#endif
|
||||
# if defined (SIGUSR1)
|
||||
sigaddset (set, SIGUSR1);
|
||||
# endif
|
||||
}
|
||||
#endif /* HAVE_SIGACTION || HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
|
||||
static RETSIGTYPE info_signal_handler ();
|
||||
static signal_handler *old_TSTP, *old_TTOU, *old_TTIN;
|
||||
static signal_handler *old_WINCH, *old_INT, *old_USR1;
|
||||
static RETSIGTYPE info_signal_proc ();
|
||||
#if defined (HAVE_SIGACTION)
|
||||
typedef struct sigaction signal_info;
|
||||
signal_info info_signal_handler;
|
||||
|
||||
static void
|
||||
set_termsig (sig, old)
|
||||
int sig;
|
||||
signal_info *old;
|
||||
{
|
||||
sigaction (sig, &info_signal_handler, old);
|
||||
}
|
||||
|
||||
static void
|
||||
restore_termsig (sig, saved)
|
||||
int sig;
|
||||
const signal_info *saved;
|
||||
{
|
||||
sigaction (sig, saved, NULL);
|
||||
}
|
||||
#else /* !HAVE_SIGACTION */
|
||||
typedef RETSIGTYPE (*signal_info) ();
|
||||
#define set_termsig(sig, old) (void)(*(old) = signal (sig, info_signal_proc))
|
||||
#define restore_termsig(sig, saved) (void)signal (sig, *(saved))
|
||||
#define info_signal_handler info_signal_proc
|
||||
static int term_conf_busy = 0;
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
|
||||
static signal_info old_TSTP, old_TTOU, old_TTIN;
|
||||
static signal_info old_WINCH, old_INT, old_USR1;
|
||||
|
||||
void
|
||||
initialize_info_signal_handler ()
|
||||
{
|
||||
#if defined (HAVE_SIGACTION)
|
||||
info_signal_handler.sa_handler = info_signal_proc;
|
||||
info_signal_handler.sa_flags = 0;
|
||||
mask_termsig (&info_signal_handler.sa_mask);
|
||||
#endif /* HAVE_SIGACTION */
|
||||
|
||||
#if defined (SIGTSTP)
|
||||
old_TSTP = (signal_handler *) signal (SIGTSTP, info_signal_handler);
|
||||
old_TTOU = (signal_handler *) signal (SIGTTOU, info_signal_handler);
|
||||
old_TTIN = (signal_handler *) signal (SIGTTIN, info_signal_handler);
|
||||
set_termsig (SIGTSTP, &old_TSTP);
|
||||
set_termsig (SIGTTOU, &old_TTOU);
|
||||
set_termsig (SIGTTIN, &old_TTIN);
|
||||
#endif /* SIGTSTP */
|
||||
|
||||
#if defined (SIGWINCH)
|
||||
old_WINCH = (signal_handler *) signal (SIGWINCH, info_signal_handler);
|
||||
set_termsig (SIGWINCH, &old_WINCH);
|
||||
#endif
|
||||
|
||||
#if defined (SIGINT)
|
||||
old_INT = (signal_handler *) signal (SIGINT, info_signal_handler);
|
||||
set_termsig (SIGINT, &old_INT);
|
||||
#endif
|
||||
|
||||
#if defined (SIGUSR1)
|
||||
/* Used by DJGPP to simulate SIGTSTP on Ctrl-Z. */
|
||||
old_USR1 = (signal_handler *) signal (SIGUSR1, info_signal_handler);
|
||||
set_termsig (SIGUSR1, &old_USR1);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -117,11 +169,25 @@ reset_info_window_sizes ()
|
||||
}
|
||||
|
||||
static RETSIGTYPE
|
||||
info_signal_handler (sig)
|
||||
info_signal_proc (sig)
|
||||
int sig;
|
||||
{
|
||||
signal_handler **old_signal_handler;
|
||||
signal_info *old_signal_handler;
|
||||
|
||||
#if !defined (HAVE_SIGACTION)
|
||||
/* best effort: first increment this counter and later block signals */
|
||||
if (term_conf_busy)
|
||||
return;
|
||||
term_conf_busy++;
|
||||
#if defined (HAVE_SIGPROCMASK) || defined (HAVE_SIGSETMASK)
|
||||
{
|
||||
sigset_t nvar, ovar;
|
||||
sigemptyset (&nvar);
|
||||
mask_termsig (&nvar);
|
||||
sigprocmask (SIG_BLOCK, &nvar, &ovar);
|
||||
}
|
||||
#endif /* HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
switch (sig)
|
||||
{
|
||||
#if defined (SIGTSTP)
|
||||
@ -141,8 +207,10 @@ info_signal_handler (sig)
|
||||
if (sig == SIGTTIN)
|
||||
old_signal_handler = &old_TTIN;
|
||||
#endif /* SIGTSTP */
|
||||
#if defined (SIGINT)
|
||||
if (sig == SIGINT)
|
||||
old_signal_handler = &old_INT;
|
||||
#endif /* SIGINT */
|
||||
|
||||
/* For stop signals, restore the terminal IO, leave the cursor
|
||||
at the bottom of the window, and stop us. */
|
||||
@ -150,17 +218,17 @@ info_signal_handler (sig)
|
||||
terminal_clear_to_eol ();
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal ();
|
||||
signal (sig, *old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
restore_termsig (sig, old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
|
||||
/* The program is returning now. Restore our signal handler,
|
||||
turn on terminal handling, redraw the screen, and place the
|
||||
cursor where it belongs. */
|
||||
terminal_prep_terminal ();
|
||||
*old_signal_handler = (signal_handler *) signal (sig, info_signal_handler);
|
||||
redisplay_after_signal ();
|
||||
fflush (stdout);
|
||||
set_termsig (sig, old_signal_handler);
|
||||
/* window size might be changed while sleeping */
|
||||
reset_info_window_sizes ();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -172,35 +240,42 @@ info_signal_handler (sig)
|
||||
case SIGUSR1:
|
||||
#endif
|
||||
{
|
||||
if (!in_sigwinch) {
|
||||
in_sigwinch++;
|
||||
|
||||
/* Turn off terminal IO, tell our parent that the window has changed,
|
||||
then reinitialize the terminal and rebuild our windows. */
|
||||
/* Turn off terminal IO, tell our parent that the window has changed,
|
||||
then reinitialize the terminal and rebuild our windows. */
|
||||
#ifdef SIGWINCH
|
||||
if (sig == SIGWINCH)
|
||||
old_signal_handler = &old_WINCH;
|
||||
if (sig == SIGWINCH)
|
||||
old_signal_handler = &old_WINCH;
|
||||
#endif
|
||||
#ifdef SIGUSR1
|
||||
if (sig == SIGUSR1)
|
||||
old_signal_handler = &old_USR1;
|
||||
if (sig == SIGUSR1)
|
||||
old_signal_handler = &old_USR1;
|
||||
#endif
|
||||
terminal_goto_xy (0, 0);
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal ();
|
||||
signal (sig, *old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
terminal_goto_xy (0, 0);
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal (); /* needless? */
|
||||
restore_termsig (sig, old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
|
||||
/* After our old signal handler returns... */
|
||||
*old_signal_handler
|
||||
= (signal_handler *) signal (sig, info_signal_handler);
|
||||
terminal_prep_terminal ();
|
||||
reset_info_window_sizes ();
|
||||
in_sigwinch--;
|
||||
}
|
||||
/* After our old signal handler returns... */
|
||||
set_termsig (sig, old_signal_handler); /* needless? */
|
||||
terminal_prep_terminal ();
|
||||
reset_info_window_sizes ();
|
||||
}
|
||||
break;
|
||||
#endif /* SIGWINCH || SIGUSR1 */
|
||||
}
|
||||
#if !defined (HAVE_SIGACTION)
|
||||
/* at this time it is safer to perform unblock after decrement */
|
||||
term_conf_busy--;
|
||||
#if defined (HAVE_SIGPROCMASK) || defined (HAVE_SIGSETMASK)
|
||||
{
|
||||
sigset_t nvar, ovar;
|
||||
sigemptyset (&nvar);
|
||||
mask_termsig (&nvar);
|
||||
sigprocmask (SIG_UNBLOCK, &nvar, &ovar);
|
||||
}
|
||||
#endif /* HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
}
|
||||
/* vim: set sw=2 cino={1s>2sn-s^-se-s: */
|
||||
|
@ -1,10 +1,7 @@
|
||||
/* signals.h -- Header to include system dependent signal definitions.
|
||||
$Id: signals.h,v 1.3 1997/07/15 18:35:59 karl Exp $
|
||||
/* signals.h -- header to include system dependent signal definitions.
|
||||
$Id: signals.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 94, 95, 97 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1995, 1997, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* termdep.h -- System things that terminal.c depends on.
|
||||
$Id: termdep.h,v 1.5 2001/09/12 17:26:03 karl Exp $
|
||||
/* termdep.h -- system things that terminal.c depends on.
|
||||
$Id: termdep.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 96, 97, 98, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1996, 1997, 1998, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* terminal.c -- How to handle the physical terminal for Info.
|
||||
$Id: terminal.c,v 1.23 2001/11/16 23:16:04 karl Exp $
|
||||
/* terminal.c -- how to handle the physical terminal for Info.
|
||||
$Id: terminal.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1988, 89, 90, 91, 92, 93, 96, 97, 98, 99, 2001
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1997, 1998,
|
||||
1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* terminal.h -- The external interface to terminal I/O.
|
||||
$Id: terminal.h,v 1.7 2001/11/16 23:17:29 karl Exp $
|
||||
$Id: terminal.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 96, 97, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* tilde.c -- tilde expansion code (~/foo := $HOME/foo).
|
||||
$Id: tilde.c,v 1.13 1999/03/03 22:42:21 karl Exp $
|
||||
$Id: tilde.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1988, 89, 90, 91, 92, 93, 96, 98, 99
|
||||
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1998, 1999, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* variables.c -- How to manipulate user visible variables in Info.
|
||||
$Id: variables.c,v 1.8 2001/11/16 23:16:19 karl Exp $
|
||||
/* variables.c -- how to manipulate user visible variables in Info.
|
||||
$Id: variables.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* variables.h -- Description of user visible variables in Info.
|
||||
$Id: variables.h,v 1.3 1997/07/15 18:44:23 karl Exp $
|
||||
$Id: variables.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* window.c -- windows in Info.
|
||||
$Id: window.c,v 1.16 2002/03/08 21:41:44 karl Exp $
|
||||
$Id: window.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1993, 97, 98, 2001, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* window.h -- Structure and flags used in manipulating Info windows.
|
||||
$Id: window.h,v 1.4 1997/07/15 18:45:47 karl Exp $
|
||||
$Id: window.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
@ -1,4 +1,13 @@
|
||||
Common routines for the Texinfo package.
|
||||
$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
|
||||
texinfo/lib/README
|
||||
|
||||
Copyright (C) 2002 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.
|
||||
|
||||
Common routines for the Texinfo programs.
|
||||
|
||||
Many are common to other GNU packages as well.
|
||||
(On the FSF machines, check /home/gd/gnu/lib for the latest.)
|
||||
See the gnulib project at savannah: http://savannah.gnu.org/projects/gnulib
|
||||
|
@ -1,22 +1,23 @@
|
||||
/* Getopt for GNU.
|
||||
NOTE: The canonical source of this file is maintained with the GNU
|
||||
C Library. Bugs can be reported to bug-glibc@gnu.org.
|
||||
|
||||
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
|
||||
NOTE: getopt is now part of the C library, so if you don't know what
|
||||
"Keep this file name-space clean" means, talk to drepper@gnu.org
|
||||
before changing it!
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
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, or (at your option) any
|
||||
later version.
|
||||
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, 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,
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
|
||||
@ -27,13 +28,13 @@
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#else
|
||||
# if !defined __STDC__ || !__STDC__
|
||||
#endif
|
||||
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
reject `defined (const)'. */
|
||||
# ifndef const
|
||||
# define const
|
||||
# endif
|
||||
# ifndef const
|
||||
# define const
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -74,15 +75,20 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef _
|
||||
/* This is for other GNU distributions with internationalized messages.
|
||||
When compiling libc, the _ macro is predefined. */
|
||||
# ifdef HAVE_LIBINTL_H
|
||||
# include <libintl.h>
|
||||
# define _(msgid) gettext (msgid)
|
||||
# else
|
||||
# define _(msgid) (msgid)
|
||||
# endif
|
||||
#ifdef _LIBC
|
||||
# include <libintl.h>
|
||||
#else
|
||||
/* This is for other GNU distributions with internationalized messages. */
|
||||
# include "gettext.h"
|
||||
#endif
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
# include <wchar.h>
|
||||
#endif
|
||||
|
||||
#ifndef attribute_hidden
|
||||
# define attribute_hidden
|
||||
#endif
|
||||
|
||||
/* This version of `getopt' appears to the caller like standard Unix `getopt'
|
||||
@ -128,7 +134,7 @@ int optind = 1;
|
||||
causes problems with re-calling getopt as programs generally don't
|
||||
know that. */
|
||||
|
||||
int __getopt_initialized;
|
||||
int __getopt_initialized attribute_hidden;
|
||||
|
||||
/* The next char to be scanned in the option-element
|
||||
in which the last option character we returned was found.
|
||||
@ -247,41 +253,34 @@ static int first_nonopt;
|
||||
static int last_nonopt;
|
||||
|
||||
#ifdef _LIBC
|
||||
/* Stored original parameters.
|
||||
XXX This is no good solution. We should rather copy the args so
|
||||
that we can compare them later. But we must not use malloc(3). */
|
||||
extern int __libc_argc;
|
||||
extern char **__libc_argv;
|
||||
|
||||
/* Bash 2.0 gives us an environment variable containing flags
|
||||
indicating ARGV elements that should not be considered arguments. */
|
||||
|
||||
# ifdef USE_NONOPTION_FLAGS
|
||||
/* Defined in getopt_init.c */
|
||||
extern char *__getopt_nonoption_flags;
|
||||
|
||||
static int nonoption_flags_max_len;
|
||||
static int nonoption_flags_len;
|
||||
# endif
|
||||
|
||||
static int original_argc;
|
||||
static char *const *original_argv;
|
||||
|
||||
/* Make sure the environment variable bash 2.0 puts in the environment
|
||||
is valid for the getopt call we must make sure that the ARGV passed
|
||||
to getopt is that one passed to the process. */
|
||||
static void
|
||||
__attribute__ ((unused))
|
||||
store_args_and_env (int argc, char *const *argv)
|
||||
{
|
||||
/* XXX This is no good solution. We should rather copy the args so
|
||||
that we can compare them later. But we must not use malloc(3). */
|
||||
original_argc = argc;
|
||||
original_argv = argv;
|
||||
}
|
||||
# ifdef text_set_element
|
||||
text_set_element (__libc_subinit, store_args_and_env);
|
||||
# endif /* text_set_element */
|
||||
|
||||
# define SWAP_FLAGS(ch1, ch2) \
|
||||
# ifdef USE_NONOPTION_FLAGS
|
||||
# define SWAP_FLAGS(ch1, ch2) \
|
||||
if (nonoption_flags_len > 0) \
|
||||
{ \
|
||||
char __tmp = __getopt_nonoption_flags[ch1]; \
|
||||
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
|
||||
__getopt_nonoption_flags[ch2] = __tmp; \
|
||||
}
|
||||
# else
|
||||
# define SWAP_FLAGS(ch1, ch2)
|
||||
# endif
|
||||
#else /* !_LIBC */
|
||||
# define SWAP_FLAGS(ch1, ch2)
|
||||
#endif /* _LIBC */
|
||||
@ -313,7 +312,7 @@ exchange (argv)
|
||||
It leaves the longer segment in the right place overall,
|
||||
but it consists of two parts that need to be swapped next. */
|
||||
|
||||
#ifdef _LIBC
|
||||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||||
/* First make sure the handling of the `__getopt_nonoption_flags'
|
||||
string can work normally. Our top argument must be in the range
|
||||
of the string. */
|
||||
@ -417,9 +416,9 @@ _getopt_initialize (argc, argv, optstring)
|
||||
else
|
||||
ordering = PERMUTE;
|
||||
|
||||
#ifdef _LIBC
|
||||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||||
if (posixly_correct == NULL
|
||||
&& argc == original_argc && argv == original_argv)
|
||||
&& argc == __libc_argc && argv == __libc_argv)
|
||||
{
|
||||
if (nonoption_flags_max_len == 0)
|
||||
{
|
||||
@ -515,6 +514,13 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
int *longind;
|
||||
int long_only;
|
||||
{
|
||||
int print_errors = opterr;
|
||||
if (optstring[0] == ':')
|
||||
print_errors = 0;
|
||||
|
||||
if (argc < 1)
|
||||
return -1;
|
||||
|
||||
optarg = NULL;
|
||||
|
||||
if (optind == 0 || !__getopt_initialized)
|
||||
@ -529,7 +535,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
Either it does not have option syntax, or there is an environment flag
|
||||
from the shell indicating it is not an option. The later information
|
||||
is only used when the used in the GNU libc. */
|
||||
#ifdef _LIBC
|
||||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||||
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|
||||
|| (optind < nonoption_flags_len \
|
||||
&& __getopt_nonoption_flags[optind] == '1'))
|
||||
@ -664,16 +670,37 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
pfound = p;
|
||||
indfound = option_index;
|
||||
}
|
||||
else
|
||||
else if (long_only
|
||||
|| pfound->has_arg != p->has_arg
|
||||
|| pfound->flag != p->flag
|
||||
|| pfound->val != p->val)
|
||||
/* Second or later nonexact match found. */
|
||||
ambig = 1;
|
||||
}
|
||||
|
||||
if (ambig && !exact)
|
||||
{
|
||||
if (opterr)
|
||||
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]) >= 0)
|
||||
{
|
||||
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optind++;
|
||||
optopt = 0;
|
||||
@ -692,18 +719,52 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
optarg = nameend + 1;
|
||||
else
|
||||
{
|
||||
if (opterr)
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (argv[optind - 1][1] == '-')
|
||||
/* --option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
{
|
||||
/* --option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("\
|
||||
%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
/* +option or -option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0], pfound->name);
|
||||
{
|
||||
/* +option or -option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("\
|
||||
%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0],
|
||||
pfound->name);
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
nextchar += strlen (nextchar);
|
||||
@ -718,10 +779,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
optarg = argv[optind++];
|
||||
else
|
||||
{
|
||||
if (opterr)
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optopt = pfound->val;
|
||||
return optstring[0] == ':' ? ':' : '?';
|
||||
@ -745,16 +824,47 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (!long_only || argv[optind][1] == '-'
|
||||
|| my_index (optstring, *nextchar) == NULL)
|
||||
{
|
||||
if (opterr)
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (argv[optind][1] == '-')
|
||||
/* --option */
|
||||
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
{
|
||||
/* --option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
#else
|
||||
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
/* +option or -option */
|
||||
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
{
|
||||
/* +option or -option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
#else
|
||||
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
nextchar = (char *) "";
|
||||
optind++;
|
||||
@ -775,15 +885,44 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
|
||||
if (temp == NULL || c == ':')
|
||||
{
|
||||
if (opterr)
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (posixly_correct)
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
fprintf (stderr, _("%s: illegal option -- %c\n"),
|
||||
argv[0], c);
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
|
||||
argv[0], c);
|
||||
#else
|
||||
fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
fprintf (stderr, _("%s: invalid option -- %c\n"),
|
||||
argv[0], c);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
|
||||
argv[0], c);
|
||||
#else
|
||||
fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
return '?';
|
||||
@ -809,11 +948,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
}
|
||||
else if (optind == argc)
|
||||
{
|
||||
if (opterr)
|
||||
if (print_errors)
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf,
|
||||
_("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c);
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
if (optstring[0] == ':')
|
||||
@ -858,9 +1013,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
}
|
||||
if (ambig && !exact)
|
||||
{
|
||||
if (opterr)
|
||||
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optind++;
|
||||
return '?';
|
||||
@ -876,10 +1048,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
optarg = nameend + 1;
|
||||
else
|
||||
{
|
||||
if (opterr)
|
||||
fprintf (stderr, _("\
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `-W %s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
argv[0], pfound->name) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `-W %s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
|
||||
nextchar += strlen (nextchar);
|
||||
return '?';
|
||||
@ -891,10 +1081,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
optarg = argv[optind++];
|
||||
else
|
||||
{
|
||||
if (opterr)
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
return optstring[0] == ':' ? ':' : '?';
|
||||
}
|
||||
@ -938,12 +1146,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
}
|
||||
else if (optind == argc)
|
||||
{
|
||||
if (opterr)
|
||||
if (print_errors)
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option requires an argument -- %c\n"),
|
||||
argv[0], c) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c);
|
||||
_("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c);
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
if (optstring[0] == ':')
|
||||
|
@ -1,21 +1,20 @@
|
||||
/* Declarations for getopt.
|
||||
Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@gnu.org.
|
||||
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, or (at your option) any
|
||||
later version.
|
||||
Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _GETOPT_H
|
||||
|
||||
@ -23,6 +22,17 @@
|
||||
# define _GETOPT_H 1
|
||||
#endif
|
||||
|
||||
/* If __GNU_LIBRARY__ is not already defined, either we are being used
|
||||
standalone, or this is the first header included in the source file.
|
||||
If we are being used with glibc, we need to include <features.h>, but
|
||||
that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
|
||||
not defined, include <ctype.h>, which will pull in <features.h> for us
|
||||
if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
|
||||
doesn't flood the namespace with stuff the way some other headers do.) */
|
||||
#if !defined __GNU_LIBRARY__
|
||||
# include <ctype.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -82,7 +92,7 @@ extern int optopt;
|
||||
|
||||
struct option
|
||||
{
|
||||
# if defined __STDC__ && __STDC__
|
||||
# if (defined __STDC__ && __STDC__) || defined __cplusplus
|
||||
const char *name;
|
||||
# else
|
||||
char *name;
|
||||
@ -126,25 +136,26 @@ struct option
|
||||
arguments to the option '\0'. This behavior is specific to the GNU
|
||||
`getopt'. */
|
||||
|
||||
#if defined __STDC__ && __STDC__
|
||||
#if (defined __STDC__ && __STDC__) || defined __cplusplus
|
||||
# ifdef __GNU_LIBRARY__
|
||||
/* Many other libraries have conflicting prototypes for getopt, with
|
||||
differences in the consts, in stdlib.h. To avoid compilation
|
||||
errors, only prototype getopt for the GNU C library. */
|
||||
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
|
||||
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
|
||||
# else /* not __GNU_LIBRARY__ */
|
||||
extern int getopt ();
|
||||
# endif /* __GNU_LIBRARY__ */
|
||||
|
||||
# ifndef __need_getopt
|
||||
extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
|
||||
extern int getopt_long (int ___argc, char *const *___argv,
|
||||
const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind);
|
||||
extern int getopt_long_only (int __argc, char *const *__argv,
|
||||
extern int getopt_long_only (int ___argc, char *const *___argv,
|
||||
const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind);
|
||||
|
||||
/* Internal only. Users should not call this directly. */
|
||||
extern int _getopt_internal (int __argc, char *const *__argv,
|
||||
extern int _getopt_internal (int ___argc, char *const *___argv,
|
||||
const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind,
|
||||
int __long_only);
|
||||
|
@ -1,26 +1,32 @@
|
||||
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
|
||||
Free Software Foundation, Inc.
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@gnu.org.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
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, or (at your option) any
|
||||
later version.
|
||||
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, 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,
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <getopt.h>
|
||||
#else
|
||||
# include "getopt.h"
|
||||
#endif
|
||||
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
reject `defined (const)'. */
|
||||
@ -28,9 +34,6 @@
|
||||
#define const
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "getopt.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
@ -90,6 +93,10 @@ getopt_long_only (argc, argv, options, long_options, opt_index)
|
||||
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
|
||||
}
|
||||
|
||||
# ifdef _LIBC
|
||||
libc_hidden_def (getopt_long)
|
||||
libc_hidden_def (getopt_long_only)
|
||||
# endif
|
||||
|
||||
#endif /* Not ELIDE_CODE. */
|
||||
|
||||
|
@ -27,13 +27,21 @@
|
||||
|
||||
#else
|
||||
|
||||
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
|
||||
chokes if dcgettext is defined as a macro. So include it now, to make
|
||||
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
|
||||
as well because people using "gettext.h" will not include <libintl.h>,
|
||||
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
|
||||
is OK. */
|
||||
#if defined(__sun)
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
/* Disabled NLS.
|
||||
The casts to 'const char *' serve the purpose of producing warnings
|
||||
for invalid uses of the value returned from these functions.
|
||||
On pre-ANSI systems without 'const', the config.h file is supposed to
|
||||
contain "#define const". */
|
||||
#if 0
|
||||
/* no thanks, not ready to go const --karl, 26feb02 */
|
||||
# define gettext(Msgid) ((const char *) (Msgid))
|
||||
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
|
||||
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
|
||||
@ -46,20 +54,7 @@
|
||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
||||
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
|
||||
#else /* not 0 */
|
||||
# define gettext(Msgid) ((Msgid))
|
||||
# define dgettext(Domainname, Msgid) (Msgid)
|
||||
# define dcgettext(Domainname, Msgid, Category) (Msgid)
|
||||
# define ngettext(Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (Msgid1) : (Msgid2))
|
||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (Msgid1) : (Msgid2))
|
||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
||||
((N) == 1 ? (Msgid1) : (Msgid2))
|
||||
# define textdomain(Domainname) (Domainname)
|
||||
# define bindtextdomain(Domainname, Dirname) (Dirname)
|
||||
# define bind_textdomain_codeset(Domainname, Codeset) (Codeset)
|
||||
#endif /* 0 */
|
||||
|
||||
#endif
|
||||
|
||||
/* A pseudo function call that serves as a marker for the automated
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* substring.c -- extract substring.
|
||||
$Id: substring.c,v 1.1 1999/02/17 22:30:10 karl Exp $
|
||||
$Id: substring.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* system.h: system-dependent declarations; include this first.
|
||||
$Id: system.h,v 1.22 2002/02/26 14:31:18 karl Exp $
|
||||
$Id: system.h,v 1.4 2002/10/31 13:44:06 karl Exp $
|
||||
|
||||
Copyright (C) 1997, 98, 99, 00, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -24,6 +25,16 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef MIKTEX
|
||||
#include <gnu-miktex.h>
|
||||
#define S_ISDIR(x) ((x)&_S_IFDIR)
|
||||
#else
|
||||
/* MiKTeX defines substring() in a separate DLL, where it has its
|
||||
own __declspec declaration. We don't want to try to duplicate
|
||||
this Microsoft-ism here. */
|
||||
extern char *substring ();
|
||||
#endif
|
||||
|
||||
/* <unistd.h> should be included before any preprocessor test
|
||||
of _POSIX_VERSION. */
|
||||
#ifdef HAVE_UNISTD_H
|
||||
@ -43,7 +54,10 @@
|
||||
#endif
|
||||
|
||||
/* For gettext (NLS). */
|
||||
#define const
|
||||
#include "gettext.h"
|
||||
#undef const
|
||||
|
||||
#define _(String) gettext (String)
|
||||
#define N_(String) (String)
|
||||
|
||||
@ -240,7 +254,6 @@ struct passwd *getpwnam ();
|
||||
extern void *xmalloc (), *xrealloc ();
|
||||
extern char *xstrdup ();
|
||||
extern void xexit ();
|
||||
extern char *substring ();
|
||||
|
||||
/* For convenience. */
|
||||
#define STREQ(s1,s2) (strcmp (s1, s2) == 0)
|
||||
|
87
contrib/texinfo/lib/xalloc.h
Normal file
87
contrib/texinfo/lib/xalloc.h
Normal file
@ -0,0 +1,87 @@
|
||||
/* xalloc.h -- malloc with out-of-memory checking
|
||||
Copyright (C) 1990-1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef XALLOC_H_
|
||||
# define XALLOC_H_
|
||||
|
||||
# ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef __attribute__
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
|
||||
# define __attribute__(x)
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef ATTRIBUTE_NORETURN
|
||||
# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
|
||||
# endif
|
||||
|
||||
/* Exit value when the requested amount of memory is not available.
|
||||
It is initialized to EXIT_FAILURE, but the caller may set it to
|
||||
some other value. */
|
||||
extern int xalloc_exit_failure;
|
||||
|
||||
/* If this pointer is non-zero, run the specified function upon each
|
||||
allocation failure. It is initialized to zero. */
|
||||
extern void (*xalloc_fail_func) PARAMS ((void));
|
||||
|
||||
/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this
|
||||
message is output. It is translated via gettext.
|
||||
Its value is "memory exhausted". */
|
||||
extern char const xalloc_msg_memory_exhausted[];
|
||||
|
||||
/* This function is always triggered when memory is exhausted. It is
|
||||
in charge of honoring the three previous items. This is the
|
||||
function to call when one wants the program to die because of a
|
||||
memory allocation failure. */
|
||||
extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN;
|
||||
|
||||
void *xmalloc PARAMS ((size_t n));
|
||||
void *xcalloc PARAMS ((size_t n, size_t s));
|
||||
void *xrealloc PARAMS ((void *p, size_t n));
|
||||
char *xstrdup PARAMS ((const char *str));
|
||||
|
||||
# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items)))
|
||||
# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items)))
|
||||
# define XREALLOC(Ptr, Type, N_items) \
|
||||
((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items)))
|
||||
|
||||
/* Declare and alloc memory for VAR of type TYPE. */
|
||||
# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1)
|
||||
|
||||
/* Free VAR only if non NULL. */
|
||||
# define XFREE(Var) \
|
||||
do { \
|
||||
if (Var) \
|
||||
free (Var); \
|
||||
} while (0)
|
||||
|
||||
/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */
|
||||
# define CCLONE(Src, Num) \
|
||||
(memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num)))
|
||||
|
||||
/* Return a malloc'ed copy of SRC. */
|
||||
# define CLONE(Src) CCLONE (Src, 1)
|
||||
|
||||
|
||||
#endif /* !XALLOC_H_ */
|
@ -1,5 +1,5 @@
|
||||
/* xexit.c -- exit with attention to return values and closing stdout.
|
||||
$Id: xexit.c,v 1.5 1999/02/19 14:13:51 karl Exp $
|
||||
$Id: xexit.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* xstrdup.c -- copy a string with out of memory checking
|
||||
Copyright (C) 1990, 1996, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1996, 1998, 2001 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -19,14 +19,6 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if STDC_HEADERS || HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#else
|
||||
@ -35,7 +27,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
char *xmalloc PARAMS ((size_t n));
|
||||
#include "xalloc.h"
|
||||
|
||||
/* Return a newly allocated copy of STRING. */
|
||||
|
||||
|
@ -1,7 +1,16 @@
|
||||
$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
|
||||
texinfo/makeinfo/README
|
||||
|
||||
Copyright (C) 2002 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.
|
||||
|
||||
makeinfo is a standalone program to convert Texinfo source into Info
|
||||
files readable with standalone info or M-x info in Emacs.
|
||||
|
||||
makeinfo can also output plain ASCII (with --no-headers)
|
||||
makeinfo can also output other formats: plain ASCII (with --no-headers)
|
||||
or HTML (with --html) or XML (with --xml).
|
||||
|
||||
The Emacs function M-x texinfo-format-buffer does more or less the same
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* cmds.c -- Texinfo commands.
|
||||
$Id: cmds.c,v 1.79 2002/03/28 16:35:29 karl Exp $
|
||||
$Id: cmds.c,v 1.16 2003/01/12 15:18:24 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -22,6 +23,7 @@
|
||||
#include "defun.h"
|
||||
#include "files.h"
|
||||
#include "footnote.h"
|
||||
#include "html.h"
|
||||
#include "insertion.h"
|
||||
#include "lang.h"
|
||||
#include "macro.h"
|
||||
@ -64,7 +66,7 @@ void
|
||||
cm_defcodeindex (), cm_result (), cm_expansion (), cm_equiv (),
|
||||
cm_print (), cm_error (), cm_point (), cm_today (), cm_flushleft (),
|
||||
cm_flushright (), cm_finalout (), cm_cartouche (), cm_detailmenu (),
|
||||
cm_multitable (), cm_settitle (), cm_titlefont (), cm_tt (),
|
||||
cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (), cm_tie (), cm_tt (),
|
||||
cm_verbatim (), cm_verbatiminclude ();
|
||||
|
||||
/* Conditionals. */
|
||||
@ -237,9 +239,11 @@ COMMAND command_table[] = {
|
||||
{ "ifnotinfo", cm_ifnotinfo, NO_BRACE_ARGS },
|
||||
{ "ifnotplaintext", cm_ifnotplaintext, NO_BRACE_ARGS },
|
||||
{ "ifnottex", cm_ifnottex, NO_BRACE_ARGS },
|
||||
{ "ifnotxml", cm_ifnotxml, NO_BRACE_ARGS },
|
||||
{ "ifplaintext", cm_ifplaintext, NO_BRACE_ARGS },
|
||||
{ "ifset", cm_ifset, NO_BRACE_ARGS },
|
||||
{ "iftex", cm_iftex, NO_BRACE_ARGS },
|
||||
{ "ifxml", cm_ifxml, NO_BRACE_ARGS },
|
||||
{ "ignore", command_name_condition, NO_BRACE_ARGS },
|
||||
{ "image", cm_image, BRACE_ARGS },
|
||||
{ "include", cm_include, NO_BRACE_ARGS },
|
||||
@ -320,10 +324,11 @@ COMMAND command_table[] = {
|
||||
{ "tab", cm_tab, NO_BRACE_ARGS },
|
||||
{ "table", cm_table, NO_BRACE_ARGS },
|
||||
{ "tex", cm_tex, NO_BRACE_ARGS },
|
||||
{ "tie", cm_tie, BRACE_ARGS },
|
||||
{ "tieaccent", cm_accent, MAYBE_BRACE_ARGS },
|
||||
{ "tindex", cm_tindex, NO_BRACE_ARGS },
|
||||
{ "titlefont", cm_titlefont, BRACE_ARGS },
|
||||
{ "titlepage", command_name_condition, NO_BRACE_ARGS },
|
||||
{ "titlepage", cm_titlepage, NO_BRACE_ARGS },
|
||||
{ "today", cm_today, BRACE_ARGS },
|
||||
{ "top", cm_top, NO_BRACE_ARGS },
|
||||
{ "u", cm_accent, MAYBE_BRACE_ARGS },
|
||||
@ -345,6 +350,7 @@ COMMAND command_table[] = {
|
||||
{ "vindex", cm_vindex, NO_BRACE_ARGS },
|
||||
{ "vtable", cm_vtable, NO_BRACE_ARGS },
|
||||
{ "w", cm_w, BRACE_ARGS },
|
||||
{ "xml", cm_html, NO_BRACE_ARGS },
|
||||
{ "xref", cm_xref, BRACE_ARGS },
|
||||
|
||||
/* Deprecated commands. These used to be for italics. */
|
||||
@ -387,9 +393,9 @@ insert_space (arg)
|
||||
if (arg == START)
|
||||
{
|
||||
if (xml && !docbook)
|
||||
xml_insert_entity ("space");
|
||||
xml_insert_entity ("space");
|
||||
else
|
||||
add_char (' ');
|
||||
add_char (' ');
|
||||
}
|
||||
}
|
||||
|
||||
@ -418,11 +424,12 @@ cm_dots (arg)
|
||||
if (arg == START)
|
||||
{
|
||||
if (xml && !docbook)
|
||||
xml_insert_entity ("dots");
|
||||
xml_insert_entity ("dots");
|
||||
else if (docbook)
|
||||
xml_insert_entity ("hellip");
|
||||
xml_insert_entity ("hellip");
|
||||
else
|
||||
add_word (html ? "<small>...</small>" : "...");
|
||||
add_word (html && !in_fixed_width_font
|
||||
? "<small class=\"dots\">...</small>" : "...");
|
||||
}
|
||||
}
|
||||
|
||||
@ -441,7 +448,8 @@ cm_enddots (arg)
|
||||
add_char ('.');
|
||||
}
|
||||
else
|
||||
add_word (html ? "<small>...</small>." : "....");
|
||||
add_word (html && !in_fixed_width_font
|
||||
? "<small class=\"enddots\">....</small>" : "....");
|
||||
}
|
||||
}
|
||||
|
||||
@ -553,24 +561,24 @@ cm_code (arg)
|
||||
xml_insert_element (CODE, arg);
|
||||
else
|
||||
{
|
||||
extern int printing_index;
|
||||
extern int printing_index;
|
||||
|
||||
if (arg == START)
|
||||
{
|
||||
in_fixed_width_font++;
|
||||
if (arg == START)
|
||||
{
|
||||
in_fixed_width_font++;
|
||||
|
||||
if (html)
|
||||
if (html)
|
||||
insert_html_tag (arg, "code");
|
||||
else if (!printing_index)
|
||||
add_char ('`');
|
||||
}
|
||||
else if (html)
|
||||
insert_html_tag (arg, "code");
|
||||
else if (!printing_index)
|
||||
add_char ('`');
|
||||
}
|
||||
else if (html)
|
||||
insert_html_tag (arg, "code");
|
||||
else
|
||||
{
|
||||
if (!printing_index)
|
||||
add_meta_char ('\'');
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!printing_index)
|
||||
add_meta_char ('\'');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -604,9 +612,10 @@ cm_url (arg, start, end)
|
||||
else if (html)
|
||||
{
|
||||
if (arg == START)
|
||||
add_word ("<<code>");
|
||||
else
|
||||
add_word ("</code>>");
|
||||
add_word ("<");
|
||||
insert_html_tag (arg, "code");
|
||||
if (arg != START)
|
||||
add_word (">");
|
||||
}
|
||||
else
|
||||
if (arg == START)
|
||||
@ -748,7 +757,7 @@ cm_verb (arg)
|
||||
last_char_was_newline = 0;
|
||||
|
||||
if (html)
|
||||
add_word ("<pre>");
|
||||
add_word ("<tt>");
|
||||
|
||||
if (input_text_offset < input_text_length)
|
||||
{
|
||||
@ -770,18 +779,28 @@ cm_verb (arg)
|
||||
character = curchar ();
|
||||
|
||||
if (character == '\n')
|
||||
line_number++;
|
||||
/*
|
||||
Assume no newlines in END_VERBATIM
|
||||
*/
|
||||
{
|
||||
line_number++;
|
||||
if (html)
|
||||
add_word ("<br>\n");
|
||||
}
|
||||
|
||||
else if (html && character == '<')
|
||||
add_word ("<");
|
||||
|
||||
else if (html && character == '&')
|
||||
add_word ("&");
|
||||
|
||||
else if (character == delimiter)
|
||||
{
|
||||
{ /* Assume no newlines in END_VERBATIM. */
|
||||
seen_end = 1;
|
||||
input_text_offset++;
|
||||
break;
|
||||
}
|
||||
|
||||
add_char (character);
|
||||
else
|
||||
add_char (character);
|
||||
|
||||
input_text_offset++;
|
||||
}
|
||||
|
||||
@ -798,9 +817,12 @@ cm_verb (arg)
|
||||
}
|
||||
|
||||
if (html)
|
||||
add_word ("</pre>");
|
||||
add_word ("</tt>");
|
||||
|
||||
in_fixed_width_font--;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
cm_strong (arg, position)
|
||||
int arg, position;
|
||||
@ -872,25 +894,9 @@ cm_r (arg)
|
||||
xml_insert_element (R, arg);
|
||||
else
|
||||
{
|
||||
extern int printing_index;
|
||||
if (html)
|
||||
insert_html_tag (arg, "");
|
||||
|
||||
/* People use @r{} in index entries like this:
|
||||
|
||||
@findex foo@r{, some text}
|
||||
|
||||
This is supposed to produce output as if the entry were saying
|
||||
"@code{foo}, some text", since the "fn" index is typeset as
|
||||
@code. The following attempts to do the same in HTML. Note that
|
||||
this relies on the fact that only @code bumps up the variable
|
||||
in_fixed_width_font while processing index entries in HTML mode. */
|
||||
if (html && printing_index)
|
||||
{
|
||||
int level = in_fixed_width_font;
|
||||
|
||||
while (level--)
|
||||
insert_html_tag (arg == START ? END : START, "code");
|
||||
}
|
||||
|
||||
not_fixed_width (arg);
|
||||
}
|
||||
}
|
||||
@ -902,7 +908,27 @@ cm_titlefont (arg)
|
||||
if (xml)
|
||||
xml_insert_element (TITLEFONT, arg);
|
||||
else
|
||||
not_fixed_width (arg);
|
||||
{
|
||||
not_fixed_width (arg);
|
||||
if (html)
|
||||
{
|
||||
html_title_written = 1; /* suppress title from @settitle */
|
||||
if (arg == START)
|
||||
add_word ("<h1 class=\"titlefont\">");
|
||||
else
|
||||
add_word ("</h1>\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int titlepage_cmd_present = 0;
|
||||
|
||||
void
|
||||
cm_titlepage (arg)
|
||||
int arg;
|
||||
{
|
||||
titlepage_cmd_present = 1;
|
||||
command_name_condition ();
|
||||
}
|
||||
|
||||
/* Various commands are no-op's. */
|
||||
@ -932,6 +958,22 @@ cm_w (arg, start, end)
|
||||
}
|
||||
|
||||
|
||||
/* An unbreakable word space. Same as @w{ } for makeinfo, but different
|
||||
for TeX (the space stretches and stretches, and does not inhibit
|
||||
hyphenation). */
|
||||
void
|
||||
cm_tie (arg)
|
||||
int arg;
|
||||
{
|
||||
if (arg == START)
|
||||
{
|
||||
cm_w (START);
|
||||
add_char (' ');
|
||||
}
|
||||
else
|
||||
cm_w (END);
|
||||
}
|
||||
|
||||
/* Explain that this command is obsolete, thus the user shouldn't
|
||||
do anything with it. */
|
||||
static void
|
||||
@ -976,9 +1018,16 @@ cm_settitle ()
|
||||
{
|
||||
xml_begin_document (current_output_filename);
|
||||
xml_insert_element (SETTITLE, START);
|
||||
xml_in_book_title = 1;
|
||||
get_rest_of_line (0, &title);
|
||||
execute_string ("%s", title);
|
||||
xml_in_book_title = 0;
|
||||
xml_insert_element (SETTITLE, END);
|
||||
if (docbook && !xml_in_bookinfo)
|
||||
{
|
||||
xml_insert_element (BOOKINFO, START);
|
||||
xml_in_bookinfo = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
get_rest_of_line (0, &title);
|
||||
@ -1115,7 +1164,7 @@ cm_center ()
|
||||
execute_string ("%s", (char *)line);
|
||||
free (line);
|
||||
uninhibit_output_flushing ();
|
||||
if (html)
|
||||
if (html)
|
||||
add_word ("</div>");
|
||||
|
||||
else
|
||||
@ -1214,7 +1263,7 @@ cm_exdent ()
|
||||
int save_indent = current_indent;
|
||||
int save_in_fixed_width_font = in_fixed_width_font;
|
||||
|
||||
/* Read argument */
|
||||
/* Read argument. */
|
||||
get_rest_of_line (0, &line);
|
||||
|
||||
/* Exdent the output. Actually this may be a no-op. */
|
||||
@ -1242,6 +1291,7 @@ cm_exdent ()
|
||||
|
||||
current_indent = save_indent;
|
||||
in_fixed_width_font = save_in_fixed_width_font;
|
||||
start_paragraph ();
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1253,13 +1303,17 @@ static void
|
||||
handle_include (verbatim_include)
|
||||
int verbatim_include;
|
||||
{
|
||||
char *filename;
|
||||
char *arg, *filename;
|
||||
|
||||
if (macro_expansion_output_stream && !executing_string)
|
||||
me_append_before_this_command ();
|
||||
|
||||
close_paragraph ();
|
||||
get_rest_of_line (0, &filename);
|
||||
get_rest_of_line (0, &arg);
|
||||
/* We really only want to expand @value, but it's easier to just do
|
||||
everything. TeX will only work with @value. */
|
||||
filename = text_expansion (arg);
|
||||
free (arg);
|
||||
|
||||
if (macro_expansion_output_stream && !executing_string)
|
||||
remember_itext (input_text, input_text_offset);
|
||||
@ -1283,8 +1337,6 @@ handle_include (verbatim_include)
|
||||
|
||||
if (!find_and_load (filename))
|
||||
{
|
||||
extern int errno;
|
||||
|
||||
popfile ();
|
||||
line_number--;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* cmds.h -- declarations for cmds.c.
|
||||
$Id: cmds.h,v 1.4 1999/04/25 20:43:51 karl Exp $
|
||||
$Id: cmds.h,v 1.3 2002/11/04 22:15:19 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -47,4 +47,7 @@ typedef struct
|
||||
|
||||
extern COMMAND command_table[];
|
||||
|
||||
/* Nonzero if we have seen an @titlepage command. */
|
||||
extern int titlepage_cmd_present;
|
||||
|
||||
#endif /* !CMDS_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* defun.c -- @defun and friends.
|
||||
$Id: defun.c,v 1.19 2002/03/18 16:54:54 karl Exp $
|
||||
$Id: defun.c,v 1.3 2002/11/11 00:57:49 feloy Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -19,9 +19,11 @@
|
||||
|
||||
#include "system.h"
|
||||
#include "defun.h"
|
||||
#include "docbook.h"
|
||||
#include "xml.h"
|
||||
#include "insertion.h"
|
||||
#include "makeinfo.h"
|
||||
#include "cmds.h"
|
||||
#include "html.h"
|
||||
|
||||
|
||||
#define DEFUN_SELF_DELIMITING(c) \
|
||||
@ -239,7 +241,13 @@ process_defun_args (defun_args, auto_var_p)
|
||||
}
|
||||
|
||||
if (DEFUN_SELF_DELIMITING (defun_arg[0]))
|
||||
add_char (defun_arg[0]);
|
||||
{
|
||||
/* Within @deffn and friends, texinfo.tex makes parentheses
|
||||
sans serif and brackets bold. We use roman instead. */
|
||||
insert_html_tag (START, "");
|
||||
add_char (defun_arg[0]);
|
||||
insert_html_tag (END, "");
|
||||
}
|
||||
else if (defun_arg[0] == '&')
|
||||
if (html)
|
||||
{
|
||||
@ -446,8 +454,6 @@ defun_internal (type, x_p)
|
||||
/* Start the definition on new paragraph. */
|
||||
if (html)
|
||||
add_word ("<p>\n");
|
||||
if (docbook)
|
||||
docbook_begin_paragraph ();
|
||||
}
|
||||
|
||||
if (!html && !docbook)
|
||||
@ -506,30 +512,34 @@ defun_internal (type, x_p)
|
||||
case defvr:
|
||||
case deftp:
|
||||
/* <i> is for the following function arguments. */
|
||||
add_word ("<b>");
|
||||
insert_html_tag (START, "b");
|
||||
execute_string ("%s", defined_name);
|
||||
add_word ("</b><i>");
|
||||
insert_html_tag (END, "b");
|
||||
insert_html_tag (START, "i");
|
||||
break;
|
||||
case deftypefn:
|
||||
case deftypevr:
|
||||
execute_string ("%s ", type_name);
|
||||
add_word ("<b>");
|
||||
insert_html_tag (START, "b");
|
||||
execute_string ("%s", defined_name);
|
||||
add_word ("</b><i>");
|
||||
insert_html_tag (END, "b");
|
||||
insert_html_tag (START, "i");
|
||||
break;
|
||||
case defcv:
|
||||
case defop:
|
||||
add_word ("<b>");
|
||||
insert_html_tag (START, "b");
|
||||
execute_string ("%s", defined_name);
|
||||
add_word ("</b><i>");
|
||||
insert_html_tag (END, "b");
|
||||
insert_html_tag (START, "i");
|
||||
break;
|
||||
case deftypemethod:
|
||||
case deftypeop:
|
||||
case deftypeivar:
|
||||
execute_string ("%s ", type_name2);
|
||||
add_word ("<b>");
|
||||
insert_html_tag (START, "b");
|
||||
execute_string ("%s", defined_name);
|
||||
add_word ("</b><i>");
|
||||
insert_html_tag (END, "b");
|
||||
insert_html_tag (START, "i");
|
||||
break;
|
||||
}
|
||||
} /* if (html)... */
|
||||
@ -543,19 +553,24 @@ defun_internal (type, x_p)
|
||||
case deftp:
|
||||
case defcv:
|
||||
case defop:
|
||||
add_word_args ("<%s>%s</%s>", DB_FUNCTION, defined_name,
|
||||
DB_FUNCTION);
|
||||
xml_insert_element (FUNCTION, START);
|
||||
execute_string ("%s", defined_name);
|
||||
xml_insert_element (FUNCTION, END);
|
||||
break;
|
||||
case deftypefn:
|
||||
case deftypevr:
|
||||
add_word_args ("%s <%s>%s</%s>", type_name, DB_FUNCTION,
|
||||
defined_name, DB_FUNCTION);
|
||||
execute_string ("%s", type_name);
|
||||
xml_insert_element (FUNCTION, START);
|
||||
execute_string ("%s", defined_name);
|
||||
xml_insert_element (FUNCTION, END);
|
||||
break;
|
||||
case deftypemethod:
|
||||
case deftypeop:
|
||||
case deftypeivar:
|
||||
add_word_args ("%s <%s>%s</%s>", type_name2, DB_FUNCTION,
|
||||
defined_name, DB_FUNCTION);
|
||||
execute_string ("%s", type_name2);
|
||||
xml_insert_element (FUNCTION, START);
|
||||
execute_string ("%s", defined_name);
|
||||
xml_insert_element (FUNCTION, END);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -602,7 +617,7 @@ defun_internal (type, x_p)
|
||||
case deftp:
|
||||
case deftypefn:
|
||||
case deftypevr:
|
||||
add_word ("</i>"); /* close italic area for arguments */
|
||||
insert_html_tag (END, "i"); /* close italic area for arguments */
|
||||
/* put the rest into the second column */
|
||||
add_word ("</td>\n");
|
||||
add_html_elt ("<td align=\"right\">");
|
||||
@ -618,14 +633,14 @@ defun_internal (type, x_p)
|
||||
case defop:
|
||||
case deftypemethod:
|
||||
case deftypeop:
|
||||
add_word ("</i>");
|
||||
insert_html_tag (END, "i");
|
||||
add_word ("</td>\n");
|
||||
add_html_elt ("<td align=\"right\">");
|
||||
execute_string ("%s %s %s", category, _("on"), type_name);
|
||||
break;
|
||||
|
||||
case deftypeivar:
|
||||
add_word ("</i>");
|
||||
insert_html_tag (END, "i");
|
||||
add_word ("</td>\n");
|
||||
add_html_elt ("<td align=\"right\">");
|
||||
execute_string ("%s %s %s", category, _("of"), type_name);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* defun.h -- declaration for defuns.
|
||||
$Id: defun.h,v 1.2 1999/03/25 22:49:10 karl Exp $
|
||||
$Id: defun.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* files.c -- file-related functions for makeinfo.
|
||||
$Id: files.c,v 1.10 2002/01/16 15:52:45 karl Exp $
|
||||
$Id: files.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* files.h -- declarations for files.c.
|
||||
$Id: files.h,v 1.2 2002/01/16 15:52:45 karl Exp $
|
||||
$Id: files.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* footnote.c -- footnotes for Texinfo.
|
||||
$Id: footnote.c,v 1.13 2002/03/02 15:05:21 karl Exp $
|
||||
$Id: footnote.c,v 1.4 2002/11/05 03:04:26 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -237,7 +237,7 @@ cm_footnote ()
|
||||
`fn-<n>', though that's unlikely. */
|
||||
if (html)
|
||||
{
|
||||
add_html_elt ("<a rel=footnote href=");
|
||||
add_html_elt ("<a rel=\"footnote\" href=");
|
||||
add_word_args ("\"#fn-%d\"><sup>%s</sup></a>",
|
||||
current_footnote_number, marker);
|
||||
}
|
||||
@ -294,7 +294,7 @@ output_pending_notes ()
|
||||
out there doesn't use numbers by default. Since we rely on the
|
||||
browser to produce the footnote numbers, we need to make sure
|
||||
they ARE indeed numbers. Pre-HTML4 browsers seem to not care. */
|
||||
add_word ("<hr><h4>");
|
||||
add_word ("<div class=\"footnote\">\n<hr>\n<h4>");
|
||||
add_word (_("Footnotes"));
|
||||
add_word ("</h4>\n<ol type=\"1\">\n");
|
||||
}
|
||||
@ -372,7 +372,7 @@ output_pending_notes ()
|
||||
}
|
||||
|
||||
if (html)
|
||||
add_word ("</ol><hr>");
|
||||
add_word ("</ol><hr></div>");
|
||||
close_paragraph ();
|
||||
free (array);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* footnote.h -- declarations for footnote.c.
|
||||
$Id: footnote.h,v 1.2 1998/10/26 22:16:15 karl Exp $
|
||||
$Id: footnote.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* html.c -- html-related utilities.
|
||||
$Id: html.c,v 1.26 2002/03/23 20:39:49 karl Exp $
|
||||
$Id: html.c,v 1.8 2002/11/04 22:14:40 karl Exp $
|
||||
|
||||
Copyright (C) 1999, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -24,14 +24,16 @@
|
||||
#include "makeinfo.h"
|
||||
#include "sectioning.h"
|
||||
|
||||
HSTACK *htmlstack = NULL;
|
||||
|
||||
/* See html.h. */
|
||||
int html_output_head_p = 0;
|
||||
int html_title_written = 0;
|
||||
|
||||
void
|
||||
html_output_head ()
|
||||
{
|
||||
static char *html_title = NULL;
|
||||
static int html_title_written = 0;
|
||||
|
||||
if (html_output_head_p)
|
||||
return;
|
||||
@ -53,10 +55,12 @@ html_output_head ()
|
||||
if (!document_description)
|
||||
document_description = html_title;
|
||||
|
||||
add_word_args ("<meta name=description content=\"%s\">\n",
|
||||
add_word_args ("<meta name=\"description\" content=\"%s\">\n",
|
||||
document_description);
|
||||
add_word_args ("<meta name=generator content=\"makeinfo %s\">\n", VERSION);
|
||||
add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" rel=generator-home>\n");
|
||||
add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
|
||||
VERSION);
|
||||
add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" \
|
||||
rel=\"generator-home\">\n");
|
||||
|
||||
if (copying_text)
|
||||
{ /* copying_text has already been fully expanded in
|
||||
@ -71,9 +75,9 @@ html_output_head ()
|
||||
|
||||
add_word ("</head>\n<body>\n");
|
||||
|
||||
if (title && !html_title_written)
|
||||
if (title && !html_title_written && titlepage_cmd_present)
|
||||
{
|
||||
add_word_args ("<h1>%s</h1>\n", html_title);
|
||||
add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title);
|
||||
html_title_written = 1;
|
||||
}
|
||||
}
|
||||
@ -135,6 +139,34 @@ escape_string (string)
|
||||
free (string);
|
||||
return newstring - newlen;
|
||||
}
|
||||
|
||||
/* Save current tag. */
|
||||
void
|
||||
push_tag (tag)
|
||||
char *tag;
|
||||
{
|
||||
HSTACK *newstack = xmalloc (sizeof (HSTACK));
|
||||
|
||||
newstack->tag = tag;
|
||||
newstack->next = htmlstack;
|
||||
htmlstack = newstack;
|
||||
}
|
||||
|
||||
/* Get last tag. */
|
||||
void
|
||||
pop_tag ()
|
||||
{
|
||||
HSTACK *tos = htmlstack;
|
||||
|
||||
if (!tos)
|
||||
{
|
||||
line_error (_("[unexpected] no html tag to pop"));
|
||||
return;
|
||||
}
|
||||
|
||||
htmlstack = htmlstack->next;
|
||||
free (tos);
|
||||
}
|
||||
|
||||
/* Open or close TAG according to START_OR_END. */
|
||||
void
|
||||
@ -142,6 +174,9 @@ insert_html_tag (start_or_end, tag)
|
||||
int start_or_end;
|
||||
char *tag;
|
||||
{
|
||||
char *old_tag = NULL;
|
||||
int do_return = 0;
|
||||
|
||||
if (!paragraph_is_open && (start_or_end == START))
|
||||
{
|
||||
/* Need to compensate for the <p> we are about to insert, or
|
||||
@ -150,11 +185,47 @@ insert_html_tag (start_or_end, tag)
|
||||
adjust_braces_following (output_paragraph_offset, 3);
|
||||
add_word ("<p>");
|
||||
}
|
||||
add_char ('<');
|
||||
|
||||
if (start_or_end != START)
|
||||
add_char ('/');
|
||||
add_word (tag);
|
||||
add_char ('>');
|
||||
pop_tag (tag);
|
||||
|
||||
if (htmlstack)
|
||||
old_tag = htmlstack->tag;
|
||||
|
||||
if (htmlstack
|
||||
&& (strcmp (htmlstack->tag, tag) == 0))
|
||||
do_return = 1;
|
||||
|
||||
if (start_or_end == START)
|
||||
push_tag (tag);
|
||||
|
||||
if (do_return)
|
||||
return;
|
||||
|
||||
/* texinfo.tex doesn't support more than one font attribute
|
||||
at the same time. */
|
||||
if ((start_or_end == START) && old_tag && *old_tag)
|
||||
{
|
||||
add_word ("</");
|
||||
add_word (old_tag);
|
||||
add_char ('>');
|
||||
}
|
||||
|
||||
if (*tag)
|
||||
{
|
||||
add_char ('<');
|
||||
if (start_or_end != START)
|
||||
add_char ('/');
|
||||
add_word (tag);
|
||||
add_char ('>');
|
||||
}
|
||||
|
||||
if ((start_or_end != START) && old_tag && *old_tag)
|
||||
{
|
||||
add_char ('<');
|
||||
add_word (old_tag);
|
||||
add_char ('>');
|
||||
}
|
||||
}
|
||||
|
||||
/* Output an HTML <link> to the filename for NODE, including the
|
||||
@ -295,8 +366,8 @@ nodename_to_filename_1 (nodename, href)
|
||||
p = strchr (nodename, ')');
|
||||
if (p == NULL)
|
||||
{
|
||||
line_error (_("Invalid node name: `%s'"), nodename);
|
||||
exit (1);
|
||||
line_error (_("[unexpected] invalid node name: `%s'"), nodename);
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
length = p - nodename - 1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* html.h -- declarations for html-related utilities.
|
||||
$Id: html.h,v 1.4 2002/03/18 19:45:18 karl Exp $
|
||||
$Id: html.h,v 1.4 2002/10/31 22:08:23 karl Exp $
|
||||
|
||||
Copyright (C) 1999, 2000, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -20,9 +20,19 @@
|
||||
#ifndef HTML_H
|
||||
#define HTML_H
|
||||
|
||||
/* A stack of font tags. */
|
||||
typedef struct hstack
|
||||
{
|
||||
struct hstack *next;
|
||||
char *tag;
|
||||
} HSTACK;
|
||||
|
||||
/* Nonzero if we have output the <head>. */
|
||||
extern int html_output_head_p;
|
||||
|
||||
/* Nonzero if we have output a title, from @titlefont or @settitle. */
|
||||
extern int html_title_written;
|
||||
|
||||
/* Perform the <head> output. */
|
||||
extern void html_output_head ();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* index.c -- indexing for Texinfo.
|
||||
$Id: index.c,v 1.25 2002/03/19 14:43:04 karl Exp $
|
||||
$Id: index.c,v 1.4 2002/11/26 22:54:31 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -334,7 +334,6 @@ init_indices ()
|
||||
/* If there were existing indices, get rid of them now. */
|
||||
for (i = 0; i < defined_indices; i++)
|
||||
{
|
||||
undefindex (name_index_alist[i]->name);
|
||||
if (name_index_alist[i])
|
||||
{ /* Suppose we're called with two input files, and the first
|
||||
does a @synindex pg cp. Then, when we get here to start
|
||||
@ -342,6 +341,7 @@ init_indices ()
|
||||
undefindex (because it's pointing to "cp"). So free it
|
||||
here; otherwise, when we try to define the pg index again
|
||||
just below, it will still point to cp. */
|
||||
undefindex (name_index_alist[i]->name);
|
||||
free (name_index_alist[i]->name);
|
||||
free (name_index_alist[i]);
|
||||
name_index_alist[i] = NULL;
|
||||
@ -597,7 +597,7 @@ sort_index (index)
|
||||
/* If this particular entry should be printed as a "code" index,
|
||||
then expand it as @code{entry}, i.e. as in fixed-width font. */
|
||||
array[count-1]->entry = expansion (temp->entry_text,
|
||||
array[count-1]->code);
|
||||
array[count-1]->code);
|
||||
|
||||
temp = temp->next;
|
||||
}
|
||||
@ -662,18 +662,18 @@ cm_printindex ()
|
||||
|
||||
index = index_list (index_name);
|
||||
if (index == (INDEX_ELT *)-1)
|
||||
{
|
||||
line_error (_("Unknown index `%s' in @printindex"), index_name);
|
||||
free (index_name);
|
||||
return;
|
||||
}
|
||||
{
|
||||
line_error (_("Unknown index `%s' in @printindex"), index_name);
|
||||
free (index_name);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Do this before sorting, so execute_string is in the good environment */
|
||||
if (xml && docbook)
|
||||
xml_begin_index ();
|
||||
xml_begin_index ();
|
||||
|
||||
/* Do this before sorting, so execute_string in index_element_compare
|
||||
will give the same results as when we actually print. */
|
||||
will give the same results as when we actually print. */
|
||||
printing_index = 1;
|
||||
filling_enabled = 0;
|
||||
inhibit_paragraph_indentation = 1;
|
||||
@ -682,9 +682,9 @@ cm_printindex ()
|
||||
xml_sort_index = 0;
|
||||
close_paragraph ();
|
||||
if (html)
|
||||
add_word ("<ul compact>");
|
||||
add_word_args ("<ul class=\"index-%s\" compact>", index_name);
|
||||
else if (!no_headers && !docbook)
|
||||
add_word ("* Menu:\n\n");
|
||||
add_word ("* Menu:\n\n");
|
||||
|
||||
me_inhibit_expansion++;
|
||||
|
||||
@ -693,150 +693,154 @@ cm_printindex ()
|
||||
line = xmalloc (line_length);
|
||||
|
||||
for (item = 0; (index = array[item]); item++)
|
||||
{
|
||||
/* A pathological document might have an index entry outside of any
|
||||
node. Don't crash; try using the section name instead. */
|
||||
char *index_node = index->node;
|
||||
|
||||
line_number = index->defining_line;
|
||||
input_filename = index->defining_file;
|
||||
|
||||
if ((!index_node || !*index_node) && html)
|
||||
index_node = toc_find_section_of_node (index_node);
|
||||
|
||||
if (!index_node || !*index_node)
|
||||
{
|
||||
line_error (_("Entry for index `%s' outside of any node"),
|
||||
index_name);
|
||||
if (html || !no_headers)
|
||||
index_node = _("(outside of any node)");
|
||||
}
|
||||
|
||||
if (html)
|
||||
/* fixme: html: we should use specific index anchors pointing
|
||||
{
|
||||
/* A pathological document might have an index entry outside of any
|
||||
node. Don't crash; try using the section name instead. */
|
||||
char *index_node = index->node;
|
||||
|
||||
line_number = index->defining_line;
|
||||
input_filename = index->defining_file;
|
||||
|
||||
if ((!index_node || !*index_node) && html)
|
||||
index_node = toc_find_section_of_node (index_node);
|
||||
|
||||
if (!index_node || !*index_node)
|
||||
{
|
||||
line_error (_("Entry for index `%s' outside of any node"),
|
||||
index_name);
|
||||
if (html || !no_headers)
|
||||
index_node = _("(outside of any node)");
|
||||
}
|
||||
|
||||
if (html)
|
||||
/* fixme: html: we should use specific index anchors pointing
|
||||
to the actual location of the indexed position (but then we
|
||||
have to find something to wrap the anchor around). */
|
||||
{
|
||||
if (last_index
|
||||
&& STREQ (last_index->entry_text, index->entry_text))
|
||||
add_word (", "); /* Don't repeat the previous entry. */
|
||||
else
|
||||
{
|
||||
/* In the HTML case, the expanded index entry is not
|
||||
good for us, since it was expanded for non-HTML mode
|
||||
inside sort_index. So we need to HTML-escape and
|
||||
expand the original entry text here. */
|
||||
char *escaped_entry = xstrdup (index->entry_text);
|
||||
char *expanded_entry;
|
||||
|
||||
/* expansion() doesn't HTML-escape the argument, so need
|
||||
to do it separately. */
|
||||
escaped_entry = escape_string (escaped_entry);
|
||||
expanded_entry = expansion (escaped_entry, index->code);
|
||||
add_word_args ("\n<li>%s: ", expanded_entry);
|
||||
free (escaped_entry);
|
||||
free (expanded_entry);
|
||||
}
|
||||
add_word ("<a href=\"");
|
||||
if (index->node && *index->node)
|
||||
{
|
||||
/* Make sure any non-macros in the node name are expanded. */
|
||||
in_fixed_width_font++;
|
||||
index_node = expansion (index_node, 0);
|
||||
in_fixed_width_font--;
|
||||
add_anchor_name (index_node, 1);
|
||||
add_word_args ("\">%s</a>", index_node);
|
||||
free (index_node);
|
||||
}
|
||||
else if (STREQ (index_node, _("(outside of any node)")))
|
||||
{
|
||||
add_anchor_name (index_node, 1);
|
||||
add_word_args ("\">%s</a>", index_node);
|
||||
}
|
||||
else
|
||||
/* If we use the section instead of the (missing) node, then
|
||||
index_node already includes all we need except the #. */
|
||||
add_word_args ("#%s</a>", index_node);
|
||||
}
|
||||
else if (xml && docbook)
|
||||
{
|
||||
xml_insert_indexentry (index->entry, index_node);
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned new_length = strlen (index->entry);
|
||||
|
||||
if (new_length < 50) /* minimum length used below */
|
||||
new_length = 50;
|
||||
new_length += strlen (index_node) + 7; /* * : .\n\0 */
|
||||
|
||||
if (new_length > line_length)
|
||||
{
|
||||
line_length = new_length;
|
||||
line = xrealloc (line, line_length);
|
||||
}
|
||||
/* Print the entry, nicely formatted. We've already
|
||||
expanded any commands in index->entry, including any
|
||||
implicit @code. Thus, can't call execute_string, since
|
||||
@@ has turned into @. */
|
||||
if (!no_headers)
|
||||
{
|
||||
sprintf (line, "* %-37s ", index->entry);
|
||||
line[2 + strlen (index->entry)] = ':';
|
||||
insert_string (line);
|
||||
/* Make sure any non-macros in the node name are expanded. */
|
||||
in_fixed_width_font++;
|
||||
execute_string ("%s.\n", index_node);
|
||||
in_fixed_width_font--;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* With --no-headers, the @node lines are gone, so
|
||||
there's little sense in referring to them in the
|
||||
index. Instead, output the number or name of the
|
||||
section that corresponds to that node. */
|
||||
char *section_name = toc_find_section_of_node (index_node);
|
||||
|
||||
sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry);
|
||||
line[strlen (index->entry)] = ':';
|
||||
insert_string (line);
|
||||
if (section_name)
|
||||
{
|
||||
int idx = 0;
|
||||
unsigned ref_len = strlen (section_name) + 30;
|
||||
|
||||
if (ref_len > line_length)
|
||||
{
|
||||
line_length = ref_len;
|
||||
line = xrealloc (line, line_length);
|
||||
}
|
||||
|
||||
if (number_sections)
|
||||
{
|
||||
while (section_name[idx]
|
||||
&& (isdigit (section_name[idx])
|
||||
|| (idx && section_name[idx] == '.')))
|
||||
idx++;
|
||||
}
|
||||
if (idx)
|
||||
sprintf (line, " See %.*s.\n", idx, section_name);
|
||||
else
|
||||
sprintf (line, "\n See ``%s''.\n", section_name);
|
||||
insert_string (line);
|
||||
}
|
||||
else
|
||||
{
|
||||
insert_string (" "); /* force a blank */
|
||||
execute_string ("See node %s.\n", index_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Prevent `output_paragraph' from growing to the size of the
|
||||
whole index. */
|
||||
flush_output ();
|
||||
last_index = index;
|
||||
}
|
||||
{
|
||||
if (last_index
|
||||
&& STREQ (last_index->entry_text, index->entry_text))
|
||||
add_word (", "); /* Don't repeat the previous entry. */
|
||||
else
|
||||
{
|
||||
/* In the HTML case, the expanded index entry is not
|
||||
good for us, since it was expanded for non-HTML mode
|
||||
inside sort_index. So we need to HTML-escape and
|
||||
expand the original entry text here. */
|
||||
char *escaped_entry = xstrdup (index->entry_text);
|
||||
char *expanded_entry;
|
||||
|
||||
/* expansion() doesn't HTML-escape the argument, so need
|
||||
to do it separately. */
|
||||
escaped_entry = escape_string (escaped_entry);
|
||||
expanded_entry = expansion (escaped_entry, index->code);
|
||||
add_word_args ("\n<li>%s: ", expanded_entry);
|
||||
free (escaped_entry);
|
||||
free (expanded_entry);
|
||||
}
|
||||
add_word ("<a href=\"");
|
||||
if (index->node && *index->node)
|
||||
{
|
||||
/* Make sure any non-macros in the node name are expanded. */
|
||||
in_fixed_width_font++;
|
||||
index_node = expansion (index_node, 0);
|
||||
in_fixed_width_font--;
|
||||
add_anchor_name (index_node, 1);
|
||||
add_word_args ("\">%s</a>", index_node);
|
||||
free (index_node);
|
||||
}
|
||||
else if (STREQ (index_node, _("(outside of any node)")))
|
||||
{
|
||||
add_anchor_name (index_node, 1);
|
||||
add_word_args ("\">%s</a>", index_node);
|
||||
}
|
||||
else
|
||||
/* If we use the section instead of the (missing) node, then
|
||||
index_node already includes all we need except the #. */
|
||||
add_word_args ("#%s</a>", index_node);
|
||||
}
|
||||
else if (xml && docbook)
|
||||
{
|
||||
/* In the DocBook case, the expanded index entry is not
|
||||
good for us, since it was expanded for non-DocBook mode
|
||||
inside sort_index. So we send the original entry text
|
||||
to be used with execute_string. */
|
||||
xml_insert_indexentry (index->entry_text, index_node);
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned new_length = strlen (index->entry);
|
||||
|
||||
if (new_length < 50) /* minimum length used below */
|
||||
new_length = 50;
|
||||
new_length += strlen (index_node) + 7; /* * : .\n\0 */
|
||||
|
||||
if (new_length > line_length)
|
||||
{
|
||||
line_length = new_length;
|
||||
line = xrealloc (line, line_length);
|
||||
}
|
||||
/* Print the entry, nicely formatted. We've already
|
||||
expanded any commands in index->entry, including any
|
||||
implicit @code. Thus, can't call execute_string, since
|
||||
@@ has turned into @. */
|
||||
if (!no_headers)
|
||||
{
|
||||
sprintf (line, "* %-37s ", index->entry);
|
||||
line[2 + strlen (index->entry)] = ':';
|
||||
insert_string (line);
|
||||
/* Make sure any non-macros in the node name are expanded. */
|
||||
in_fixed_width_font++;
|
||||
execute_string ("%s.\n", index_node);
|
||||
in_fixed_width_font--;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* With --no-headers, the @node lines are gone, so
|
||||
there's little sense in referring to them in the
|
||||
index. Instead, output the number or name of the
|
||||
section that corresponds to that node. */
|
||||
char *section_name = toc_find_section_of_node (index_node);
|
||||
|
||||
sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry);
|
||||
line[strlen (index->entry)] = ':';
|
||||
insert_string (line);
|
||||
if (section_name)
|
||||
{
|
||||
int idx = 0;
|
||||
unsigned ref_len = strlen (section_name) + 30;
|
||||
|
||||
if (ref_len > line_length)
|
||||
{
|
||||
line_length = ref_len;
|
||||
line = xrealloc (line, line_length);
|
||||
}
|
||||
|
||||
if (number_sections)
|
||||
{
|
||||
while (section_name[idx]
|
||||
&& (isdigit (section_name[idx])
|
||||
|| (idx && section_name[idx] == '.')))
|
||||
idx++;
|
||||
}
|
||||
if (idx)
|
||||
sprintf (line, " See %.*s.\n", idx, section_name);
|
||||
else
|
||||
sprintf (line, "\n See ``%s''.\n", section_name);
|
||||
insert_string (line);
|
||||
}
|
||||
else
|
||||
{
|
||||
insert_string (" "); /* force a blank */
|
||||
execute_string ("See node %s.\n", index_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Prevent `output_paragraph' from growing to the size of the
|
||||
whole index. */
|
||||
flush_output ();
|
||||
last_index = index;
|
||||
}
|
||||
|
||||
free (line);
|
||||
free (index_name);
|
||||
@ -852,8 +856,8 @@ cm_printindex ()
|
||||
line_number = saved_line_number;
|
||||
|
||||
if (html)
|
||||
add_word ("</ul>");
|
||||
add_word ("</ul>");
|
||||
else if (xml && docbook)
|
||||
xml_end_index ();
|
||||
xml_end_index ();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* index.h -- declarations for index.c.
|
||||
$Id: index.h,v 1.4 1999/04/19 18:12:17 karl Exp $
|
||||
$Id: index.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* insertion.c -- insertions for Texinfo.
|
||||
$Id: insertion.c,v 1.47 2002/04/01 14:01:36 karl Exp $
|
||||
$Id: insertion.c,v 1.14 2003/01/02 23:46:29 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -34,8 +35,8 @@ static char *insertion_type_names[] =
|
||||
"deftypevar", "deftypevr", "defun", "defvar", "defvr", "detailmenu",
|
||||
"direntry", "display", "documentdescription", "enumerate", "example",
|
||||
"flushleft", "flushright", "format", "ftable", "group", "ifclear",
|
||||
"ifhtml", "ifinfo", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex",
|
||||
"ifplaintext", "ifset", "iftex", "itemize", "lisp", "menu",
|
||||
"ifhtml", "ifinfo", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex", "ifnotxml",
|
||||
"ifplaintext", "ifset", "iftex", "ifxml", "itemize", "lisp", "menu",
|
||||
"multitable", "quotation", "rawhtml", "rawtex", "smalldisplay",
|
||||
"smallexample", "smallformat", "smalllisp", "verbatim", "table",
|
||||
"tex", "vtable", "bad_type"
|
||||
@ -100,15 +101,17 @@ current_item_function ()
|
||||
case ifnotinfo:
|
||||
case ifnotplaintext:
|
||||
case ifnottex:
|
||||
case ifnotxml:
|
||||
case ifplaintext:
|
||||
case ifset:
|
||||
case iftex:
|
||||
case ifxml:
|
||||
case rawhtml:
|
||||
case rawtex:
|
||||
case tex:
|
||||
case cartouche:
|
||||
elt = elt->next;
|
||||
break;
|
||||
elt = elt->next;
|
||||
break;
|
||||
|
||||
default:
|
||||
done = 1;
|
||||
@ -211,6 +214,8 @@ find_type_from_name (name)
|
||||
return (enum insertion_type) index;
|
||||
if (index == rawhtml && STREQ (name, "html"))
|
||||
return rawhtml;
|
||||
if (index == rawhtml && STREQ (name, "xml"))
|
||||
return rawhtml;
|
||||
if (index == rawtex && STREQ (name, "tex"))
|
||||
return rawtex;
|
||||
index++;
|
||||
@ -386,7 +391,7 @@ begin_insertion (type)
|
||||
add_word ("* Menu:\n");
|
||||
|
||||
if (xml)
|
||||
xml_insert_element (MENU, START);
|
||||
xml_insert_element (MENU, START);
|
||||
|
||||
next_menu_item_number = 1;
|
||||
in_menu++;
|
||||
@ -443,14 +448,23 @@ begin_insertion (type)
|
||||
the Top node (for info/html). */
|
||||
char *text;
|
||||
int start_of_end;
|
||||
int save_paragraph_indentation;
|
||||
|
||||
discard_until ("\n"); /* ignore remainder of @copying line */
|
||||
start_of_end = get_until ("\n@end copying", &text);
|
||||
|
||||
/* include all the output-format-specific markup. */
|
||||
if (docbook)
|
||||
{
|
||||
save_paragraph_indentation = inhibit_paragraph_indentation;
|
||||
inhibit_paragraph_indentation = 1;
|
||||
}
|
||||
copying_text = full_expansion (text, 0);
|
||||
free (text);
|
||||
|
||||
if (docbook)
|
||||
inhibit_paragraph_indentation = save_paragraph_indentation;
|
||||
|
||||
input_text_offset = start_of_end; /* go back to the @end to match */
|
||||
}
|
||||
|
||||
@ -461,8 +475,26 @@ begin_insertion (type)
|
||||
For html, we output it specifically in html_output_head.
|
||||
For plain text, there's no way to hide it, so the author must
|
||||
use @insertcopying in the desired location. */
|
||||
if (docbook)
|
||||
{
|
||||
if (!xml_in_bookinfo)
|
||||
{
|
||||
xml_insert_element (BOOKINFO, START);
|
||||
xml_in_bookinfo = 1;
|
||||
}
|
||||
if (!xml_in_abstract)
|
||||
{
|
||||
xml_insert_element (ABSTRACT, START);
|
||||
xml_in_abstract = 1;
|
||||
}
|
||||
}
|
||||
if (!html && !no_headers)
|
||||
cm_insert_copying ();
|
||||
if (docbook && xml_in_abstract)
|
||||
{
|
||||
xml_insert_element (ABSTRACT, END);
|
||||
xml_in_abstract = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case quotation:
|
||||
@ -500,10 +532,21 @@ begin_insertion (type)
|
||||
/* Kludge alert: if <pre> is followed by a newline, IE3
|
||||
renders an extra blank line before the pre-formatted block.
|
||||
Other browsers seem to not mind one way or the other. */
|
||||
add_word ("<br><pre>");
|
||||
add_word_args ("<pre class=\"%s\">", command);
|
||||
|
||||
if (type != format && type != smallformat)
|
||||
current_indent += default_indentation_increment;
|
||||
{
|
||||
current_indent += default_indentation_increment;
|
||||
if (html)
|
||||
{
|
||||
/* Since we didn't put \n after <pre>, we need to insert
|
||||
the indentation by hand. */
|
||||
int i;
|
||||
for (i = current_indent; i > 0; i--)
|
||||
add_char (' ');
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case multitable:
|
||||
@ -542,15 +585,15 @@ begin_insertion (type)
|
||||
if (html)
|
||||
{
|
||||
if (type == itemize)
|
||||
{
|
||||
add_word ("<ul>\n");
|
||||
in_paragraph = 0;
|
||||
}
|
||||
{
|
||||
add_word ("<ul>\n");
|
||||
in_paragraph = 0;
|
||||
}
|
||||
else
|
||||
add_word (dl_tag);
|
||||
}
|
||||
if (xml)
|
||||
xml_begin_table (type, insertion_stack->item_function);
|
||||
xml_begin_table (type, insertion_stack->item_function);
|
||||
break;
|
||||
|
||||
case enumerate:
|
||||
@ -566,10 +609,13 @@ begin_insertion (type)
|
||||
filling_enabled = indented_fill = 1;
|
||||
|
||||
if (html)
|
||||
enum_html ();
|
||||
{
|
||||
enum_html ();
|
||||
in_paragraph = 0;
|
||||
}
|
||||
|
||||
if (xml)
|
||||
xml_begin_enumerate (enumeration_arg);
|
||||
xml_begin_enumerate (enumeration_arg);
|
||||
|
||||
if (isdigit (*enumeration_arg))
|
||||
start_enumerating (atoi (enumeration_arg), ENUM_DIGITS);
|
||||
@ -582,7 +628,7 @@ begin_insertion (type)
|
||||
/* Only close the paragraph if we are not inside of an
|
||||
@example-like environment. */
|
||||
if (xml)
|
||||
xml_insert_element (GROUP, START);
|
||||
xml_insert_element (GROUP, START);
|
||||
else if (!insertion_stack->next
|
||||
|| (insertion_stack->next->insertion != display
|
||||
&& insertion_stack->next->insertion != smalldisplay
|
||||
@ -606,9 +652,11 @@ begin_insertion (type)
|
||||
case ifnotinfo:
|
||||
case ifnotplaintext:
|
||||
case ifnottex:
|
||||
case ifnotxml:
|
||||
case ifplaintext:
|
||||
case ifset:
|
||||
case iftex:
|
||||
case ifxml:
|
||||
case rawtex:
|
||||
if (in_menu)
|
||||
no_discard++;
|
||||
@ -648,7 +696,7 @@ begin_insertion (type)
|
||||
inhibit_paragraph_indentation = 1;
|
||||
filling_enabled = indented_fill = no_indent = 0;
|
||||
if (html)
|
||||
add_word ("<div align=\"left\">");
|
||||
add_word ("<div align=\"left\">");
|
||||
break;
|
||||
|
||||
case flushright:
|
||||
@ -657,7 +705,7 @@ begin_insertion (type)
|
||||
inhibit_paragraph_indentation = 1;
|
||||
force_flush_right++;
|
||||
if (html)
|
||||
add_word ("<div align=\"right\">");
|
||||
add_word ("<div align=\"right\">");
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -700,56 +748,62 @@ end_insertion (type)
|
||||
if (xml)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case ifinfo:
|
||||
case documentdescription:
|
||||
break;
|
||||
case copying:
|
||||
xml_insert_element (COPYING, END);
|
||||
break;
|
||||
case quotation:
|
||||
xml_insert_element (QUOTATION, END);
|
||||
break;
|
||||
case example:
|
||||
xml_insert_element (EXAMPLE, END);
|
||||
break;
|
||||
case smallexample:
|
||||
xml_insert_element (SMALLEXAMPLE, END);
|
||||
break;
|
||||
case lisp:
|
||||
xml_insert_element (LISP, END);
|
||||
break;
|
||||
case smalllisp:
|
||||
xml_insert_element (SMALLLISP, END);
|
||||
break;
|
||||
case cartouche:
|
||||
xml_insert_element (CARTOUCHE, END);
|
||||
break;
|
||||
case format:
|
||||
xml_insert_element (FORMAT, END);
|
||||
break;
|
||||
case smallformat:
|
||||
xml_insert_element (SMALLFORMAT, END);
|
||||
break;
|
||||
case display:
|
||||
xml_insert_element (DISPLAY, END);
|
||||
break;
|
||||
case smalldisplay:
|
||||
xml_insert_element (SMALLDISPLAY, END);
|
||||
break;
|
||||
case table:
|
||||
case ftable:
|
||||
case vtable:
|
||||
case itemize:
|
||||
xml_end_table (type);
|
||||
break;
|
||||
case enumerate:
|
||||
xml_end_enumerate (type);
|
||||
break;
|
||||
case group:
|
||||
xml_insert_element (GROUP, END);
|
||||
break;
|
||||
}
|
||||
{
|
||||
case ifinfo:
|
||||
case documentdescription:
|
||||
break;
|
||||
case copying:
|
||||
xml_insert_element (COPYING, END);
|
||||
break;
|
||||
case quotation:
|
||||
xml_insert_element (QUOTATION, END);
|
||||
break;
|
||||
case example:
|
||||
xml_insert_element (EXAMPLE, END);
|
||||
break;
|
||||
case smallexample:
|
||||
xml_insert_element (SMALLEXAMPLE, END);
|
||||
break;
|
||||
case lisp:
|
||||
xml_insert_element (LISP, END);
|
||||
break;
|
||||
case smalllisp:
|
||||
xml_insert_element (SMALLLISP, END);
|
||||
break;
|
||||
case cartouche:
|
||||
xml_insert_element (CARTOUCHE, END);
|
||||
break;
|
||||
case format:
|
||||
if (docbook && xml_in_bookinfo && xml_in_abstract)
|
||||
{
|
||||
xml_insert_element (ABSTRACT, END);
|
||||
xml_in_abstract = 0;
|
||||
}
|
||||
else
|
||||
xml_insert_element (FORMAT, END);
|
||||
break;
|
||||
case smallformat:
|
||||
xml_insert_element (SMALLFORMAT, END);
|
||||
break;
|
||||
case display:
|
||||
xml_insert_element (DISPLAY, END);
|
||||
break;
|
||||
case smalldisplay:
|
||||
xml_insert_element (SMALLDISPLAY, END);
|
||||
break;
|
||||
case table:
|
||||
case ftable:
|
||||
case vtable:
|
||||
case itemize:
|
||||
xml_end_table (type);
|
||||
break;
|
||||
case enumerate:
|
||||
xml_end_enumerate (type);
|
||||
break;
|
||||
case group:
|
||||
xml_insert_element (GROUP, END);
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (type)
|
||||
{
|
||||
@ -763,9 +817,11 @@ end_insertion (type)
|
||||
case ifnotinfo:
|
||||
case ifnotplaintext:
|
||||
case ifnottex:
|
||||
case ifnotxml:
|
||||
case ifplaintext:
|
||||
case ifset:
|
||||
case iftex:
|
||||
case ifxml:
|
||||
case rawtex:
|
||||
break;
|
||||
|
||||
@ -809,7 +865,7 @@ end_insertion (type)
|
||||
|
||||
case flushleft:
|
||||
if (html)
|
||||
add_word ("</div>\n");
|
||||
add_word ("</div>\n");
|
||||
close_insertion_paragraph ();
|
||||
break;
|
||||
|
||||
@ -846,6 +902,7 @@ end_insertion (type)
|
||||
current_indent -= default_indentation_increment;
|
||||
if (html)
|
||||
add_word ("</dl>\n");
|
||||
close_insertion_paragraph ();
|
||||
break;
|
||||
|
||||
case itemize:
|
||||
@ -858,14 +915,14 @@ end_insertion (type)
|
||||
case flushright:
|
||||
force_flush_right--;
|
||||
if (html)
|
||||
add_word ("</div>\n");
|
||||
add_word ("</div>\n");
|
||||
close_insertion_paragraph ();
|
||||
break;
|
||||
|
||||
/* Handle the @defun insertions with this default clause. */
|
||||
default:
|
||||
{
|
||||
enum insertion_type base_type;
|
||||
enum insertion_type base_type;
|
||||
|
||||
if (type < defcv || type > defvr)
|
||||
line_error ("end_insertion internal error: type=%d", type);
|
||||
@ -880,11 +937,11 @@ end_insertion (type)
|
||||
case deftypevr:
|
||||
case defcv:
|
||||
case defop:
|
||||
case deftypemethod:
|
||||
case deftypeop:
|
||||
case deftypeivar:
|
||||
if (html)
|
||||
/* close the tables which has been opened in defun.c */
|
||||
case deftypemethod:
|
||||
case deftypeop:
|
||||
case deftypeivar:
|
||||
if (html)
|
||||
/* close the tables which has been opened in defun.c */
|
||||
add_word ("</td></tr>\n</table>\n");
|
||||
break;
|
||||
} /* switch (base_type)... */
|
||||
@ -927,9 +984,9 @@ discard_insertions (specials_ok)
|
||||
char *offender = insertion_type_pname (insertion_stack->insertion);
|
||||
|
||||
file_line_error (insertion_stack->filename,
|
||||
insertion_stack->line_number,
|
||||
_("No matching `%cend %s'"), COMMAND_PREFIX,
|
||||
offender);
|
||||
insertion_stack->line_number,
|
||||
_("No matching `%cend %s'"), COMMAND_PREFIX,
|
||||
offender);
|
||||
pop_insertion ();
|
||||
}
|
||||
}
|
||||
@ -1003,6 +1060,10 @@ cm_insert_copying ()
|
||||
full expansion on copying_text when we saved it. */
|
||||
insert_string (copying_text);
|
||||
insert ('\n');
|
||||
|
||||
/* Update output_position so that the node positions in the tag
|
||||
tables will take account of the copying text. */
|
||||
flush_output ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1010,7 +1071,15 @@ void
|
||||
cm_format ()
|
||||
{
|
||||
if (xml)
|
||||
xml_insert_element (FORMAT, START);
|
||||
{
|
||||
if (docbook && xml_in_bookinfo)
|
||||
{
|
||||
xml_insert_element (ABSTRACT, START);
|
||||
xml_in_abstract = 1;
|
||||
}
|
||||
else
|
||||
xml_insert_element (FORMAT, START);
|
||||
}
|
||||
begin_insertion (format);
|
||||
}
|
||||
|
||||
@ -1129,7 +1198,7 @@ handle_verbatim_environment (find_end_verbatim)
|
||||
*/
|
||||
|
||||
if (html)
|
||||
add_word ("<pre>");
|
||||
add_word ("<pre class=\"verbatim\">");
|
||||
|
||||
while (input_text_offset < input_text_length)
|
||||
{
|
||||
@ -1138,19 +1207,25 @@ handle_verbatim_environment (find_end_verbatim)
|
||||
if (character == '\n')
|
||||
line_number++;
|
||||
/*
|
||||
Assume no newlines in END_VERBATIM
|
||||
Assume no newlines in END_VERBATIM
|
||||
*/
|
||||
else if (find_end_verbatim && (character == COMMAND_PREFIX) /* @ */
|
||||
&& (input_text_length - input_text_offset > sizeof (END_VERBATIM))
|
||||
&& !strncmp (&input_text[input_text_offset+1], END_VERBATIM,
|
||||
sizeof (END_VERBATIM)-1))
|
||||
{
|
||||
input_text_offset += sizeof (END_VERBATIM);
|
||||
seen_end = 1;
|
||||
break;
|
||||
}
|
||||
&& (input_text_length - input_text_offset > sizeof (END_VERBATIM))
|
||||
&& !strncmp (&input_text[input_text_offset+1], END_VERBATIM,
|
||||
sizeof (END_VERBATIM)-1))
|
||||
{
|
||||
input_text_offset += sizeof (END_VERBATIM);
|
||||
seen_end = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (html && character == '&' && escape_html)
|
||||
add_word ("&");
|
||||
else if (html && character == '<' && escape_html)
|
||||
add_word ("<");
|
||||
else
|
||||
add_char (character);
|
||||
|
||||
add_char (character);
|
||||
input_text_offset++;
|
||||
}
|
||||
|
||||
@ -1205,7 +1280,7 @@ cm_group ()
|
||||
void
|
||||
cm_html ()
|
||||
{
|
||||
if (process_html)
|
||||
if (process_html || process_xml)
|
||||
begin_insertion (rawhtml);
|
||||
else
|
||||
command_name_condition ();
|
||||
@ -1294,6 +1369,25 @@ cm_ifnottex ()
|
||||
else
|
||||
command_name_condition ();
|
||||
}
|
||||
|
||||
void
|
||||
cm_ifxml ()
|
||||
{
|
||||
if (process_xml)
|
||||
begin_insertion (ifxml);
|
||||
else
|
||||
command_name_condition ();
|
||||
}
|
||||
|
||||
void
|
||||
cm_ifnotxml ()
|
||||
{
|
||||
if (!process_xml)
|
||||
begin_insertion (ifnotxml);
|
||||
else
|
||||
command_name_condition ();
|
||||
}
|
||||
|
||||
|
||||
/* Begin an insertion where the lines are not filled or indented. */
|
||||
void
|
||||
@ -1425,9 +1519,11 @@ cm_item ()
|
||||
case ifnotinfo:
|
||||
case ifnotplaintext:
|
||||
case ifnottex:
|
||||
case ifnotxml:
|
||||
case ifplaintext:
|
||||
case ifset:
|
||||
case iftex:
|
||||
case ifxml:
|
||||
case rawhtml:
|
||||
case rawtex:
|
||||
case tex:
|
||||
@ -1465,16 +1561,16 @@ cm_item ()
|
||||
else
|
||||
{
|
||||
if (html)
|
||||
{
|
||||
if (in_paragraph)
|
||||
{
|
||||
add_word ("</p>");
|
||||
in_paragraph = 0;
|
||||
}
|
||||
add_word ("<li>");
|
||||
}
|
||||
else if (xml)
|
||||
xml_begin_item ();
|
||||
{
|
||||
if (in_paragraph)
|
||||
{
|
||||
add_word ("</p>");
|
||||
in_paragraph = 0;
|
||||
}
|
||||
add_word ("<li>");
|
||||
}
|
||||
else if (xml)
|
||||
xml_begin_item ();
|
||||
else
|
||||
{
|
||||
start_paragraph ();
|
||||
@ -1513,12 +1609,12 @@ cm_item ()
|
||||
must_start_paragraph = 1;
|
||||
}
|
||||
|
||||
/* Handle text directly after the @item. */
|
||||
if (*rest_of_line)
|
||||
{
|
||||
line_number--;
|
||||
input_text_offset = original_input_text_offset;
|
||||
}
|
||||
/* Handle text directly after the @item. */
|
||||
if (*rest_of_line)
|
||||
{
|
||||
line_number--;
|
||||
input_text_offset = original_input_text_offset;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1539,7 +1635,7 @@ cm_item ()
|
||||
output_paragraph_offset = 0;
|
||||
|
||||
/* Force the browser to render one blank line before
|
||||
each new @item in a table. But don't do that unless
|
||||
each new @item in a table. But don't do that if
|
||||
this is the first <dt> after the <dl>, or if we are
|
||||
converting @itemx.
|
||||
|
||||
@ -1569,15 +1665,15 @@ cm_item ()
|
||||
last_html_output_position = output_position;
|
||||
add_word ("<dd>");
|
||||
}
|
||||
else if (xml) /* && docbook)*/ /* 05-08 */
|
||||
{
|
||||
xml_begin_table_item ();
|
||||
else if (xml) /* && docbook)*/ /* 05-08 */
|
||||
{
|
||||
xml_begin_table_item ();
|
||||
if (item_func && *item_func)
|
||||
execute_string ("%s{%s}", item_func, rest_of_line);
|
||||
else
|
||||
execute_string ("%s", rest_of_line);
|
||||
xml_continue_table_item ();
|
||||
}
|
||||
xml_continue_table_item ();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We need this to determine if we have two @item's in a row
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* insertion.h -- declarations for insertion.c.
|
||||
$Id: insertion.h,v 1.13 2002/03/28 16:33:48 karl Exp $
|
||||
$Id: insertion.h,v 1.2 2002/09/29 19:15:20 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2001, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -28,8 +28,8 @@ enum insertion_type
|
||||
deftypemethod, deftypeop, deftypevar, deftypevr, defun, defvar, defvr,
|
||||
detailmenu, direntry, display, documentdescription, enumerate,
|
||||
example, flushleft, flushright, format, ftable, group, ifclear,
|
||||
ifhtml, ifinfo, ifnothtml, ifnotinfo, ifnotplaintext, ifnottex,
|
||||
ifplaintext, ifset, iftex, itemize, lisp, menu, multitable, quotation,
|
||||
ifhtml, ifinfo, ifnothtml, ifnotinfo, ifnotplaintext, ifnottex, ifnotxml,
|
||||
ifplaintext, ifset, iftex, ifxml, itemize, lisp, menu, multitable, quotation,
|
||||
rawhtml, rawtex, smalldisplay, smallexample, smallformat, smalllisp,
|
||||
verbatim, table, tex, vtable, bad_type
|
||||
};
|
||||
@ -60,4 +60,5 @@ extern void cm_ifhtml (), cm_ifnothtml(), cm_html ();
|
||||
extern void cm_ifinfo (), cm_ifnotinfo ();
|
||||
extern void cm_ifplaintext (), cm_ifnotplaintext();
|
||||
extern void cm_iftex (), cm_ifnottex (), cm_tex ();
|
||||
extern void cm_ifxml (), cm_ifnotxml ();
|
||||
#endif /* !INSERTION_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* lang.c -- language-dependent support.
|
||||
$Id: lang.c,v 1.14 2001/09/11 18:04:35 karl Exp $
|
||||
$Id: lang.c,v 1.5 2002/11/12 18:48:52 feloy Exp $
|
||||
|
||||
Copyright (C) 1999, 2000, 01 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -31,6 +31,8 @@ encoding_code_type document_encoding_code = no_encoding;
|
||||
/* Current language code; default is English. */
|
||||
language_code_type language_code = en;
|
||||
|
||||
iso_map_type us_ascii_map [] = {{NULL, 0, 0}}; /* ASCII map is trivial */
|
||||
|
||||
/* Translation table between HTML and ISO Codes. The last item is
|
||||
hopefully the Unicode. It might be possible that those Unicodes are
|
||||
not correct, cause I didn't check them. kama */
|
||||
@ -131,16 +133,13 @@ iso_map_type iso8859_1_map [] = {
|
||||
{ "uuml", 0xFC, 0x00FC },
|
||||
{ "yacute", 0xFD, 0x00FD },
|
||||
{ "thorn", 0xFE, 0x00FE },
|
||||
{ "yuml", 0xFF, 0x00FF }
|
||||
{ "yuml", 0xFF, 0x00FF },
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
/* This might be put into structure below and NOT coded via define,
|
||||
because some translation tables could contain different numbers of
|
||||
characters, but for now it suffices. */
|
||||
#define ISO_MAP_SIZE (sizeof (iso8859_1_map) / sizeof (iso8859_1_map[0]))
|
||||
|
||||
encoding_type encoding_table[] = {
|
||||
{ no_encoding, "(no encoding)", NULL },
|
||||
{ US_ASCII, "US-ASCII", us_ascii_map },
|
||||
{ ISO_8859_1, "ISO-8859-1", (iso_map_type *) iso8859_1_map },
|
||||
{ ISO_8859_2, "ISO-8859-2", NULL },
|
||||
{ ISO_8859_3, "ISO-8859-3", NULL },
|
||||
@ -349,7 +348,7 @@ cm_search_iso_map (html)
|
||||
if (!iso)
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < ISO_MAP_SIZE; i++)
|
||||
for (i = 0; iso[i].html; i++)
|
||||
{
|
||||
if (strcmp (html, iso[i].html) == 0)
|
||||
return i;
|
||||
@ -370,7 +369,7 @@ cm_documentencoding ()
|
||||
get_rest_of_line (1, &enc_arg);
|
||||
|
||||
/* See if we have this encoding. */
|
||||
for (enc = ISO_8859_1; enc != last_encoding_code; enc++)
|
||||
for (enc = no_encoding+1; enc != last_encoding_code; enc++)
|
||||
{
|
||||
if (strcasecmp (enc_arg, encoding_table[enc].ecname) == 0)
|
||||
{
|
||||
@ -400,8 +399,10 @@ add_encoded_char (html_str, info_str)
|
||||
char *html_str;
|
||||
char *info_str;
|
||||
{
|
||||
if (html || xml)
|
||||
if (html)
|
||||
add_word_args ("&%s;", html_str);
|
||||
else if (xml)
|
||||
xml_insert_entity (html_str);
|
||||
else if (enable_encoding)
|
||||
{
|
||||
/* Look for HTML_STR in the current translation table. */
|
||||
@ -439,15 +440,21 @@ cm_accent_generic_html (arg, start, end, html_supported, single,
|
||||
if (strchr (html_supported, curchar ()))
|
||||
{ /* Yes; start with an ampersand. The character itself
|
||||
will be added later in read_command (makeinfo.c). */
|
||||
int saved_escape_html = escape_html;
|
||||
escape_html = 0;
|
||||
valid_html_accent = 1;
|
||||
add_char ('&');
|
||||
escape_html = saved_escape_html;
|
||||
}
|
||||
else
|
||||
{
|
||||
valid_html_accent = 0;
|
||||
if (html_solo_standalone)
|
||||
{ /* No special HTML support, so produce standalone char. */
|
||||
add_word_args ("&%s;", html_solo);
|
||||
if (xml)
|
||||
xml_insert_entity (html_solo);
|
||||
else
|
||||
add_word_args ("&%s;", html_solo);
|
||||
}
|
||||
else
|
||||
/* If the html_solo does not exist as standalone character
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* lang.h -- declarations for language codes etc.
|
||||
$Id: lang.h,v 1.7 2001/09/11 18:04:29 karl Exp $
|
||||
$Id: lang.h,v 1.3 2002/11/07 16:10:49 karl Exp $
|
||||
|
||||
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -79,6 +79,7 @@ extern language_type language_table[];
|
||||
*/
|
||||
typedef enum {
|
||||
no_encoding,
|
||||
US_ASCII,
|
||||
ISO_8859_1, /* default for en, de, */
|
||||
ISO_8859_2, /* actualy not supported like the rest below */
|
||||
ISO_8859_3,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* macro.c -- user-defined macros for Texinfo.
|
||||
$Id: macro.c,v 1.12 2002/03/02 15:05:21 karl Exp $
|
||||
$Id: macro.c,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* macro.h -- declarations for macro.c.
|
||||
$Id: macro.h,v 1.5 1999/07/15 00:00:46 karl Exp $
|
||||
$Id: macro.h,v 1.1 2002/08/25 23:38:38 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99 Free Software Foundation, Inc.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
||||
/* makeinfo.h -- declarations for Makeinfo.
|
||||
$Id: makeinfo.h,v 1.37 2002/03/28 16:33:48 karl Exp $
|
||||
$Id: makeinfo.h,v 1.3 2003/01/17 17:14:34 karl Exp $
|
||||
|
||||
Copyright (C) 1996, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -194,6 +195,9 @@ DECLARE (int, process_plaintext, -1);
|
||||
/* Nonzero means that we process @tex and @iftex. (--iftex) */
|
||||
DECLARE (int, process_tex, 0);
|
||||
|
||||
/* Nonzero means that we process @xml and @ifxml. (--ifxml) */
|
||||
DECLARE (int, process_xml, 0);
|
||||
|
||||
/* Maximum number of references to a single node before complaining.
|
||||
(--reference-limit) */
|
||||
DECLARE (int, reference_warning_limit, 1000);
|
||||
@ -261,11 +265,6 @@ DECLARE (int, expensive_validation, 0);
|
||||
#define DEFAULT_SPLIT_SIZE 50000 /* Is probably good enough for me. */
|
||||
DECLARE (int, splitting, 1); /* Defaults to true for now. */
|
||||
|
||||
#define command_char(c) (!cr_or_whitespace(c) \
|
||||
&& (c) != '{' \
|
||||
&& (c) != '}' \
|
||||
&& (c) != '=')
|
||||
|
||||
#define skip_whitespace() \
|
||||
while ((input_text_offset != input_text_length) && \
|
||||
whitespace (curchar())) \
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* multi.c -- multitable stuff for makeinfo.
|
||||
$Id: multi.c,v 1.23 2002/01/19 01:09:08 karl Exp $
|
||||
/* multi.c -- multiple-column tables (@multitable) for makeinfo.
|
||||
$Id: multi.c,v 1.4 2002/11/04 21:28:10 karl Exp $
|
||||
|
||||
Copyright (C) 1996, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -423,8 +424,9 @@ multitable_item ()
|
||||
/* start at column 1 */
|
||||
select_output_environment (1);
|
||||
if (!output_paragraph) {
|
||||
line_error (_("Cannot select column #%d in multitable"), current_env_no);
|
||||
exit (1);
|
||||
line_error (_("[unexpected] cannot select column #%d in multitable"),
|
||||
current_env_no);
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
init_column ();
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* node.c -- nodes for Texinfo.
|
||||
$Id: node.c,v 1.34 2002/03/26 16:16:29 karl Exp $
|
||||
$Id: node.c,v 1.6 2003/01/18 17:16:17 karl Exp $
|
||||
|
||||
Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
@ -306,7 +307,12 @@ remember_node (node, prev, next, up, position, line_no, fname, flags)
|
||||
node_number++;
|
||||
new->number = node_number;
|
||||
}
|
||||
new->html_fname = fname;
|
||||
if (fname)
|
||||
new->html_fname = fname;
|
||||
else
|
||||
/* This happens for Top node under split-HTML, for example. */
|
||||
new->html_fname
|
||||
= normalize_filename (filename_part (current_output_filename));
|
||||
new->next_ent = tag_table;
|
||||
tag_table = new;
|
||||
}
|
||||
@ -478,7 +484,7 @@ set_current_output_filename (fname)
|
||||
/* The order is: nodename, nextnode, prevnode, upnode.
|
||||
If all of the NEXT, PREV, and UP fields are empty, they are defaulted.
|
||||
You must follow a node command which has those fields defaulted
|
||||
with a sectioning command (e.g. @chapter) giving the "level" of that node.
|
||||
with a sectioning command (e.g., @chapter) giving the "level" of that node.
|
||||
It is an error not to do so.
|
||||
The defaults come from the menu in this node's parent. */
|
||||
void
|
||||
@ -652,7 +658,7 @@ cm_node ()
|
||||
}
|
||||
|
||||
line_error
|
||||
(_("Node `%s' requires a sectioning command (e.g. %c%s)"),
|
||||
(_("Node `%s' requires a sectioning command (e.g., %c%s)"),
|
||||
node, COMMAND_PREFIX, polite_section_name);
|
||||
}
|
||||
else
|
||||
@ -914,8 +920,9 @@ cm_node ()
|
||||
}
|
||||
|
||||
if (splitting || !no_headers)
|
||||
{ /* Navigation bar. The <p> avoids the links area running
|
||||
on with old Lynxen. */
|
||||
{ /* Navigation bar. */
|
||||
add_word ("<div class=\"node\">\n");
|
||||
/* The <p> avoids the links area running on with old Lynxen. */
|
||||
add_word_args ("<p>%s\n", splitting ? "" : "<hr>");
|
||||
add_word_args ("%s<a name=\"", _("Node:"));
|
||||
tem = expand_node_name (node);
|
||||
@ -928,7 +935,7 @@ cm_node ()
|
||||
tem = expansion (next, 0);
|
||||
add_word (",\n");
|
||||
add_word (_("Next:"));
|
||||
add_word ("<a rel=next accesskey=n href=\"");
|
||||
add_word ("<a rel=\"next\" accesskey=\"n\" href=\"");
|
||||
add_anchor_name (tem, 1);
|
||||
add_word_args ("\">%s</a>", tem);
|
||||
free (tem);
|
||||
@ -938,7 +945,7 @@ cm_node ()
|
||||
tem = expansion (prev, 0);
|
||||
add_word (",\n");
|
||||
add_word (_("Previous:"));
|
||||
add_word ("<a rel=previous accesskey=p href=\"");
|
||||
add_word ("<a rel=\"previous\" accesskey=\"p\" href=\"");
|
||||
add_anchor_name (tem, 1);
|
||||
add_word_args ("\">%s</a>", tem);
|
||||
free (tem);
|
||||
@ -948,7 +955,7 @@ cm_node ()
|
||||
tem = expansion (up, 0);
|
||||
add_word (",\n");
|
||||
add_word (_("Up:"));
|
||||
add_word ("<a rel=up accesskey=u href=\"");
|
||||
add_word ("<a rel=\"up\" accesskey=\"u\" href=\"");
|
||||
add_anchor_name (tem, 1);
|
||||
add_word_args ("\">%s</a>", tem);
|
||||
free (tem);
|
||||
@ -956,6 +963,7 @@ cm_node ()
|
||||
/* html fixxme: we want a `top' or `contents' link here. */
|
||||
|
||||
add_word_args ("\n%s<br>\n", splitting ? "<hr>" : "");
|
||||
add_word ("</div>\n");
|
||||
}
|
||||
}
|
||||
else if (docbook)
|
||||
@ -1274,7 +1282,7 @@ validate (tag, line, label)
|
||||
if (!result)
|
||||
{
|
||||
line_number = line;
|
||||
line_error (_("%s reference to nonexistent node `%s'"), label, tag);
|
||||
line_error (_("%s reference to nonexistent node `%s' (perhaps incorrect sectioning?)"), label, tag);
|
||||
return 0;
|
||||
}
|
||||
result->touched++;
|
||||
@ -1377,7 +1385,7 @@ validate_file (tag_table)
|
||||
}
|
||||
if (you_lose)
|
||||
{
|
||||
line_error (_("Next field of node `%s' not pointed to"),
|
||||
line_error (_("Next field of node `%s' not pointed to (perhaps incorrect sectioning?)"),
|
||||
tags->node);
|
||||
file_line_error (temp_tag->filename, temp_tag->line_no,
|
||||
_("This node (%s) has the bad Prev"),
|
||||
@ -1451,7 +1459,7 @@ validate_file (tag_table)
|
||||
if (!tags->up
|
||||
&& !(tags->flags & TAG_FLAG_ANCHOR)
|
||||
&& strcasecmp (tags->node, "Top") != 0)
|
||||
line_error (_("`%s' has no Up field"), tags->node);
|
||||
line_error (_("`%s' has no Up field (perhaps incorrect sectioning?)"), tags->node);
|
||||
else if (tags->up)
|
||||
{
|
||||
int valid_p = validate (tags->up, tags->line_no, _("Up"));
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user