This commit was generated by cvs2svn to compensate for changes in r114472,

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
Ruslan Ermilov 2003-05-02 00:48:41 +00:00
commit 51c84d8830
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=114473
105 changed files with 4944 additions and 3052 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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).

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.
.\"

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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;

View File

@ -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

View File

@ -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*";

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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] == ':')

View File

@ -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);

View File

@ -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. */

View File

@ -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

View File

@ -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.

View File

@ -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)

View 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_ */

View File

@ -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.

View File

@ -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. */

View File

@ -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

View File

@ -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 ("&lt;<code>");
else
add_word ("</code>&gt;");
add_word ("&lt;");
insert_html_tag (arg, "code");
if (arg != START)
add_word ("&gt;");
}
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 ("&lt;");
else if (html && character == '&')
add_word ("&amp;");
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--;

View File

@ -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 */

View File

@ -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);

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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);
}

View File

@ -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.

View File

@ -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;

View File

@ -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 ();

View File

@ -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 ();
}
}

View File

@ -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.

View File

@ -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 ("&amp;");
else if (html && character == '<' && escape_html)
add_word ("&lt;");
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

View File

@ -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 */

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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.

View File

@ -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())) \

View File

@ -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 ();

View File

@ -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"));

View File

@ -1,7 +1,7 @@
/* node.h -- declarations for Node.
$Id: node.h,v 1.6 2002/01/16 15:52:45 karl Exp $
$Id: node.h,v 1.1 2002/08/25 23:38:39 karl Exp $
Copyright (C) 1996, 97, 98, 99, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 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

View File

@ -1,7 +1,7 @@
/* sectioning.c -- all related stuff @chapter, @section... @contents
$Id: sectioning.c,v 1.17 2002/02/09 00:54:51 karl Exp $
/* sectioning.c -- for @chapter, @section, ..., @contents ...
$Id: sectioning.c,v 1.6 2002/11/08 02:21:07 karl Exp $
Copyright (C) 1999, 2001, 02 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
@ -17,7 +17,7 @@
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 Karl Heinz Marbaise <kama@hippo.fido.de>. */
Originally written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
#include "system.h"
#include "cmds.h"
@ -103,10 +103,10 @@ get_sectioning_number (level, num)
{
p = s + strlen (s);
if ((i == 0) && (enum_marker == APPENDIX_MAGIC))
sprintf (p, "%c.", numbers[i] + 64); /* Should be changed to
sprintf (p, "%c.", numbers[i] + 64); /* Should be changed to
be more portable */
else
sprintf (p, "%d.", numbers[i]);
sprintf (p, "%d.", numbers[i]);
}
/* the last number is never followed by a dot */
@ -203,7 +203,7 @@ what_section (text)
{
return_val = section_alist[index].level + section_alist_offset;
if (return_val < 0)
return_val = 0;
return_val = 0;
else if (return_val > 5)
return_val = 5;
return return_val;
@ -227,8 +227,8 @@ sectioning_underscore (cmd)
free (temp);
xml_close_sections (level);
/* Mark the beginning of the section
If the next command is printindex, we will remove
the section and put an Index instead */
If the next command is printindex, we will remove
the section and put an Index instead */
flush_output ();
xml_last_section_output_position = output_paragraph_offset;
@ -262,7 +262,7 @@ sectioning_underscore (cmd)
{
character = scoring_characters[level];
insert_and_underscore (level, character, cmd);
}
}
}
}
@ -279,44 +279,44 @@ handle_enum_increment (level, index)
if (number_sections && section_alist[index].num == ENUM_SECT_NO)
{
if (level == 0
&& enum_marker != UNNUMBERED_MAGIC)
enum_marker = UNNUMBERED_MAGIC;
&& enum_marker != UNNUMBERED_MAGIC)
enum_marker = UNNUMBERED_MAGIC;
}
/* enumerate only things which are allowed */
if (number_sections && section_alist[index].num)
{
/* reset the marker if we get into enumerated areas */
if (section_alist[index].num == ENUM_SECT_YES
&& level == 0
&& enum_marker == UNNUMBERED_MAGIC)
enum_marker = 0;
&& level == 0
&& enum_marker == UNNUMBERED_MAGIC)
enum_marker = 0;
/* This is special for appendix; if we got the first
time an appendix command then we are entering appendix.
Thats the point we have to start countint with A, B and so on. */
if (section_alist[index].num == ENUM_SECT_APP
&& level == 0
&& enum_marker != APPENDIX_MAGIC)
{
enum_marker = APPENDIX_MAGIC;
numbers [0] = 0; /* this means we start with Appendix A */
}
&& level == 0
&& enum_marker != APPENDIX_MAGIC)
{
enum_marker = APPENDIX_MAGIC;
numbers [0] = 0; /* this means we start with Appendix A */
}
/* only increment counters if we are not in unnumbered
area. This handles situations like this:
@unnumbered .... This sets enum_marker to UNNUMBERED_MAGIC
@section .... */
if (enum_marker != UNNUMBERED_MAGIC)
{
int i;
{
int i;
/* reset all counters which are one level deeper */
for (i = level; i < 3; i++)
numbers [i + 1] = 0;
/* reset all counters which are one level deeper */
for (i = level; i < 3; i++)
numbers [i + 1] = 0;
numbers[level]++;
return xstrdup
(get_sectioning_number (level, section_alist[index].num));
}
numbers[level]++;
return xstrdup
(get_sectioning_number (level, section_alist[index].num));
}
} /* if (number_sections)... */
return xstrdup ("");
@ -413,7 +413,8 @@ sectioning_html (level, cmd)
old_no_indent = no_indent;
no_indent = 1;
add_word_args ("<h%d>", level + 2); /* level 0 (chapter) is <h2> */
/* level 0 (chapter) is <h2> */
add_word_args ("<h%d class=\"%s\">", level + 2, cmd);
/* If we are outside of any node, produce an anchor that
the TOC could refer to. */
@ -426,8 +427,11 @@ sectioning_html (level, cmd)
toc_anchor = substring (starting_pos + sizeof (a_name) - 1,
output_paragraph + output_paragraph_offset);
/* This must be added after toc_anchor is extracted, since
toc_anchor cannot include the closing </a>. For details,
see toc.c:toc_add_entry and toc.c:contents_update_html. */
toc_anchor cannot include the closing </a>. For details,
see toc.c:toc_add_entry and toc.c:contents_update_html.
Also, the anchor close must be output before the section name
in case the name itself contains an anchor. */
add_word ("</a>");
}
starting_pos = output_paragraph + output_paragraph_offset;
@ -523,7 +527,7 @@ cm_top ()
if (tag->flags & TAG_FLAG_IS_TOP)
{
file_line_error (tag->filename, tag->line_no,
_("Here is the %ctop node"), COMMAND_PREFIX);
_("Here is the %ctop node"), COMMAND_PREFIX);
return;
}
tag = tag->next_ent;

View File

@ -1,5 +1,5 @@
/* sectioning.h -- all related stuff @chapter, @section... @contents
$Id: sectioning.h,v 1.2 1999/03/09 22:48:15 karl Exp $
$Id: sectioning.h,v 1.1 2002/08/25 23:38:39 karl Exp $
Copyright (C) 1999 Free Software Foundation, Inc.

View File

@ -1,4 +1,4 @@
<!-- $Id: texinfo.dtd,v 1.5 2002/03/23 20:41:32 karl Exp $
<!-- $Id: texinfo.dtd,v 1.2 2002/12/17 16:34:22 karl Exp $
Document Type Definition for Texinfo.
Author: Philippe Martin (feloy@free.fr)
@ -98,7 +98,7 @@
<!-- NODES -->
<!-- ***** -->
<!ELEMENT node (nodename, nodenext?, nodeprev?, nodeup?,
(para | menu | %section.all;)*) >
(%section.all; | %block;)*) >
<!ELEMENT nodename (#PCDATA)>
<!ELEMENT nodenext (#PCDATA)>
@ -227,7 +227,7 @@
<!ELEMENT indexterm (#PCDATA | %Inline.phrase;)*>
<!ATTLIST indexterm
INDEX CDATA #IMPLIED>
index CDATA #IMPLIED>
<!ELEMENT email (emailaddress, emailname?)>
<!ELEMENT emailaddress (#PCDATA | %Inline.phrase;)*>

View File

@ -1,5 +1,5 @@
<?xml version='1.0'?>
<!-- $Id: texinfo.xsl,v 1.2 2002/04/01 14:06:15 karl Exp $ -->
<!-- $Id: texinfo.xsl,v 1.1 2002/08/25 23:38:39 karl Exp $ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

View File

@ -1,7 +1,7 @@
/* toc.c -- table of contents handling.
$Id: toc.c,v 1.22 2002/04/01 14:07:11 karl Exp $
$Id: toc.c,v 1.3 2002/11/07 16:13:59 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
@ -17,7 +17,7 @@
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 Karl Heinz Marbaise <kama@hippo.fido.de>. */
Originally written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
#include "system.h"
#include "makeinfo.h"
@ -218,7 +218,7 @@ contents_update_html (fp)
flush_output (); /* in case we are writing stdout */
fprintf (fp, "\n<h2>%s</h2>\n<ul>\n", _("Table of Contents"));
fprintf (fp, "\n<div class=\"contents\">\n<h2>%s</h2>\n<ul>\n", _("Table of Contents"));
last_level = toc_entry_alist[0]->level;
@ -237,7 +237,7 @@ contents_update_html (fp)
/* @subsubsection ...
@chapter ... this IS usual.*/
for (k = 0; k < (last_level-toc_entry_alist[i]->level); k++)
fputs ("</ul>\n", fp);
fputs ("</li></ul>\n", fp);
}
/* No double entries in TOC. */
@ -247,6 +247,9 @@ contents_update_html (fp)
/* each toc entry is a list item. */
fputs ("<li>", fp);
/* Insert link -- to an external file if splitting, or
within the current document if not splitting. */
fprintf (fp, "<a ");
/* For chapters (only), insert an anchor that the short contents
will link to. */
if (toc_entry_alist[i]->level == 0)
@ -259,13 +262,10 @@ contents_update_html (fp)
ends, and use that in toc_FOO. */
while (*p && *p != '"')
p++;
fprintf (fp, "<a name=\"toc_%.*s\"></a>\n ",
fprintf (fp, "name=\"toc_%.*s\" ",
p - toc_entry_alist[i]->name, toc_entry_alist[i]->name);
}
/* Insert link -- to an external file if splitting, or
within the current document if not splitting. */
fprintf (fp, "<a href=\"%s#%s</a>\n",
fprintf (fp, "href=\"%s#%s</a>\n",
splitting ? toc_entry_alist[i]->html_file : "",
toc_entry_alist[i]->name);
}
@ -276,9 +276,9 @@ contents_update_html (fp)
/* Go back to start level. */
if (toc_entry_alist[0]->level < last_level)
for (k = 0; k < (last_level-toc_entry_alist[0]->level); k++)
fputs ("</ul>\n", fp);
fputs ("</li></ul>\n", fp);
fputs ("</ul>\n\n", fp);
fputs ("</li></ul>\n</div>\n\n", fp);
}
/* print table of contents in ASCII (--no-headers)
@ -327,7 +327,7 @@ shortcontents_update_html (fp)
flush_output (); /* in case we are writing stdout */
fprintf (fp, "\n<h2>%s</h2>\n<ul>\n", _("Short Contents"));
fprintf (fp, "\n<div class=\"shortcontents\">\n<h2>%s</h2>\n<ul>\n", _("Short Contents"));
if (contents_filename)
toc_file = filename_part (contents_filename);
@ -339,14 +339,14 @@ shortcontents_update_html (fp)
if (toc_entry_alist[i]->level == 0)
{
if (contents_filename)
fprintf (fp, "<li><a href=\"%s#toc_%s</a>\n",
fprintf (fp, "<li><a href=\"%s#toc_%s</a></li>\n",
splitting ? toc_file : "", name);
else
fprintf (fp, "<a href=\"%s#%s</a>\n",
splitting ? toc_entry_alist[i]->html_file : "", name);
}
}
fputs ("</ul>\n\n", fp);
fputs ("</ul>\n</div>\n\n", fp);
if (contents_filename)
free (toc_file);
}

Some files were not shown because too many files have changed in this diff Show More