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

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
Ruslan Ermilov 2003-06-18 12:57:43 +00:00
commit f82e2b21e8
44 changed files with 2466 additions and 675 deletions

View File

@ -1,12 +1,26 @@
$Id: AUTHORS,v 1.4 2002/10/09 22:23:44 karl Exp $
$Id: AUTHORS,v 1.5 2003/05/08 00:51:55 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.
Akim Demaille texi2dvi.
Andreas Schwab texinfo.tex, configure.ac, most makeinfo files.
Bob Chassell texinfo.tex, original texinfo.txi.
Brian Fox all makeinfo/* and info/* files, info-stnd.texi.
Dave Love original makeinfo/html.[ch].
Eli Zaretskii all files.
Karl Berry all files.
Noah Friedman original texi2dvi.
Paul Rubin original makeinfo/multi.c.
Philippe Martin original makeinfo xml/docbook output.
Richard Stallman original texinfo.tex, install-info.c,
texindex.c, texinfo.txi.
Zack Weinberg texinfo.tex (@macro implementation).
Please see http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for
the translation teams for a given language LL.
See http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for the
translation teams for a given language LL.
Many files included in Texinfo distribution are copied from other
locations. See util/srclist*.

View File

@ -1,11 +1,340 @@
The files in here are all Copyright (C) Free Software Foundation, and
are under three different licenses:
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
* GPL - (text in doc/COPYING)
* LGPL - (text in doc/COPYING.LIB)
* FDL - (text in doc/COPYING.DOC and doc/fdl.texi)
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.
The source files are grouped by license into their respective
directories. All documents in doc/ contain the relevant licensing
information.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU 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,3 +1,553 @@
2003-06-10 <karl@gnu.org>
* version 4.6.
2003-06-04 <karl@gnu.org>
* config.sub: update from gnulib.
2003-06-03 <karl@gnu.org>
* mkinstalldirs: update from gnulib.
2003-06-02 Akim Demaille <akim@epita.fr>
* util/texi2dvi (tex_envvars): New.
Use it to forward -I directories to BIBINPUTS and BSTINPUTS, in
addition of INDEXSTYLE and TEXINPUTS.
2003-06-02 <karl@gnu.org>
* makeinfo/html.c (html_output_head): don't output the <link>, to
avoid having mozilla put up a document navigation bar when
we don't have anything else to support it yet. Report from:
Per Bothner.
* makeinfo/makeinfo.c: no need to declare add_link or
add_escaped_anchor_name, since they are not used.
* doc/texinfo.txi (Contents): recommend @contents at the beginning
more strongly. Suggestions from Kevin Ryde.
2003-06-01 <karl@gnu.org>
* makeinfo/macro.c (apply): make \\ expand to \ even if the macro
has no arguments. Report from: Jesper Harder <harder@ifa.au.dk>,
31 May 2003 02:56:20 +0200.
2003-05-31 <karl@gnu.org>
* util/dir-example (C++ libraries): new category, suggested by Bruno.
2003-05-29 <karl@gnu.org>
* configure.ac: pretest version 4.5.93.
2003-05-29 gettextize <bug-gnu-gettext@gnu.org>
* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1.
2003-05-26 <karl@gnu.org>
* util/texi2dvi: spurious \ in tex_args assignment.
* doc/texinfo.txi (Contents): trim excess words.
2003-05-25 <karl@gnu.org>
* util/texi2dvi: extra quotes for the tex_args assignment in
--batch mode.
2003-05-19 <karl@gnu.org>
* lib/xexit.c: translate fflush error messages, add newlines
(report from Jim Meyering).
* util/{texindex.c,install-info.c},
* makeinfo/makeinfo.c,
* info/info.c: use xexit again, with redundant return to avoid
warnings.
2003-05-18 <karl@gnu.org>
* lib/xexit.c (xexit): fputs not fprintf, so we get newline;
translate the messages, too. Report from Jim Meyering.
* util/dir-example: move gcc/automake entries.
* pretest version 4.5.92.
* update to automake 1.7.5.
* makeinfo/html.c (append_char): forgot to increment length, duh.
Report from: "Torsten Bronger" <bronger@physik.rwth-aachen.de>,
18 May 2003 14:36:23 +0200.
2003-05-17 <karl@gnu.org>
* makeinfo/makeinfo.c (defining_copying): new fn.
(add_char): call it, when testing if we should
call html_output_head.
Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>,
17 May 2003 22:10:42 +0200.
* configure.ac: pretest version 4.5.91.
2003-05-16 <karl@gnu.org>
* makeinfo/index.c (sort_index): don't deref NULL. Report from Jan.
2003-05-13 <karl@gnu.org>
* makeinfo/html.c (append_char): appease sgi compiler.
* makeinfo/html.c (insert_html_tag): remove spurious arg to pop_tag,
From: ezra peisach <epeisach@med-xtal.bu.edu>, 13
May 2003 12:13:40 -0400.
Fix a few GCC warnings, reported by Jim Meyering:
* info/nodes.c: parenthesize assignment used as truth value.
* info/nodemenu.c (format_node_info): strcpy instead of sprintf,
since there's no format.
* makeinfo/makeinfo.c (isolate_nodename): remove spurious decl.
* makeinfo/xml.c (xml_insert_indexterm): declare as void.
* info/key.c: initialize with 0,0 at end.
* info/infokey.c (main): return instead of xexit, and remove
unused variable.
* makeinfo/html.c (init_buffer): forgot to return buf.
* info/info.c (remember_info_program_name): remove spurious
declaration.
* makeinfo/sectioning.c,
* info/infomap.c: remove unused variables.
* makeinfo/makeinfo.c (insert_toplevel_subdirectory),
* info/man.c,
* info/infodoc.c (info_find_or_create_help_window): parenthesize
&& within ||.
* info/display.c (display_update_one_window): initialize rep to
NULL, parenthesize && within ||.
* util/install-info.c,
* info/info.c (main),
* info/makedoc.c (main): return instead of xexit.
2003-05-13 Akim Demaille <akim@epita.fr>
* util/texi2dvi (get_xref_files): Pass --file-line-error-style
to TeX when supported.
2003-05-12 <karl@gnu.org>
* configure.ac: pretest version 4.5.90.
* Makefile.am (EXTRA_DIST): add onceonly.m4.
* makeinfo/tests/accentenc: must discard stderr since we expect
two errors in this case.
* makeinfo/makeinfo.c (main): new option --css-include.
(usage): add to --help message.
* makeinfo/makeinfo.h (css_include): new global.
* makeinfo/html.c (append_char, process_css_file): new fns
implementing it.
(html_output_head): call it.
* doc/texinfo.txi (HTML CSS): new node describing it.
Also split up the Generating HTML node into subnodes.
* config.{guess,sub}: update from gnulib.
2003-05-10 <karl@gnu.org>
* makeinfo/index.c (sort_index): allocate the sorted index in new
memory, and set the original index to that, to avoid problems with
@printindex being called twice on the same index.
(cm_printindex): do not free the returned index.
Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May 2003
15:12:21 +0200.
2003-05-09 <karl@gnu.org>
* makeinfo/defun.c (cm_defun): issue error message without extra
x's. Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May
2003 17:24:25 +0200.
2003-05-07 Akim Demaille <akim@epita.fr>
* util/texi2dvi (textra_cmd): New.
(textra): Escape escapes from sed's evaluation.
Use them to support additional TeX/LaTeX commands.
Support --command as a synonym for --texinfo.
2003-05-06 <karl@gnu.org>
* util/dir-example: finish getting rid of GNU packages.
2003-05-04 <karl@gnu.org>
* doc/texinfo.tex (\itemizey): if no arg to @itemize, default to
@bullet. Fix from: Stepan Kasal <kasal@math.cas.cz> 2 May 2003
09:32:11 +0200, report from: Jesper Harder <harder@ifa.au.dk>.
2003-04-30 <karl@gnu.org>
* makeinfo/.gdbinit: no colon on local variables.
* doc/texinfo.txi (documentencoding): Document new Info output feature.
makeinfo/lang.h (encoding_type): rename `ecname' member to `encname'.
makeinfo/html.c, lang.c: change usage.
makeinfo/lang.c (cm_documentencoding): fix typo in warning.
makeinfo/makeinfo.h (SPLIT_SIZE_THRESHOLD): remove.
(info_trailer): declare.
makeinfo/makeinfo.c (info_trailer): new fn to generate Local
Variables: section if --enable-encoding and
@documentencoding are given.
(convert_from_loaded_file): call it.
* makeinfo/node.c (split_file): write trailer into each split
file. Also, simply split files if file size is less than
--split-size, removing SPLIT_SIZE_THRESHOLD.
* doc/texinfo.tex: remove trailing whitespace.
2003-04-29 <karl@gnu.org>
* makeinfo/node.c (cm_anchor): normalize_node_name so that an
anchor named "TOP" or "top" or whatever is not allowed. Report
from: Dumas Patrice <dumas@centre-cired.fr>, 29 Apr 2003 18:56:51
+0200.
2003-04-28 <karl@gnu.org>
* makeinfo/makeinfo.c: whitespace cleanup.
* doc/texinfo.tex (\doprintindex): don't \kern-\parindent, it makes
the first index entry stick out to the left.
Report from: Jesper Harder <harder@ifa.au.dk>,
28 Apr 2003 03:10:36 +0200.
From Akim Demaille <akim@epita.fr>:
* makeinfo/makeinfo.c (cm_value): Warn for undefined flags.
2003-04-27 <karl@gnu.org>
* doc/texinfo.tex (\footnote, \smartitalicx): use \ptexslash
for italic correction instead of \/, since we've redefined \/ now.
Report from: Jesper Harder <harder@ifa.au.dk>, 27 Apr 2003
23:30:29 +0200.
* util/dir-example (mailutils): more from Wojciech Polak.
(autoconf): align/edit/sort entries.
2003-04-26 <karl@gnu.org>
* doc/texinfo.txi (Image Syntax): second and following @image args
optional. Report from: Max Techter <mtechter@gmx.de>, 26 Apr 2003
15:50:02 +0200.
* util/dir-example (anubis): request from Wojciech Polak.
2003-04-25 <karl@gnu.org>
* makeinfo/defun.c (defun_internal): whitespace needed in docbook
output for deftype*. From: José Fonseca
<j_r_fonseca@yahoo.co.uk>, 25 Apr 2003 13:07:13 +0100.
2003-04-21 <karl@gnu.org>
* doc/texinfo.tex (\dofirstparagraphindent): forgot to rename the
\...word's.
(\suppressfirstparagraphindent): forgot to rename
to \dosuppress... Reported by Simon.
2003-04-20 <karl@gnu.org>
* Installed changes from Simon for suppressing indentation on the
first paragraph after section headings, and for new @indent command:
2003-04-12 Simon Law <sfllaw@engmail.uwaterloo.ca>
* doc/texinfo.tex (\firstparagraphindent): implement suppression
of the indentation of the first paragraph.
(\dofirstparagraphindent): for parsing arguments.
(\suppressfirstparagraphindent): suppress, or don't suppress.
(\dosuppressfirstparagraphindent): the actual gobbling of indentation.
(\footnote): Compensate for the hanging-indent side-effect.
(\numhead, \apphead, \unnmhead): call \dosuppress...
* makeinfo/cmds.c (command_table): add "firstparagraphindent"
(as cm_firstparagraphindent)
(set_firstparagraphindent, cm_firstparagraphindent): implement
@firstparagraphindent parsing of options.
* makeinfo/makeinfo.h: declare "do_first_par_indent".
* makeinfo/sectioning.c (sectioning_underscore): suppress
indentation if requested.
* doc/texinfo.txi: document it.
* doc/texinfo.tex (\indent): override \indent primitive to
clear \everypar.
(\ptexindent): for saving/restoring \indent in @tex.
(\footnote): Neutralise the effect of @indent
within a footnote.
* makeinfo/cmds.c (command_table): add "indent" (as cm_indent).
(cm_indent): un-inhibit_paragraph_indentation.
* doc/texinfo.txi: document it.
* doc/texinfo.txi (Conventions): remove spurious extra vertical space
from bulleted itemize which starts with a quote.
* makeinfo/cmds.c (command_table): fix @novalidate definition.
* Installed changes from Jan for @image support in Info format:
2003-04-14 Jan Nieuwenhuizen <janneke@gnu.org>
* info/display.c (display_update_one_window): Skip new style
image tag/cookie.
2003-04-09 Jan Nieuwenhuizen <janneke@gnu.org>
* makeinfo/makeinfo.c (cm_image): Write ^@^H[image ...^@^H] tag.
* makeinfo/html.c (html_output_head): use <style> to get the
regular roman font instead of typewriter for @format and @display;
likewise to reduce the font size for @small*. Suggestion from:
"Torsten Bronger" <bronger@physik.rwth-aachen.de>, 20 Apr 2003
11:03:59 +0200.
2003-04-18 <karl@gnu.org>
* configure.ac (ncurses/termcap.h): move test to after termlib's
definition, of course. Reported by Norton Allen
<allen@huarp.harvard.edu>, 18 Apr 2003 13:31:35 -0400.
* configure.ac: remove comma from comment in AC_TRY_LINK program,
to avoid spurious misinterpretation as an argument delimiter.
2003-04-08 <karl@gnu.org>
* makeinfo/makeinfo.c (usage): avoid double blank line.
2003-04-05 <karl@gnu.org>
* Makefile.am (all of them): use $(VAR) instead of @VAR@, since
automake now emits definitions for all substituted variables.
* makeinfo/makeinfo.h (DEFAULT_SPLIT_SIZE): increase to 300,000.
(SPLIT_SIZE_THRESHOLD): increase to 500,000.
Implicit suggestion via Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>.
2003-04-04 <karl@gnu.org>
* util/texi2dvi (replace_empty): new variable to do the empty path
element detection; don't hardwire path separator as :.
2003-04-02 <karl@gnu.org>
* doc/txi-pl.tex: new file, from polak@gnu.org.
* doc/Makefile.am (TXI_XLATE): add it.
2003-04-01 <karl@gnu.org>
* makeinfo/makeinfo.c (main): correct wording of html/no-headers/split
error message, and don't complain if output is to stdout.
* makeinfo/insertion.c (end_insertion): for @end menu html output,
don't output </ul> if no_headers. Report from: Jesper
Harder <harder@ifa.au.dk>, 01 Apr 2003 00:00:37 +0200.
* info/infomap.c (fetch_user_maps): don't complain if .info
doesn't exist.
2003-03-31 <karl@gnu.org>
* makeinfo/lang.c (iso8859_2_map): new encoding map.
(encoding_table): enable it.
* info/pcterm.c (pc_up_line): use MAX instead of max (no longer
defined). Reported by Richard Dawes.
* doc/texinfo.txi (documentencoding): mention that all processors
recognize the command.
2003-03-30 <karl@gnu.org>
* makeinfo/lang.c (cm_special_character): incorrectly added html
sequences for @oe and @OE even in info output.
2003-03-25 <karl@gnu.org>
* util/srclist.txt (COPYING): get from gnulib/doc, not gnulib.
2003-03-24 <karl@gnu.org>
* TODO: need to write real definition of Info format.
* makeinfo/node.c (cm_node): use &nbsp; instead of ` ', to avoid
line breaks.
2003-03-22 <karl@gnu.org>
* makeinfo/node.c (cm_node): output a space after the Node: and
similar headers, since Bob wants one.
* info/pcterm.c (MIN,MAX): moved to system.h.
* info/session.c (MIN): moved to system.h.
* makeinfo/sectioning.c (MIN): move to system.h.
* lib/system.h (MIN,MAX): define here.
* makeinfo/sectioning.c (sectioning_html): don't go smaller than <h3>.
Reported by Bob.
(MIN): new macro.
* info/session.c (MIN) [MIN]: #undef first if already #define'd.
* doc/texinfo.tex (\nodexxx): use a control sequence instead of
brackets to parse the parts of @node. Otherwise node names with
brackets cause spurious output. Reported by Bob.
(\xrefprintnodename): separate this out from
\xrefX, for easier redefining by Bob.
2003-03-18 <karl@gnu.org>
* makeinfo/insertion.c (cm_item): ensure we don't go off the end
of the string when using strncmp. From: Peter N Lewis
<peter@stairways.com.au>, 13 Mar 2003 16:08:27 +0800.
* doc/texinfo.txi (Raw Formatter Commands): mention using \gdef
within @tex, not \def.
2003-03-12 <karl@gnu.org>
* doc/texinfo.txi (Preparing for TeX): mention extra colons.
2003-03-07 <karl@gnu.org>
* doc/texinfo.tex (\/): new command to allow a line break.
(\ptexslash): for saving/restoring primitive \/ in @tex.
* makeinfo/cmds.c (command_table): add "/" (as cm_no_op).
* makeinfo/makeinfo.c (self_delimiting): add /.
* doc/texinfo.txi (Line Breaks, Command Summary): document it.
Suggestion from wl.
* doc/texinfo.tex (\hyphenation): time-stamp.
2003-03-06 <karl@gnu.org>
* info/session.c (nearest_xref): new fn.
(info_menu_or_ref_item): call it when we are
searching for xrefs, instead of just looking on
the current line.
* info/info-utils.c (info_copy_reference): new fn.
* info/info-utils.h (info_copy_reference): declare.
Bug report from: rich@phekda.freeserve.co.uk,
04 Mar 2003 17:51:47 +0000.
* */.gdbinit: set env MALLOC_CHECK_.
2003-03-06 Ralph Schleicher <rs@nunatak.allgaeu.org>
* makeinfo/files.h (get_file_info_in_path): Declare function.
* makeinfo/files.c (get_file_info_in_path): Remove static keyword.
* makeinfo/makeinfo.c (cm_image): Lookup image file name in the
search path for include files.
2003-03-05 <karl@gnu.org>
* makeinfo/makeinfo.c (insert_toplevel_subdirectory): always make
subdirectory for html. Before, if the current directory happened
to be named `foo' and the @setfilename was foo.info, we would
write the split html files into the current directory. Reported
by rich@phekda.freeserve.co.uk, 01 Mar 2003 12:03:13 +0000.
* makeinfo/files.c (filename_part): simplify assignment.
2003-02-24 <karl@gnu.org>
* makeinfo/insertion.c (get_item_function): check for @item in
argument to @itemize. Report from: Dumas Patrice
<dumas@centre-cired.fr>, 24 Feb 2003 13:13:52 +0100.
* makeinfo/makeinfo.c (remember_brace): say `braces' instead of
`{...}', since often we don't actually expect text inside the
braces.
2003-02-21 <karl@gnu.org>
* aclocal.m4: automake 1.7.3.
2003-02-19 <karl@gnu.org>
* doc/info-stnd.texi: omit all node pointers.
2003-02-18 <karl@gnu.org>
* util/texindex.c (maketempname): use already-set `tempdir' instead
of half-redoing the logic.
(concat): only need two args, not three; change callers.
(perror_with_name): really call perror, putting
the name first a la gcc.
(pfatal_with_name): call perror_with_name.
* util/texi2dvi (get_xref_files): a file whose first line is
\input texinfo is not an index file. Report from: Anton Ertl
<anton@a0.complang.tuwien.ac.at>, 18 Feb 2003 14:41:47 +0100.
2003-02-16 <karl@gnu.org>
* makeinfo/index.c (init_indices): don't try to free indexes that
undefindex already freed. Report from: Arkadiusz
Miskiewicz <misiek@pld.ORG.PL>,
15 Feb 2003 13:22:49 +0100.
* configure.ac (curses): forgot to quote arg to AC_TRY_LINK.
From vojta and te, 16 Feb 2003 01:37:09 +0100.
2003-02-13 <karl@gnu.org>
* makeinfo/insertion.c (begin_insertion): for html cartouche
output, add class="cartouche". Suggestion from Stephen.
2003-02-11 <karl@gnu.org>
* Installed patch:
2003-02-10 Peter Breitenlohner <peb@mppmu.mpg.de>
* info/indices.c, info/info.c, info/info.h, info/nodemenu.c,
info/session.c, info/window.c, makeinfo/defun.c, makeinfo/html.c,
makeinfo/index.c, makeinfo/insertion.c, makeinfo/makeinfo.c,
makeinfo/makeinfo.h, makeinfo/node.c: declare all constant
strings as such in order to avoid lots of gcc warnings (for
--disable-nls and maybe without that as well).
* doc/texinfo.tex (\registeredsymbol): new command for Arnold.
* util/dir-example: dc to basics.
* doc/texinfo.txi (Defining Macros): document new requirements on
macro names. Report from: Alper Ersoy
<dirt@gtk.org>, 11 Feb 2003 05:11:35 +0200.
2003-02-07 <karl@gnu.org>
* makeinfo/insertion.c (begin_insertion): output a table with a border
for @cartouche.
(end_insertion): end the table.
From: Joshua N Pritikin <vishnu@pobox.com>,
7 Feb 2003 21:59:49 +0530.
2003-02-05 <karl@gnu.org>
* info/info.c (short_options): add h.
(main): treat -h same as --help.
From: rwhron@earthlink.net, 31 Aug 2002 19:56:57 -0400.
* info/session.c (show_isearch_prompt): compute length of
translated "Failing ", don't assume 20 is enough.
(It's 21 bytes in UTF-8 Russian.)
Report from: varg@thsun1.jinr.ru,
25 Jul 2002 15:26:42 +0400.
* info/display.c (display_update_one_window): don't derefence null
`entry' (if the screen is very small).
From: Danny Yoo <dyoo@hkn.eecs.berkeley.edu>,
8 Jul 2002 15:21:14 -0700.
* doc/.cvsignore: ignore *.info and texput.log.
2003-02-04 <karl@gnu.org>
* Version 4.5 (that info bug was a killer).
@ -113,7 +663,7 @@
(info_signal_proc): reread window size in case it has changed
while we were suspended.
Mon Jan 27 08:09:07 CET 2003 Stepan Kasal <kasal@math.cas.cz>
Mon Jan 27 08:09:07 CET 2003 Stepan Kasal <kasal@math.cas.cz>
* doc/texinfo.tex (\acuteaccent): the workaround is no longer needed.
(\xrefX): \normalturnoffactive changed to \turnoffactive, since
we \otherbackslash right afterwards anyway.
@ -319,7 +869,7 @@ Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
Fri Jan 10 07:12:23 CET 2003 Stepan Kasal <kasal@math.cas.cz>
* texinfo.tex (\writetocentry): The
common work on building the line for \write\tocfile was
moved into the macro itself and thus all callers has been changed.
moved into the macro itself and thus all callers has been changed.
2003-01-09 <karl@gnu.org>
@ -487,7 +1037,7 @@ Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
verbatim line.
Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
25 Nov 2002 18:26:12 +0100.
(\doverbatim): ignore everything up to the first
^^M, to avoid an extra blank line in the output.
@ -683,7 +1233,7 @@ Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
2002-11-04 <karl@gnu.org>
* doc/texinfo.txi (File End): grammar.
These changes from gildea:
* makeinfo/cmds.c (cm_titlepage): new fn, and use it for @titlepage.
@ -754,7 +1304,7 @@ Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
regular line spacing a long time ago to not be double-spaced.
In @smallbook mode, it ironically caused excessive line spacing.
(\nonfillstart, \quotation): don't call it.
* doc/texinfo.tex (\smartslanted, \smartitalic): use \ttsl if in
typewriter.
From: Bob Wilson <bwilson@tensilica.com>.
@ -11949,6 +12499,11 @@ Mon Aug 15 14:33:51 1988 Robert J. Chassell (bob at spiff)
Month Day, Year format to a Day Month Year format. Left old
version commented out.
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.
Local Variables:
mode: indented-text

View File

@ -1,7 +1,7 @@
$Id: NEWS,v 1.34 2003/02/05 00:54:07 karl Exp $
$Id: NEWS,v 1.57 2003/06/10 20:50:03 karl Exp $
This file records noteworthy changes.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
2001, 2002, 2003 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@ -22,6 +22,45 @@ convenience, here's a url to one of the relevant sections:
-------------------------------------------------------------------------------
4.6 (10 June 2003)
* Language:
. new command @/ specifies an allowable breakpoint within a line.
. new command @dofirstparagraphindent to control whether the first
paragraph following a section heading is indented. Default is to
omit this indentation, unlike the output up to now.
. new command @indent for explicitly indenting a paragraph.
. makeinfo writes a new construct for @image in Info output, so that
graphical Info browsers (such as Emacs Info under X) can display an
actual image. (Standalone Info ignores this, since it runs in a tty.)
* makeinfo:
. Common:
- search for image files in the include file search path.
- warns if @value is used on an undefined variable.
. Info output:
- default --split-size now 300,000 bytes, up from 50,000.
- with --enable-encoding and a given @documentencoding,
output a Local Variables section specifying that encoding, for use
with Emacs.
. HTML output:
- uses <h3> at the smallest.
- a few css <style> definitions are included to better
implement @format, @display, @small..., etc.
- new option --css-include=FILE includes FILE in the <style>.
- @cartouche now outputs a <table> with a border.
* texinfo.tex:
. new Polish translation txi-pl.tex.
* texi2dvi:
. --command=CMD replaces --texinfo=CMD; it inserts CMD at the first
line of LaTeX files now, or after the @setfilename for Texinfo files.
* info:
. RET now goes to the nearest xref (rather like Emacs Info),
instead of the next xref starting on the current line.
* Distribution:
. new Romanian (ro) translation.
. variables now declared const where appropriate.
. gettext 0.12.1, automake 1.7.5.
4.5 (4 February 2003)
* info:
. a bug in 4.4 prevented compressed info files from being found.
@ -38,6 +77,7 @@ convenience, here's a url to one of the relevant sections:
. @value constructs are now expanded in the filename arguments to
@include and @verbatiminclude.
* makeinfo:
. @macro names may no longer include ^ or _, for the sake of math mode.
. 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
@ -61,7 +101,7 @@ convenience, here's a url to one of the relevant sections:
. 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:
@ -122,11 +162,13 @@ convenience, here's a url to one of the relevant sections:
. supports xml and docbook output.
. supports HTML splitting by node, which is now the default.
. new option --split-size to control maximum size of split info files.
. new option --enable-encoding to enable
* info:
. user-specified key bindings supported.
. ANSI escape sequences (as produced by groff) removed from man output
by default; use --raw-escapes to let them through if your terminal
supports them.
. RET terminates incremental search normally.
* texinfo.tex:
. @math implies @tex, so all the usual plain TeX math is supported.
. smaller fonts for @smallexample, in all page sizes.

View File

@ -1,4 +1,4 @@
$Id: TODO,v 1.6 2003/01/27 13:05:44 karl Exp $
$Id: TODO,v 1.8 2003/04/27 13:12:24 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.
@ -104,6 +104,7 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
- Incorporate an X-based viewer, perhaps tkinfo
http://www.math.ucsb.edu/~boldt/tkinfo/
or saxinfo.
- Write technical definition of Info format.
* PDF:
- make each letter of the index (A, B, ...) a section in the TOC.
@ -113,6 +114,11 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
- be able to copy the info file to compile-time $(infodir), to
simplify by-hand installation.
* texindex:
- read source file (specified by new option) for @documentlanguage
and/or @documentencoding, and change the sorting appropriately.
From: Wojciech Polak <polak@gnu.org>, 26 Apr 2003 11:30:59 +0200.
Ideas that will not be implemented:
- Process Texinfo files directly instead of converting to Info:

View File

@ -279,6 +279,9 @@
/* Define to 1 if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY
/* Define to 1 if you have the `__fsetlocking' function. */
#undef HAVE___FSETLOCKING
/* Define to 1 if you have the `__secure_getenv' function. */
#undef HAVE___SECURE_GETENV

View File

@ -344,7 +344,7 @@ and independent documents or works, in or on a volume of a storage or
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
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
@ -366,7 +366,7 @@ 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, and all the license notices in the
Document, and any Warrany Disclaimers, provided that you also include
Document, and any Warranty 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
@ -421,8 +421,8 @@ license notices just after the title page:
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''.
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
@end group
@end smallexample

View File

@ -1,5 +1,5 @@
\input texinfo @c -*-texinfo-*-
@comment $Id: info-stnd.texi,v 1.4 2002/11/06 00:42:29 karl Exp $
@comment $Id: info-stnd.texi,v 1.5 2003/02/19 13:32:54 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, 1993, 1996, 1997, 1998, 1999, 2001, 2002
Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
Free Software Foundation, Inc.
@quotation
@ -1047,7 +1047,7 @@ different node, perhaps in another Info file. Such pointers are called
* Selecting Xrefs:: Commands for selecting menu or note items.
@end menu
@node Parts of an Xref, Selecting Xrefs, , Xref Commands
@node Parts of an Xref
@section Parts of an Xref
Cross references have two major parts: the first part is called the
@ -1095,7 +1095,7 @@ documentation: @xref{xref, , Writing an Xref, texinfo, the Texinfo
Manual}, for more information on creating your own texinfo cross
references.
@node Selecting Xrefs, , Parts of an Xref, Xref Commands
@node Selecting Xrefs
@section Selecting Xrefs
The following table lists the Info commands which operate on menu items.
@ -1206,7 +1206,7 @@ windows.
* The Echo Area:: Used for displaying errors and reading input.
@end menu
@node The Mode Line, Basic Windows, , Window Commands
@node The Mode Line
@section The Mode Line
A @dfn{mode line} is a line of inverse video which appears at the bottom
@ -1256,7 +1256,7 @@ showing possible completions:
-----Info: *Completions*, 7 lines --All---------------------------------
@end example
@node Basic Windows, The Echo Area, The Mode Line, Window Commands
@node Basic Windows
@section Window Commands
It can be convenient to view more than one node at a time. To allow
@ -1331,7 +1331,7 @@ its contents. The variable @code{automatic-tiling} can cause
@xref{Variables, , @code{automatic-tiling}}.
@end table
@node The Echo Area, , Basic Windows, Window Commands
@node The Echo Area
@section The Echo Area
@cindex echo area

View File

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
.TH INFO "1" "February 2003" "info 4.4" "User Commands"
.TH INFO "1" "June 2003" "info 4.6" "User Commands"
.SH NAME
info \- read Info documents
.SH SYNOPSIS

View File

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
.TH INSTALL-INFO "1" "February 2003" "install-info 4.4" "User Commands"
.TH INSTALL-INFO "1" "June 2003" "install-info 4.6" "User Commands"
.SH NAME
install-info \- update info/dir entries
.SH SYNOPSIS

View File

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
.TH MAKEINFO "1" "February 2003" "makeinfo 4.4" "User Commands"
.TH MAKEINFO "1" "June 2003" "makeinfo 4.6" "User Commands"
.SH NAME
makeinfo \- translate Texinfo documents
.SH SYNOPSIS
@ -86,7 +86,12 @@ If VAL is `none', do not indent; if VAL is
`asis', preserve existing indentation.
.TP
\fB\-\-split\-size\fR=\fINUM\fR
split Info files at size NUM (default 50000).
split Info files at size NUM (default 300000).
.SS "Options for HTML:"
.TP
\fB\-\-css\-include\fR=\fIFILE\fR
include FILE in HTML <style> output;
read stdin if FILE is -.
.SS "Input file options:"
.TP
\fB\-\-commands\-in\-node\-names\fR
@ -139,6 +144,7 @@ The defaults for the @if... conditionals depend on the output format:
if generating HTML, \fB\-\-ifhtml\fR is on and the others are off;
if generating Info, \fB\-\-ifinfo\fR is on and the others are off;
if generating plain text, \fB\-\-ifplaintext\fR is on and the others are off;
if generating XML, \fB\-\-ifxml\fR is on and the others are off.
.SH EXAMPLES
.TP
makeinfo foo.texi

View File

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
.TH TEXINDEX "1" "February 2003" "texindex 4.4" "User Commands"
.TH TEXINDEX "1" "June 2003" "texindex 4.6" "User Commands"
.SH NAME
texindex \- sort Texinfo index files
.SH SYNOPSIS

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
@set UPDATED 5 November 2002
@set UPDATED-MONTH November 2002
@set EDITION 4.5
@set VERSION 4.5
@set UPDATED 19 February 2003
@set UPDATED-MONTH February 2003
@set EDITION 4.6
@set VERSION 4.6

View File

@ -1,4 +1,4 @@
@set UPDATED 4 February 2003
@set UPDATED-MONTH February 2003
@set EDITION 4.5
@set VERSION 4.5
@set UPDATED 2 June 2003
@set UPDATED-MONTH June 2003
@set EDITION 4.6
@set VERSION 4.6

View File

@ -1,7 +1,7 @@
/* display.c -- How to display Info windows.
$Id: display.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: display.c,v 1.4 2003/05/13 16:20:44 karl Exp $
Copyright (C) 1993, 97 Free Software Foundation, Inc.
Copyright (C) 1993, 1997, 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
@ -136,7 +136,7 @@ display_update_one_window (win)
for (; nodetext < last_node_char; nodetext++)
{
char *rep, *rep_carried_over, rep_temp[2];
char *rep = NULL, *rep_carried_over, rep_temp[2];
int replen;
if (isprint (*nodetext))
@ -152,6 +152,15 @@ display_update_one_window (win)
{
replen = win->width - pl_index + pl_ignore;
}
else if (*nodetext == '\0'
&& (nodetext + 1) < last_node_char
&& *(nodetext + 1) == '\b')
{
/* Found new style image tag/cookie \0\b[ or \0\b]
Just skip for now. */
nodetext++;
continue;
}
else
{
rep = printed_representation (*nodetext, pl_index);
@ -211,7 +220,7 @@ display_update_one_window (win)
to the next line. */
for (i = 0; pl_index < (win->width + pl_ignore - 1);)
printed_line[pl_index++] = rep[i++];
rep_carried_over = rep + i;
/* If printing the last character in this window couldn't
@ -233,8 +242,10 @@ display_update_one_window (win)
entry = display[line_index + win->first_row];
/* If the screen line is inversed, then we have to clear
the line from the screen first. Why, I don't know. */
if (entry->inverse
the line from the screen first. Why, I don't know.
(But don't do this if we have no visible entries, as can
happen if the window is shrunk very small.) */
if ((entry && entry->inverse)
/* Need to erase the line if it has escape sequences. */
|| (raw_escapes_p && strchr (entry->text, '\033') != 0))
{
@ -322,7 +333,7 @@ display_update_one_window (win)
printed_line[0] = '\0';
begin = nodetext;
while ((nodetext < last_node_char) && (*nodetext != '\n'))
nodetext++;
}

View File

@ -1,7 +1,8 @@
/* indices.c -- deal with an Info file index.
$Id: indices.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: indices.c,v 1.2 2003/02/11 16:39:06 karl Exp $
Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
Copyright (C) 1993, 1997, 1998, 1999, 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
@ -390,7 +391,7 @@ DECLARE_INFO_COMMAND (info_next_index_match,
/* Report to the user on what we have found. */
{
register int j;
char *name = _("CAN'T SEE THIS");
const char *name = _("CAN'T SEE THIS");
char *match;
for (j = 0; index_nodenames[j]; j++)

View File

@ -1,7 +1,7 @@
/* info-utils.c -- miscellanous.
$Id: info-utils.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: info-utils.c,v 1.2 2003/03/06 23:22:23 karl Exp $
Copyright (C) 1993, 98 Free Software Foundation, Inc.
Copyright (C) 1993, 1998, 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
@ -355,6 +355,27 @@ info_concatenate_references (ref1, ref2)
return (result);
}
/* Copy a reference structure. Since we tend to free everything at
every opportunity, we don't share any points, but copy everything into
new memory. */
REFERENCE *
info_copy_reference (src)
REFERENCE *src;
{
REFERENCE *dest = xmalloc (sizeof (REFERENCE));
dest->label = src->label ? xstrdup (src->label) : NULL;
dest->filename = src->filename ? xstrdup (src->filename) : NULL;
dest->nodename = src->nodename ? xstrdup (src->nodename) : NULL;
dest->start = src->start;
dest->end = src->end;
return dest;
}
/* Free the data associated with REFERENCES. */
void
info_free_references (references)

View File

@ -1,7 +1,7 @@
/* info-utils.h -- Exported functions and variables from info-utils.c.
$Id: info-utils.h,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: info-utils.h,v 1.2 2003/03/06 23:21:48 karl Exp $
Copyright (C) 1993, 1996, 1998, 2002 Free Software Foundation, Inc.
Copyright (C) 1993, 1996, 1998, 2002, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -83,6 +83,9 @@ extern REFERENCE **info_menu_items ();
and REF2 arrays are freed, but their contents are not. */
REFERENCE **info_concatenate_references ();
/* Copy an existing reference into new memory. */
extern REFERENCE *info_copy_reference ();
/* Free the data associated with REFERENCES. */
extern void info_free_references ();

View File

@ -1,5 +1,5 @@
/* info.c -- Display nodes of Info files in multiple windows.
$Id: info.c,v 1.2 2003/01/19 18:45:59 karl Exp $
$Id: info.c,v 1.7 2003/05/19 13:10:59 karl Exp $
Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
@ -120,16 +120,16 @@ static struct option long_options[] = {
/* String describing the shorthand versions of the long options found above. */
#ifdef __MSDOS__
static char *short_options = "d:n:f:o:ORsb";
static char *short_options = "d:n:f:ho:ORsb";
#else
static char *short_options = "d:n:f:o:ORs";
static char *short_options = "d:n:f:ho:ORs";
#endif
/* When non-zero, the Info window system has been initialized. */
int info_windows_initialized_p = 0;
/* Some "forward" declarations. */
static void info_short_help (), remember_info_program_name ();
static void info_short_help ();
static void init_messages ();
extern void add_file_directory_to_path ();
@ -158,7 +158,7 @@ main (argc, argv)
textdomain (PACKAGE);
init_messages ();
while (1)
{
int option_character;
@ -166,7 +166,7 @@ main (argc, argv)
option_character = getopt_long
(argc, argv, short_options, long_options, &getopt_long_index);
/* getopt_long () returns EOF when there are no more long options. */
/* getopt_long returns EOF when there are no more long options. */
if (option_character == EOF)
break;
@ -199,6 +199,11 @@ main (argc, argv)
user_filename = xstrdup (optarg);
break;
/* Treat -h like --help. */
case 'h':
print_help_p = 1;
break;
/* User is specifying the name of a file to output to. */
case 'o':
if (user_output_filename)
@ -473,6 +478,8 @@ For more information about these matters, see the files named COPYING.\n"),
xexit (0);
}
return 0; /* Avoid bogus warnings. */
}
void
@ -558,7 +565,7 @@ info_short_help ()
static const char speech_friendly_string[] = "";
#endif
printf (_("\
Usage: %s [OPTION]... [MENU-ITEM...]\n\
\n\
@ -609,22 +616,22 @@ Texinfo home page: http://www.gnu.org/software/texinfo/"));
use them that way. This also has the advantage that there's only one
copy of the strings. */
char *msg_cant_find_node;
char *msg_cant_file_node;
char *msg_cant_find_window;
char *msg_cant_find_point;
char *msg_cant_kill_last;
char *msg_no_menu_node;
char *msg_no_foot_node;
char *msg_no_xref_node;
char *msg_no_pointer;
char *msg_unknown_command;
char *msg_term_too_dumb;
char *msg_at_node_bottom;
char *msg_at_node_top;
char *msg_one_window;
char *msg_win_too_small;
char *msg_cant_make_help;
const char *msg_cant_find_node;
const char *msg_cant_file_node;
const char *msg_cant_find_window;
const char *msg_cant_find_point;
const char *msg_cant_kill_last;
const char *msg_no_menu_node;
const char *msg_no_foot_node;
const char *msg_no_xref_node;
const char *msg_no_pointer;
const char *msg_unknown_command;
const char *msg_term_too_dumb;
const char *msg_at_node_bottom;
const char *msg_at_node_top;
const char *msg_one_window;
const char *msg_win_too_small;
const char *msg_cant_make_help;
static void
init_messages ()

View File

@ -1,7 +1,8 @@
/* info.h -- Header file which includes all of the other headers.
$Id: info.h,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: info.h,v 1.2 2003/02/11 16:39:06 karl Exp $
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -128,22 +129,22 @@ extern int raw_escapes_p;
extern void info_error ();
/* Error message defines. */
extern char *msg_cant_find_node;
extern char *msg_cant_file_node;
extern char *msg_cant_find_window;
extern char *msg_cant_find_point;
extern char *msg_cant_kill_last;
extern char *msg_no_menu_node;
extern char *msg_no_foot_node;
extern char *msg_no_xref_node;
extern char *msg_no_pointer;
extern char *msg_unknown_command;
extern char *msg_term_too_dumb;
extern char *msg_at_node_bottom;
extern char *msg_at_node_top;
extern char *msg_one_window;
extern char *msg_win_too_small;
extern char *msg_cant_make_help;
extern const char *msg_cant_find_node;
extern const char *msg_cant_file_node;
extern const char *msg_cant_find_window;
extern const char *msg_cant_find_point;
extern const char *msg_cant_kill_last;
extern const char *msg_no_menu_node;
extern const char *msg_no_foot_node;
extern const char *msg_no_xref_node;
extern const char *msg_no_pointer;
extern const char *msg_unknown_command;
extern const char *msg_term_too_dumb;
extern const char *msg_at_node_bottom;
extern const char *msg_at_node_top;
extern const char *msg_one_window;
extern const char *msg_win_too_small;
extern const char *msg_cant_make_help;
extern char *filename_non_directory (); /* Found in info-utils.c. */

View File

@ -1,7 +1,7 @@
/* infodoc.c -- functions which build documentation nodes.
$Id: infodoc.c,v 1.5 2002/11/06 00:40:08 karl Exp $
$Id: infodoc.c,v 1.6 2003/05/13 16:22:11 karl Exp $
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@ -37,7 +37,7 @@ static NODE *internal_info_help_node = (NODE *)NULL;
static char *internal_info_help_node_contents = (char *)NULL;
/* The (more or less) static text which appears in the internal info
help node. The actual key bindings are inserted. Keep the
help node. The actual key bindings are inserted. Keep the
underlines (****, etc.) in the same N_ call as the text lines they
refer to, so translations can make the number of *'s or -'s match. */
#if defined(INFOKEY)
@ -300,7 +300,7 @@ create_internal_info_help_node (help_is_only_window_p)
? _(info_internal_help_text[i])
: info_internal_help_text[i];
char *key = info_help_keys_text[i][vi_keys_p];
/* If we have only one window (because the window size was too
small to split it), CTRL-x 0 doesn't work to `quit' help. */
if (STREQ (key, "CTRL-x 0") && help_is_only_window_p)
@ -439,7 +439,7 @@ info_find_or_create_help_window ()
to quit help), true if help will be one of several visible windows
(so CTRL-x 0 must be used to quit help). */
help_is_only_window_p
= (help_window && !windows->next
= ((help_window && !windows->next)
|| !help_window && eligible->height < HELP_SPLIT_SIZE);
create_internal_info_help_node (help_is_only_window_p);
@ -1112,7 +1112,7 @@ where_is_internal (map, cmd)
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

View File

@ -1,5 +1,5 @@
/* infokey.c -- compile ~/.infokey to ~/.info.
$Id: infokey.c,v 1.3 2003/01/19 18:46:27 karl Exp $
$Id: infokey.c,v 1.4 2003/05/13 16:26:02 karl Exp $
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
@ -86,7 +86,6 @@ main (argc, argv)
char **argv;
{
int getopt_long_index; /* Index returned by getopt_long (). */
NODE *initial_node; /* First node loaded by Info. */
#ifdef HAVE_SETLOCALE
/* Set locale via LC_ALL. */
@ -233,7 +232,7 @@ For more information about these matters, see the files named COPYING.\n"),
fclose (inf);
}
xexit (0);
return 0;
}
static char *
@ -289,18 +288,18 @@ mkpath (dir, file)
#info
#echo-area
#var
The sections may occur in any order. Each section may be
omitted completely. If the 'info' section is the first in the
file, its '#info' line may be omitted.
The 'info' and 'echo-area' sections
-----------------------------------
Each line in the 'info' or 'echo-area' sections has the
following syntax:
key-sequence SPACE action-name [ SPACE [ # comment ] ] \n
Where SPACE is one or more white space characters excluding
newline, "action-name" is the name of a GNU Info command,
"comment" is any sequence of characters excluding newline, and
@ -319,7 +318,7 @@ mkpath (dir, file)
\r indicates a single CR;
\t indicates a single TAB;
\b indicates a single BACKSPACE;
4. \ku indicates the Up Arrow key;
\kd indicates the Down Arrow key;
\kl indicates the Left Arrow key;
@ -345,17 +344,17 @@ mkpath (dir, file)
If the following line:
#stop
occurs anywhere in an 'info' or 'echo-area' section, that
indicates to GNU Info to suppress all of its default key
bindings in that context.
The 'var' section
-----------------
Each line in the 'var' section has the following syntax:
variable-name = value \n
Where "variable-name" is the name of a GNU Info variable and
"value" is the value that GNU Info will assign to that variable
when commencing execution. There must be no white space in the
@ -567,7 +566,7 @@ compile (fp, filename, sections)
seqstate = special_key;
break;
default:
/* Backslash followed by any other char
/* Backslash followed by any other char
just means that char. */
To_seq (c);
seqstate = normal;
@ -683,7 +682,7 @@ compile (fp, filename, sections)
error = 1;
}
break;
case got_action:
if (c == '#')
state = in_trailing_comment;
@ -720,7 +719,7 @@ compile (fp, filename, sections)
error = 1;
}
break;
case get_value:
if (c == '\n')
{

View File

@ -1,7 +1,7 @@
/* man.c: How to read and format man files.
$Id: man.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: man.c,v 1.2 2003/05/13 16:37:54 karl Exp $
Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002 Free Software
Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2003 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@ -160,7 +160,7 @@ create_manpage_file_buffer ()
file_buffer->filesize = 0;
file_buffer->contents = (char *)NULL;
file_buffer->flags = (N_IsInternal | N_CannotGC | N_IsManPage);
return (file_buffer);
}
@ -401,7 +401,7 @@ clean_manpage (manpage)
/* A malformed man page could have a \b as its first character,
in which case decrementing j by 2 will cause us to write into
newpage[-1], smashing the hidden info stored there by malloc. */
if (manpage[i] == '\b' || manpage[i] == '\f' && j > 0)
if (manpage[i] == '\b' || (manpage[i] == '\f' && j > 0))
j -= 2;
else if (!raw_escapes_p)
{

View File

@ -1,7 +1,8 @@
/* nodes.c -- how to get an Info file and node.
$Id: nodes.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: nodes.c,v 1.2 2003/05/13 16:37:54 karl Exp $
Copyright (C) 1993, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1993, 1998, 1999, 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
@ -869,19 +870,19 @@ find_node_of_anchor (file_buffer, tag)
int anchor_pos, node_pos;
TAG *node_tag;
NODE *node;
/* Look through the tag list for the anchor. */
for (anchor_pos = 0; file_buffer->tags[anchor_pos]; anchor_pos++)
{
TAG *t = file_buffer->tags[anchor_pos];
if (t->nodestart == tag->nodestart)
break;
break;
}
/* Should not happen, because we should always find the anchor. */
if (!file_buffer->tags[anchor_pos])
return NULL;
/* We've found the anchor. Look backwards in the tag table for the
preceding node (we're assuming the tags are given in order),
skipping over any preceding anchors. */
@ -889,20 +890,20 @@ find_node_of_anchor (file_buffer, tag)
node_pos >= 0 && file_buffer->tags[node_pos]->nodelen == 0;
node_pos--)
;
/* An info file with an anchor before any nodes is pathological, but
it's possible, so don't crash. */
if (node_pos < 0)
return NULL;
/* We have the tag for the node that contained the anchor tag. */
node_tag = file_buffer->tags[node_pos];
node_tag = file_buffer->tags[node_pos];
/* Look up the node name in the tag table to get the actual node.
This is a recursive call, but it can't recurse again, because we
call it with a real node. */
node = info_node_of_file_buffer_tags (file_buffer, node_tag->nodename);
/* Start displaying the node at the anchor position. */
if (node)
{ /* The nodestart for real nodes is three characters before the `F'
@ -921,11 +922,11 @@ find_node_of_anchor (file_buffer, tag)
the screen), which looks wrong. */
if (node->display_pos >= node->nodelen)
node->display_pos = node->nodelen - 1;
/* Don't search in the node for the xref text, it's not there. */
node->flags |= N_FromAnchor;
}
return node;
}
@ -944,8 +945,8 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
if (!file_buffer->tags) {
return NULL;
}
for (i = 0; (tag = file_buffer->tags[i]); i++)
for (i = 0; (tag = file_buffer->tags[i]); i++)
if (strcmp (nodename, tag->nodename) == 0)
{
FILE_BUFFER *subfile = info_find_file_internal (tag->filename,
@ -1036,7 +1037,7 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
free (node);
node = find_node_of_anchor (file_buffer, tag);
}
else
{
/* Since we know the length of this node, we have already
@ -1098,7 +1099,7 @@ forget_info_file (filename)
if (!info_loaded_files)
return;
for (i = 0; file_buffer = info_loaded_files[i]; i++)
for (i = 0; (file_buffer = info_loaded_files[i]); i++)
if (FILENAME_CMP (filename, file_buffer->filename) == 0
|| FILENAME_CMP (filename, file_buffer->fullpath) == 0)
{
@ -1107,7 +1108,7 @@ forget_info_file (filename)
if (file_buffer->contents)
free (file_buffer->contents);
/* free_file_buffer_tags () also kills the subfiles list, since
the subfiles list is only of use in conjunction with tags. */
free_file_buffer_tags (file_buffer);

View File

@ -1,8 +1,8 @@
/* window.c -- windows in Info.
$Id: window.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: window.c,v 1.2 2003/02/11 16:39:06 karl Exp $
Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation,
Inc.
Copyright (C) 1993, 1997, 1998, 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
@ -1144,7 +1144,7 @@ window_make_modeline (window)
int modeline_len = 0;
char *parent = NULL, *filename = "*no file*";
char *nodename = "*no node*";
char *update_message = NULL;
const char *update_message = NULL;
NODE *node = window->node;
if (node)

View File

@ -1,7 +1,7 @@
/* system.h: system-dependent declarations; include this first.
$Id: system.h,v 1.4 2002/10/31 13:44:06 karl Exp $
$Id: system.h,v 1.5 2003/03/22 17:40:39 karl Exp $
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@ -258,4 +258,15 @@ extern void xexit ();
/* For convenience. */
#define STREQ(s1,s2) (strcmp (s1, s2) == 0)
/* We don't need anything fancy. If we did need something fancy, gnulib
has it. */
#ifdef MIN
#undef MIN
#endif
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#ifdef MAX
#undef MAX
#endif
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif /* TEXINFO_SYSTEM_H */

View File

@ -18,6 +18,8 @@
#ifndef XALLOC_H_
# define XALLOC_H_
# include <stddef.h>
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args

View File

@ -1,7 +1,7 @@
/* xexit.c -- exit with attention to return values and closing stdout.
$Id: xexit.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: xexit.c,v 1.4 2003/05/19 13:10:59 karl Exp $
Copyright (C) 1999 Free Software Foundation, Inc.
Copyright (C) 1999, 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
@ -41,26 +41,28 @@
#endif /* not EXIT_SUCCESS */
/* Flush stdout first, exit if failure. Otherwise, if EXIT_STATUS is
zero, exit successfully, else unsuccessfully. */
/* Flush stdout first, exit if failure (therefore, xexit should be
called to exit every program, not just `return' from main).
Otherwise, if EXIT_STATUS is zero, exit successfully, else
unsuccessfully. */
void
xexit (exit_status)
int exit_status;
{
if (ferror (stdout))
{
fprintf (stderr, "ferror on stdout");
fputs (_("ferror on stdout\n"), stderr);
exit_status = 1;
}
else if (fflush (stdout) != 0)
{
fprintf (stderr, "fflush error on stdout");
fputs (_("fflush error on stdout\n"), stderr);
exit_status = 1;
}
exit_status = exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
exit (exit_status);
}

View File

@ -1,5 +1,5 @@
/* cmds.c -- Texinfo commands.
$Id: cmds.c,v 1.16 2003/01/12 15:18:24 karl Exp $
$Id: cmds.c,v 1.18 2003/04/21 01:02:39 karl Exp $
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
@ -56,7 +56,8 @@ void
cm_anchor (), cm_node (), cm_menu (), cm_xref (), cm_ftable (),
cm_vtable (), cm_pxref (), cm_inforef (), cm_uref (), cm_email (),
cm_quotation (), cm_display (), cm_smalldisplay (), cm_itemize (),
cm_enumerate (), cm_tab (), cm_table (), cm_itemx (), cm_noindent (),
cm_enumerate (), cm_tab (), cm_table (), cm_itemx (),
cm_noindent (), cm_indent (),
cm_setfilename (), cm_br (), cm_sp (), cm_page (), cm_group (),
cm_center (), cm_ref (), cm_include (), cm_bye (), cm_item (), cm_end (),
cm_kindex (), cm_cindex (), cm_findex (), cm_pindex (), cm_vindex (),
@ -66,7 +67,8 @@ 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_titlepage (), cm_tie (), cm_tt (),
cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (),
cm_tie (), cm_tt (),
cm_verbatim (), cm_verbatiminclude ();
/* Conditionals. */
@ -74,7 +76,10 @@ void cm_set (), cm_clear (), cm_ifset (), cm_ifclear ();
void cm_value (), cm_ifeq ();
/* Options. */
static void cm_paragraphindent (), cm_exampleindent ();
static void
cm_exampleindent (),
cm_firstparagraphindent (),
cm_paragraphindent ();
/* Internals. */
static void cm_obsolete ();
@ -94,6 +99,7 @@ COMMAND command_table[] = {
{ ",", cm_accent_cedilla, MAYBE_BRACE_ARGS },
{ "-", cm_no_op, NO_BRACE_ARGS },
{ ".", insert_self, NO_BRACE_ARGS },
{ "/", cm_no_op, NO_BRACE_ARGS },
{ ":", cm_no_op, NO_BRACE_ARGS },
{ "=", cm_accent, MAYBE_BRACE_ARGS },
{ "?", insert_self, NO_BRACE_ARGS },
@ -219,6 +225,7 @@ COMMAND command_table[] = {
{ "file", cm_code, BRACE_ARGS },
{ "finalout", cm_no_op, NO_BRACE_ARGS },
{ "findex", cm_findex, NO_BRACE_ARGS },
{ "firstparagraphindent", cm_firstparagraphindent, NO_BRACE_ARGS },
{ "flushleft", cm_flushleft, NO_BRACE_ARGS },
{ "flushright", cm_flushright, NO_BRACE_ARGS },
{ "footnote", cm_footnote, NO_BRACE_ARGS}, /* self-arg eater */
@ -247,6 +254,7 @@ COMMAND command_table[] = {
{ "ignore", command_name_condition, NO_BRACE_ARGS },
{ "image", cm_image, BRACE_ARGS },
{ "include", cm_include, NO_BRACE_ARGS },
{ "indent", cm_indent, NO_BRACE_ARGS },
{ "inforef", cm_inforef, BRACE_ARGS },
{ "insertcopying", cm_insert_copying, NO_BRACE_ARGS },
{ "item", cm_item, NO_BRACE_ARGS },
@ -268,7 +276,7 @@ COMMAND command_table[] = {
{ "need", cm_ignore_line, NO_BRACE_ARGS },
{ "node", cm_node, NO_BRACE_ARGS },
{ "noindent", cm_noindent, NO_BRACE_ARGS },
{ "noindent", cm_novalidate, NO_BRACE_ARGS },
{ "novalidate", cm_novalidate, NO_BRACE_ARGS },
{ "nwnode", cm_node, NO_BRACE_ARGS },
{ "o", cm_special_char, BRACE_ARGS },
{ "oddfooting", cm_ignore_line, NO_BRACE_ARGS },
@ -985,8 +993,8 @@ cm_obsolete (arg, start, end)
}
/* This says to inhibit the indentation of the next paragraph, but
not of following paragraphs. */
/* Inhibit the indentation of the next paragraph, but not of following
paragraphs. */
void
cm_noindent ()
{
@ -994,10 +1002,17 @@ cm_noindent ()
inhibit_paragraph_indentation = -1;
}
/* Force indentation of the next paragraph. */
void
cm_indent ()
{
inhibit_paragraph_indentation = 0;
}
/* I don't know exactly what to do with this. Should I allow
someone to switch filenames in the middle of output? Since the
file could be partially written, this doesn't seem to make sense.
Another option: ignore it, since they don't *really* want to
Another option: ignore it, since they don't really want to
switch files. Finally, complain, or at least warn. It doesn't
really matter, anyway, since this doesn't get executed. */
void
@ -1402,6 +1417,7 @@ cm_paragraphindent ()
free (arg);
}
/* @exampleindent: change indentation of example-like environments. */
static int
set_default_indentation_increment (string)
@ -1427,3 +1443,31 @@ cm_exampleindent ()
free (arg);
}
/* @firstparagraphindent: suppress indentation in first paragraphs after
headings. */
static int
set_firstparagraphindent (string)
char *string;
{
if (STREQ (string, "insert") || STREQ (string, _("insert")))
do_first_par_indent = 1;
else if (STREQ (string, "none") || STREQ (string, _("none")))
do_first_par_indent = 0;
else
return -1;
return 0;
}
static void
cm_firstparagraphindent ()
{
char *arg;
get_rest_of_line (1, &arg);
if (set_firstparagraphindent (arg) != 0)
line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
free (arg);
}

View File

@ -1,7 +1,8 @@
/* defun.c -- @defun and friends.
$Id: defun.c,v 1.3 2002/11/11 00:57:49 feloy Exp $
$Id: defun.c,v 1.6 2003/05/09 23:51:10 karl Exp $
Copyright (C) 1998, 1999, 2000, 2001, 2002 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
@ -331,7 +332,8 @@ defun_internal (type, x_p)
{
enum insertion_type base_type;
char **defun_args, **scan_args;
char *category, *defined_name, *type_name, *type_name2;
const char *category;
char *defined_name, *type_name, *type_name2;
{
char *line;
@ -441,7 +443,7 @@ defun_internal (type, x_p)
if (*scan_args && **scan_args && **scan_args == '(')
warning ("`%c' follows defined name `%s' instead of whitespace",
**scan_args, defined_name);
if (!x_p)
begin_insertion (type);
@ -559,7 +561,7 @@ defun_internal (type, x_p)
break;
case deftypefn:
case deftypevr:
execute_string ("%s", type_name);
execute_string ("%s ", type_name);
xml_insert_element (FUNCTION, START);
execute_string ("%s", defined_name);
xml_insert_element (FUNCTION, END);
@ -567,7 +569,7 @@ defun_internal (type, x_p)
case deftypemethod:
case deftypeop:
case deftypeivar:
execute_string ("%s", type_name2);
execute_string ("%s ", type_name2);
xml_insert_element (FUNCTION, START);
execute_string ("%s", defined_name);
xml_insert_element (FUNCTION, END);
@ -713,27 +715,26 @@ defun_internal (type, x_p)
void
cm_defun ()
{
int x_p;
enum insertion_type type;
char *temp = xstrdup (command);
x_p = (command[strlen (command) - 1] == 'x');
char *base_command = xstrdup (command); /* command with any `x' removed */
int x_p = (command[strlen (command) - 1] == 'x');
if (x_p)
temp[strlen (temp) - 1] = 0;
base_command[strlen (base_command) - 1] = 0;
type = find_type_from_name (temp);
free (temp);
type = find_type_from_name (base_command);
/* If we are adding to an already existing insertion, then make sure
that we are already in an insertion of type TYPE. */
if (x_p && (!insertion_level || insertion_stack->insertion != type))
{
line_error (_("Must be in `%s' insertion to use `%sx'"),
command, command);
line_error (_("Must be in `@%s' environment to use `@%s'"),
base_command, command);
discard_until ("\n");
return;
}
else
defun_internal (type, x_p);
defun_internal (type, x_p);
free (base_command);
}

View File

@ -1,7 +1,8 @@
/* files.c -- file-related functions for makeinfo.
$Id: files.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: files.c,v 1.3 2003/03/06 14:05:30 karl Exp $
Copyright (C) 1998, 1999, 2000, 2001, 2002 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
@ -82,7 +83,7 @@ extract_colon_unit (string, index)
When found, return the stat () info for FILENAME in FINFO.
If PATH is NULL, only the current directory is searched.
If the file could not be found, return a NULL pointer. */
static char *
char *
get_file_info_in_path (filename, path, finfo)
char *filename, *path;
struct stat *finfo;
@ -322,9 +323,7 @@ filename_part (filename)
#ifdef REMOVE_OUTPUT_EXTENSIONS
/* See if there is an extension to remove. If so, remove it. */
{
char *temp;
temp = strrchr (basename, '.');
char *temp = strrchr (basename, '.');
if (temp)
*temp = 0;
}

View File

@ -1,5 +1,5 @@
/* files.h -- declarations for files.c.
$Id: files.h,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: files.h,v 1.2 2003/03/06 14:05:30 karl Exp $
Copyright (C) 1998, 2002 Free Software Foundation, Inc.
@ -36,6 +36,7 @@ extern FSTACK *filestack;
extern void pushfile (), popfile ();
extern void flush_file_stack ();
extern char *get_file_info_in_path ();
extern char *find_and_load ();
extern char *output_name_from_input_name ();
extern char *expand_filename ();

View File

@ -1,7 +1,7 @@
/* html.c -- html-related utilities.
$Id: html.c,v 1.8 2002/11/04 22:14:40 karl Exp $
$Id: html.c,v 1.18 2003/06/02 12:32:29 karl Exp $
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 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
@ -26,14 +26,17 @@
HSTACK *htmlstack = NULL;
static char *process_css_file (/* char * */);
/* See html.h. */
int html_output_head_p = 0;
int html_title_written = 0;
void
html_output_head ()
{
static char *html_title = NULL;
static const char *html_title = NULL;
if (html_output_head_p)
return;
@ -49,7 +52,7 @@ html_output_head ()
add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
if (document_encoding_code != no_encoding)
add_word_args ("; charset=%s",
encoding_table[document_encoding_code].ecname);
encoding_table[document_encoding_code].encname);
add_word ("\">\n");
if (!document_description)
@ -59,8 +62,12 @@ html_output_head ()
document_description);
add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
VERSION);
#if 0
/* let's not do this now, since it causes mozilla to put up a
navigation bar. */
add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" \
rel=\"generator-home\">\n");
#endif
if (copying_text)
{ /* copying_text has already been fully expanded in
@ -73,6 +80,44 @@ rel=\"generator-home\">\n");
insert_string ("-->\n");
}
/* Put the style definitions in a comment for the sake of browsers
that don't support <style>. */
add_word ("<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n");
add_word ("<style type=\"text/css\"><!--\n");
{
char *css_inline = NULL;
if (css_include)
/* This writes out any @import commands from the --css-file,
and returns any actual css code following the imports. */
css_inline = process_css_file (css_include);
/* This seems cleaner than adding <br>'s at the end of each line for
these "roman" displays. It's hardly the end of the world if the
browser doesn't do <style>s, in any case; they'll just come out in
typewriter. */
#define CSS_FONT_INHERIT "font-family:inherit"
add_word_args (" pre.display { %s }\n", CSS_FONT_INHERIT);
add_word_args (" pre.format { %s }\n", CSS_FONT_INHERIT);
/* Alternatively, we could do <font size=-1> in insertion.c, but this
way makes it easier to override. */
#define CSS_FONT_SMALLER "font-size:smaller"
add_word_args (" pre.smalldisplay { %s; %s }\n", CSS_FONT_INHERIT,
CSS_FONT_SMALLER);
add_word_args (" pre.smallformat { %s; %s }\n", CSS_FONT_INHERIT,
CSS_FONT_SMALLER);
add_word_args (" pre.smallexample { %s }\n", CSS_FONT_SMALLER);
add_word_args (" pre.smalllisp { %s }\n", CSS_FONT_SMALLER);
/* Write out any css code from the user's --css-file. */
if (css_inline)
add_word (css_inline);
add_word ("--></style>\n");
}
add_word ("</head>\n<body>\n");
if (title && !html_title_written && titlepage_cmd_present)
@ -82,6 +127,158 @@ rel=\"generator-home\">\n");
}
}
/* Append CHAR to BUFFER, (re)allocating as necessary. We don't handle
null characters. */
typedef struct
{
unsigned size; /* allocated */
unsigned length; /* used */
char *buffer;
} buffer_type;
static buffer_type *
init_buffer ()
{
buffer_type *buf = xmalloc (sizeof (buffer_type));
buf->length = 0;
buf->size = 0;
buf->buffer = NULL;
return buf;
}
static void
append_char (buf, c)
buffer_type *buf;
int c;
{
buf->length++;
if (buf->length >= buf->size)
{
buf->size += 100;
buf->buffer = xrealloc (buf->buffer, buf->size);
}
buf->buffer[buf->length - 1] = c;
buf->buffer[buf->length] = 0;
}
/* Read the cascading style-sheet file FILENAME. Write out any @import
commands, which must come first, by the definition of css. If the
file contains any actual css code following the @imports, return it;
else return NULL. */
static char *
process_css_file (filename)
char *filename;
{
int c, lastchar;
FILE *f;
buffer_type *import_text = init_buffer ();
buffer_type *inline_text = init_buffer ();
unsigned lineno = 1;
enum { null_state, comment_state, import_state, inline_state } state
= null_state, prev_state;
/* read from stdin if `-' is the filename. */
f = STREQ (filename, "-") ? stdin : fopen (filename, "r");
if (!f)
{
error (_("%s: could not open --css-file: %s"), progname, filename);
return NULL;
}
/* Read the file. The @import statements must come at the beginning,
with only whitespace and comments allowed before any inline css code. */
while ((c = getc (f)) >= 0)
{
if (c == '\n')
lineno++;
switch (state)
{
case null_state: /* between things */
if (c == '@')
{
/* If there's some other @command, just call it an
import, it's all the same to us. So don't bother
looking for the `import'. */
append_char (import_text, c);
state = import_state;
}
else if (c == '/')
{ /* possible start of a comment */
int nextchar = getc (f);
if (nextchar == '*')
state = comment_state;
else
{
ungetc (nextchar, f); /* wasn't a comment */
state = inline_state;
}
}
else if (isspace (c))
; /* skip whitespace; maybe should use c_isspace? */
else
/* not an @import, not a comment, not whitespace: we must
have started the inline text. */
state = inline_state;
if (state == inline_state)
append_char (inline_text, c);
if (state != null_state)
prev_state = null_state;
break;
case comment_state:
if (c == '/' && lastchar == '*')
state = prev_state; /* end of comment */
break; /* else ignore this comment char */
case import_state:
append_char (import_text, c); /* include this import char */
if (c == ';')
{ /* done with @import */
append_char (import_text, '\n'); /* make the output nice */
state = null_state;
prev_state = import_state;
}
break;
case inline_state:
/* No harm in writing out comments, so don't bother parsing
them out, just append everything. */
append_char (inline_text, c);
break;
}
lastchar = c;
}
/* Reached the end of the file. We should not be still in a comment. */
if (state == comment_state)
warning (_("%s:%d: --css-file ended in comment"), filename, lineno);
/* Write the @import text, if any. */
if (import_text->buffer)
{
add_word (import_text->buffer);
free (import_text->buffer);
free (import_text);
}
/* We're wasting the buffer struct memory, but so what. */
return inline_text->buffer;
}
/* Escape HTML special characters in the string if necessary,
returning a pointer to a possibly newly-allocated one. */
@ -139,6 +336,8 @@ escape_string (string)
free (string);
return newstring - newlen;
}
/* Save current tag. */
void
@ -187,7 +386,7 @@ insert_html_tag (start_or_end, tag)
}
if (start_or_end != START)
pop_tag (tag);
pop_tag ();
if (htmlstack)
old_tag = htmlstack->tag;
@ -228,6 +427,8 @@ insert_html_tag (start_or_end, tag)
}
}
/* Output an HTML <link> to the filename for NODE, including the
other string as extra attributes. */
void
@ -240,7 +441,7 @@ add_link (nodename, attributes)
add_word_args ("%s", attributes);
add_word_args (" href=\"");
add_anchor_name (nodename, 1);
add_word ("\"></a>\n");
add_word ("\">\n");
}
}

View File

@ -1,7 +1,7 @@
/* index.c -- indexing for Texinfo.
$Id: index.c,v 1.4 2002/11/26 22:54:31 karl Exp $
$Id: index.c,v 1.8 2003/05/16 23:52:40 karl Exp $
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 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
@ -342,9 +342,14 @@ init_indices ()
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;
/* undefindex sets all this to null in some cases. */
if (name_index_alist[i])
{
free (name_index_alist[i]->name);
free (name_index_alist[i]);
name_index_alist[i] = NULL;
}
}
}
@ -551,16 +556,16 @@ make_index_entries_unique (array, count)
free (copy);
}
/* Sort the index passed in INDEX, returning an array of
pointers to elements. The array is terminated with a NULL
pointer. We call qsort because it's supposed to be fast.
I think this looks bad. */
/* Sort the index passed in INDEX, returning an array of pointers to
elements. The array is terminated with a NULL pointer. */
INDEX_ELT **
sort_index (index)
INDEX_ELT *index;
{
INDEX_ELT **array;
INDEX_ELT *temp = index;
INDEX_ELT *temp;
int count = 0;
int save_line_number = line_number;
char *save_input_filename = input_filename;
@ -573,35 +578,36 @@ sort_index (index)
characters @AE{} etc., to sort incorrectly. */
html = 0;
while (temp)
{
count++;
temp = temp->next;
}
/* We have the length. Make an array. */
for (temp = index, count = 0; temp; temp = temp->next, count++)
;
/* We have the length, now we can allocate an array. */
array = xmalloc ((count + 1) * sizeof (INDEX_ELT *));
count = 0;
temp = index;
while (temp)
for (temp = index, count = 0; temp; temp = temp->next, count++)
{
array[count++] = temp;
/* Allocate new memory for the return array, since parts of the
original INDEX get freed. Otherwise, if the document calls
@printindex twice on the same index, with duplicate entries,
we'll have garbage the second time. There are cleaner ways to
deal, but this will suffice for now. */
array[count] = xmalloc (sizeof (INDEX_ELT));
*(array[count]) = *(temp); /* struct assignment, hope it's ok */
/* Adjust next pointers to use the new memory. */
if (count > 0)
array[count-1]->next = array[count];
/* Set line number and input filename to the source line for this
index entry, as this expansion finds any errors. */
line_number = array[count - 1]->defining_line;
input_filename = array[count - 1]->defining_file;
line_number = array[count]->defining_line;
input_filename = array[count]->defining_file;
/* 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);
temp = temp->next;
then expand it as @code{entry}, i.e., as in fixed-width font. */
array[count]->entry = expansion (temp->entry_text, array[count]->code);
}
array[count] = NULL; /* terminate the array. */
line_number = save_line_number;
input_filename = save_input_filename;
html = save_html;
@ -619,11 +625,19 @@ sort_index (index)
if (lang_env && !STREQ (lang_env, "C") && !STREQ (lang_env, "POSIX"))
index_compare_fn = strcoll;
}
#endif /* HAVE_STRCOLL */
#endif /* HAVE_STRCOLL */
/* Sort the array. */
qsort (array, count, sizeof (INDEX_ELT *), index_element_compare);
/* Remove duplicate entries. */
make_index_entries_unique (array, count);
/* Replace the original index with the sorted one, in case the
document wants to print it again. If the index wasn't empty. */
if (index)
*index = **array;
return array;
}
@ -667,11 +681,11 @@ cm_printindex ()
free (index_name);
return;
}
/* Do this before sorting, so execute_string is in the good environment */
if (xml && docbook)
xml_begin_index ();
/* Do this before sorting, so execute_string in index_element_compare
will give the same results as when we actually print. */
printing_index = 1;
@ -685,25 +699,25 @@ cm_printindex ()
add_word_args ("<ul class=\"index-%s\" compact>", index_name);
else if (!no_headers && !docbook)
add_word ("* Menu:\n\n");
me_inhibit_expansion++;
/* This will probably be enough. */
line_length = 100;
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;
const 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"),
@ -711,7 +725,7 @@ cm_printindex ()
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
@ -728,7 +742,7 @@ cm_printindex ()
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);
@ -741,12 +755,14 @@ cm_printindex ()
if (index->node && *index->node)
{
/* Make sure any non-macros in the node name are expanded. */
char *expanded_index;
in_fixed_width_font++;
index_node = expansion (index_node, 0);
expanded_index = expansion (index_node, 0);
in_fixed_width_font--;
add_anchor_name (index_node, 1);
add_word_args ("\">%s</a>", index_node);
free (index_node);
add_anchor_name (expanded_index, 1);
add_word_args ("\">%s</a>", expanded_index);
free (expanded_index);
}
else if (STREQ (index_node, _("(outside of any node)")))
{
@ -769,11 +785,11 @@ cm_printindex ()
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;
@ -800,7 +816,7 @@ cm_printindex ()
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);
@ -808,13 +824,13 @@ cm_printindex ()
{
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]
@ -835,7 +851,7 @@ cm_printindex ()
}
}
}
/* Prevent `output_paragraph' from growing to the size of the
whole index. */
flush_output ();
@ -844,17 +860,16 @@ cm_printindex ()
free (line);
free (index_name);
me_inhibit_expansion--;
printing_index = 0;
free (array);
close_single_paragraph ();
filling_enabled = saved_filling_enabled;
inhibit_paragraph_indentation = saved_inhibit_paragraph_indentation;
input_filename = saved_input_filename;
line_number = saved_line_number;
if (html)
add_word ("</ul>");
else if (xml && docbook)

View File

@ -1,5 +1,5 @@
/* insertion.c -- insertions for Texinfo.
$Id: insertion.c,v 1.14 2003/01/02 23:46:29 karl Exp $
$Id: insertion.c,v 1.21 2003/04/01 14:34:18 karl Exp $
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
@ -130,8 +130,21 @@ char *
get_item_function ()
{
char *item_function;
char *item_loc;
get_rest_of_line (0, &item_function);
/* If the document erroneously says
@itemize @bullet @item foobar
it's nicer to give an error up front than repeat `@bullet expected
braces' until we get a segmentation fault. */
item_loc = strstr (item_function, "@item");
if (item_loc)
{
line_error (_("@item not allowed in argument to @itemize"));
*item_loc = 0;
}
/* If we hit the end of text in get_rest_of_line, backing up
input pointer will cause the last character of the last line
be pushed back onto the input, which is wrong. */
@ -191,7 +204,7 @@ pop_insertion ()
/* Return a pointer to the print name of this
enumerated type. */
char *
const char *
insertion_type_pname (type)
enum insertion_type type;
{
@ -643,8 +656,14 @@ begin_insertion (type)
close_single_paragraph ();
break;
/* Insertions that are no-ops in info, but do something in TeX. */
case cartouche:
if (html)
add_word ("<table class=\"cartouche\" border=1><tr><td>\n");
if (in_menu)
no_discard++;
break;
/* Insertions that are no-ops in info, but do something in TeX. */
case ifclear:
case ifhtml:
case ifinfo:
@ -845,7 +864,7 @@ end_insertion (type)
case menu:
in_menu--; /* No longer hacking menus. */
if (html)
if (html && !no_headers)
add_word ("</ul>\n");
else if (!no_headers)
close_insertion_paragraph ();
@ -869,8 +888,13 @@ end_insertion (type)
close_insertion_paragraph ();
break;
case group:
case cartouche:
if (html)
add_word ("</td></tr></table>\n");
close_insertion_paragraph ();
break;
case group:
close_insertion_paragraph ();
break;
@ -981,7 +1005,7 @@ discard_insertions (specials_ok)
break;
else
{
char *offender = insertion_type_pname (insertion_stack->insertion);
const char *offender = insertion_type_pname (insertion_stack->insertion);
file_line_error (insertion_stack->filename,
insertion_stack->line_number,
@ -1643,9 +1667,10 @@ cm_item ()
in this context, but I cannot find any way to force
them all render exactly one blank line. */
if (!itemx_flag
&& strncmp ((char *) output_paragraph
&& ((output_paragraph_offset < sizeof (dl_tag) + 1)
|| strncmp ((char *) output_paragraph
+ output_paragraph_offset - sizeof (dl_tag) + 1,
dl_tag, sizeof (dl_tag) - 1) != 0)
dl_tag, sizeof (dl_tag) - 1) != 0))
add_word ("<br>");
add_word ("<dt>");

View File

@ -1,7 +1,7 @@
/* lang.c -- language-dependent support.
$Id: lang.c,v 1.5 2002/11/12 18:48:52 feloy Exp $
$Id: lang.c,v 1.8 2003/05/01 00:05:27 karl Exp $
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 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
@ -31,12 +31,12 @@ 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 */
static 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 */
iso_map_type iso8859_1_map [] = {
static iso_map_type iso8859_1_map [] = {
{ "nbsp", 0xA0, 0x00A0 },
{ "iexcl", 0xA1, 0x00A1 },
{ "cent", 0xA2, 0x00A2 },
@ -86,7 +86,7 @@ iso_map_type iso8859_1_map [] = {
{ "Iacute", 0xCD, 0x00CD },
{ "Icirc", 0xCE, 0x00CE },
{ "Iuml", 0xCF, 0x00CF },
{ "ETH", 0xD0, 0x00D0 }, /* I don't know ;-( */
{ "ETH", 0xD0, 0x00D0 },
{ "Ntilde", 0xD1, 0x00D1 },
{ "Ograve", 0xD2, 0x00D2 },
{ "Oacute", 0xD3, 0x00D3 },
@ -137,11 +137,133 @@ iso_map_type iso8859_1_map [] = {
{ NULL, 0, 0 }
};
/* Date: Mon, 31 Mar 2003 00:19:28 +0200
From: Wojciech Polak <polak@gnu.org>
...
* Primary Polish site for ogonki is http://www.agh.edu.pl/ogonki/,
but it's only in Polish language (it has some interesting links).
* A general site about ISO 8859-2 at http://nl.ijs.si/gnusl/cee/iso8859-2.html
* ISO 8859-2 Character Set at http://nl.ijs.si/gnusl/cee/charset.html
This site provides almost all information about iso-8859-2,
including the character table!!! (must see!)
* ISO 8859-2 and even HTML entities !!! (must see!)
http://people.ssh.fi/mtr/genscript/88592.txt
* (minor) http://www.agh.edu.pl/ogonki/plchars.html
One more table, this time it includes even information about Polish
characters in Unicode.
*/
static iso_map_type iso8859_2_map [] = {
{ "nbsp", 0xA0, 0x00A0 }, /* NO-BREAK SPACE */
{ "", 0xA1, 0x0104 }, /* LATIN CAPITAL LETTER A WITH OGONEK */
{ "", 0xA2, 0x02D8 }, /* BREVE */
{ "", 0xA3, 0x0141 }, /* LATIN CAPITAL LETTER L WITH STROKE */
{ "curren", 0xA4, 0x00A4 }, /* CURRENCY SIGN */
{ "", 0xA5, 0x013D }, /* LATIN CAPITAL LETTER L WITH CARON */
{ "", 0xA6, 0x015A }, /* LATIN CAPITAL LETTER S WITH ACUTE */
{ "sect", 0xA7, 0x00A7 }, /* SECTION SIGN */
{ "uml", 0xA8, 0x00A8 }, /* DIAERESIS */
{ "", 0xA9, 0x0160 }, /* LATIN CAPITAL LETTER S WITH CARON */
{ "", 0xAA, 0x015E }, /* LATIN CAPITAL LETTER S WITH CEDILLA */
{ "", 0xAB, 0x0164 }, /* LATIN CAPITAL LETTER T WITH CARON */
{ "", 0xAC, 0x0179 }, /* LATIN CAPITAL LETTER Z WITH ACUTE */
{ "shy", 0xAD, 0x00AD }, /* SOFT HYPHEN */
{ "", 0xAE, 0x017D }, /* LATIN CAPITAL LETTER Z WITH CARON */
{ "", 0xAF, 0x017B }, /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */
{ "deg", 0xB0, 0x00B0 }, /* DEGREE SIGN */
{ "", 0xB1, 0x0105 }, /* LATIN SMALL LETTER A WITH OGONEK */
{ "", 0xB2, 0x02DB }, /* OGONEK */
{ "", 0xB3, 0x0142 }, /* LATIN SMALL LETTER L WITH STROKE */
{ "acute", 0xB4, 0x00B4 }, /* ACUTE ACCENT */
{ "", 0xB5, 0x013E }, /* LATIN SMALL LETTER L WITH CARON */
{ "", 0xB6, 0x015B }, /* LATIN SMALL LETTER S WITH ACUTE */
{ "", 0xB7, 0x02C7 }, /* CARON (Mandarin Chinese third tone) */
{ "cedil", 0xB8, 0x00B8 }, /* CEDILLA */
{ "", 0xB9, 0x0161 }, /* LATIN SMALL LETTER S WITH CARON */
{ "", 0xBA, 0x015F }, /* LATIN SMALL LETTER S WITH CEDILLA */
{ "", 0xBB, 0x0165 }, /* LATIN SMALL LETTER T WITH CARON */
{ "", 0xBC, 0x017A }, /* LATIN SMALL LETTER Z WITH ACUTE */
{ "", 0xBD, 0x02DD }, /* DOUBLE ACUTE ACCENT */
{ "", 0xBE, 0x017E }, /* LATIN SMALL LETTER Z WITH CARON */
{ "", 0xBF, 0x017C }, /* LATIN SMALL LETTER Z WITH DOT ABOVE */
{ "", 0xC0, 0x0154 }, /* LATIN CAPITAL LETTER R WITH ACUTE */
{ "", 0xC1, 0x00C1 }, /* LATIN CAPITAL LETTER A WITH ACUTE */
{ "", 0xC2, 0x00C2 }, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
{ "", 0xC3, 0x0102 }, /* LATIN CAPITAL LETTER A WITH BREVE */
{ "", 0xC4, 0x00C4 }, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
{ "", 0xC5, 0x0139 }, /* LATIN CAPITAL LETTER L WITH ACUTE */
{ "", 0xC6, 0x0106 }, /* LATIN CAPITAL LETTER C WITH ACUTE */
{ "", 0xC7, 0x00C7 }, /* LATIN CAPITAL LETTER C WITH CEDILLA */
{ "", 0xC8, 0x010C }, /* LATIN CAPITAL LETTER C WITH CARON */
{ "", 0xC9, 0x00C9 }, /* LATIN CAPITAL LETTER E WITH ACUTE */
{ "", 0xCA, 0x0118 }, /* LATIN CAPITAL LETTER E WITH OGONEK */
{ "", 0xCB, 0x00CB }, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
{ "", 0xCC, 0x011A }, /* LATIN CAPITAL LETTER E WITH CARON */
{ "", 0xCD, 0x00CD }, /* LATIN CAPITAL LETTER I WITH ACUTE */
{ "", 0xCE, 0x00CE }, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
{ "", 0xCF, 0x010E }, /* LATIN CAPITAL LETTER D WITH CARON */
{ "", 0xD0, 0x0110 }, /* LATIN CAPITAL LETTER D WITH STROKE */
{ "", 0xD1, 0x0143 }, /* LATIN CAPITAL LETTER N WITH ACUTE */
{ "", 0xD2, 0x0147 }, /* LATIN CAPITAL LETTER N WITH CARON */
{ "", 0xD3, 0x00D3 }, /* LATIN CAPITAL LETTER O WITH ACUTE */
{ "", 0xD4, 0x00D4 }, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
{ "", 0xD5, 0x0150 }, /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
{ "", 0xD6, 0x00D6 }, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
{ "times", 0xD7, 0x00D7 }, /* MULTIPLICATION SIGN */
{ "", 0xD8, 0x0158 }, /* LATIN CAPITAL LETTER R WITH CARON */
{ "", 0xD9, 0x016E }, /* LATIN CAPITAL LETTER U WITH RING ABOVE */
{ "", 0xDA, 0x00DA }, /* LATIN CAPITAL LETTER U WITH ACUTE */
{ "", 0xDB, 0x0170 }, /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
{ "", 0xDC, 0x00DC }, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
{ "", 0xDD, 0x00DD }, /* LATIN CAPITAL LETTER Y WITH ACUTE */
{ "", 0xDE, 0x0162 }, /* LATIN CAPITAL LETTER T WITH CEDILLA */
{ "", 0xDF, 0x00DF }, /* LATIN SMALL LETTER SHARP S (German) */
{ "", 0xE0, 0x0155 }, /* LATIN SMALL LETTER R WITH ACUTE */
{ "", 0xE1, 0x00E1 }, /* LATIN SMALL LETTER A WITH ACUTE */
{ "", 0xE2, 0x00E2 }, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
{ "", 0xE3, 0x0103 }, /* LATIN SMALL LETTER A WITH BREVE */
{ "", 0xE4, 0x00E4 }, /* LATIN SMALL LETTER A WITH DIAERESIS */
{ "", 0xE5, 0x013A }, /* LATIN SMALL LETTER L WITH ACUTE */
{ "", 0xE6, 0x0107 }, /* LATIN SMALL LETTER C WITH ACUTE */
{ "", 0xE7, 0x00E7 }, /* LATIN SMALL LETTER C WITH CEDILLA */
{ "", 0xE8, 0x010D }, /* LATIN SMALL LETTER C WITH CARON */
{ "", 0xE9, 0x00E9 }, /* LATIN SMALL LETTER E WITH ACUTE */
{ "", 0xEA, 0x0119 }, /* LATIN SMALL LETTER E WITH OGONEK */
{ "", 0xEB, 0x00EB }, /* LATIN SMALL LETTER E WITH DIAERESIS */
{ "", 0xEC, 0x011B }, /* LATIN SMALL LETTER E WITH CARON */
{ "", 0xED, 0x00ED }, /* LATIN SMALL LETTER I WITH ACUTE */
{ "", 0xEE, 0x00EE }, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
{ "", 0xEF, 0x010F }, /* LATIN SMALL LETTER D WITH CARON */
{ "", 0xF0, 0x0111 }, /* LATIN SMALL LETTER D WITH STROKE */
{ "", 0xF1, 0x0144 }, /* LATIN SMALL LETTER N WITH ACUTE */
{ "", 0xF2, 0x0148 }, /* LATIN SMALL LETTER N WITH CARON */
{ "", 0xF3, 0x00F3 }, /* LATIN SMALL LETTER O WITH ACUTE */
{ "", 0xF4, 0x00F4 }, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
{ "", 0xF5, 0x0151 }, /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */
{ "", 0xF6, 0x00F6 }, /* LATIN SMALL LETTER O WITH DIAERESIS */
{ "divide", 0xF7, 0x00F7 }, /* DIVISION SIGN */
{ "", 0xF8, 0x0159 }, /* LATIN SMALL LETTER R WITH CARON */
{ "", 0xF9, 0x016F }, /* LATIN SMALL LETTER U WITH RING ABOVE */
{ "", 0xFA, 0x00FA }, /* LATIN SMALL LETTER U WITH ACUTE */
{ "", 0xFB, 0x0171 }, /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */
{ "", 0xFC, 0x00FC }, /* LATIN SMALL LETTER U WITH DIAERESIS */
{ "", 0xFD, 0x00FD }, /* LATIN SMALL LETTER Y WITH ACUTE */
{ "", 0xFE, 0x0163 }, /* LATIN SMALL LETTER T WITH CEDILLA */
{ "", 0xFF, 0x02D9 }, /* DOT ABOVE (Mandarin Chinese light tone) */
{ NULL, 0, 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_2, "ISO-8859-2", (iso_map_type *) iso8859_2_map },
{ ISO_8859_3, "ISO-8859-3", NULL },
{ ISO_8859_4, "ISO-8859-4", NULL },
{ ISO_8859_5, "ISO-8859-5", NULL },
@ -310,7 +432,7 @@ void
cm_documentlanguage ()
{
language_code_type c;
char *lang_arg;
char *lang_arg;
/* Read the line with the language code on it. */
get_rest_of_line (0, &lang_arg);
@ -365,13 +487,13 @@ cm_documentencoding ()
{
encoding_code_type enc;
char *enc_arg;
get_rest_of_line (1, &enc_arg);
/* See if we have this encoding. */
for (enc = no_encoding+1; enc != last_encoding_code; enc++)
{
if (strcasecmp (enc_arg, encoding_table[enc].ecname) == 0)
if (strcasecmp (enc_arg, encoding_table[enc].encname) == 0)
{
document_encoding_code = enc;
break;
@ -380,7 +502,7 @@ cm_documentencoding ()
/* If we didn't find this code, complain. */
if (enc == last_encoding_code)
warning (_("unrecogized encoding name `%s'"), enc_arg);
warning (_("unrecognized encoding name `%s'"), enc_arg);
else if (encoding_table[document_encoding_code].isotab == NULL)
warning (_("sorry, encoding `%s' not supported"), enc_arg);
@ -434,7 +556,7 @@ cm_accent_generic_html (arg, start, end, html_supported, single,
char *html_solo;
{
static int valid_html_accent; /* yikes */
if (arg == START)
{ /* If HTML has good support for this character, use it. */
if (strchr (html_supported, curchar ()))
@ -447,7 +569,7 @@ cm_accent_generic_html (arg, start, end, html_supported, single,
escape_html = saved_escape_html;
}
else
{
{
valid_html_accent = 0;
if (html_solo_standalone)
{ /* No special HTML support, so produce standalone char. */
@ -492,7 +614,7 @@ cm_accent_generic_no_headers (arg, start, end, single, html_solo)
buffer[0] = output_paragraph[end - 1];
buffer[1] = 0;
strcat (buffer, html_solo);
rc = cm_search_iso_map (buffer);
if (rc >= 0)
/* A little bit tricky ;-)
@ -505,12 +627,12 @@ cm_accent_generic_no_headers (arg, start, end, single, html_solo)
else
{ /* If we didn't find a translation for this character,
put the single instead. E.g., &Xuml; does not exist so X&uml;
should be produced. */
should be produced. */
warning (_("%s is an invalid ISO code, using %c"),
buffer, single);
add_char (single);
}
free (buffer);
}
}
@ -579,7 +701,7 @@ cm_accent_generic (arg, start, end, html_supported, single,
else if (no_headers)
cm_accent_generic_no_headers (arg, start, end, single, html_solo);
else if (arg == END)
{
{
if (enable_encoding)
/* use 8-bit if available */
cm_accent_generic_no_headers (arg, start, end, single, html_solo);
@ -665,9 +787,9 @@ cm_special_char (arg)
else if (strcmp (command, "ae") == 0)
add_encoded_char ("aelig", command);
else if (strcmp (command, "OE") == 0)
add_word ("&#140;", command);
add_encoded_char ("#140", command);
else if (strcmp (command, "oe") == 0)
add_word ("&#156;", command);
add_encoded_char ("#156", command);
else if (strcmp (command, "AA") == 0)
add_encoded_char ("Aring", command);
else if (strcmp (command, "aa") == 0)

View File

@ -1,7 +1,7 @@
/* lang.h -- declarations for language codes etc.
$Id: lang.h,v 1.3 2002/11/07 16:10:49 karl Exp $
$Id: lang.h,v 1.4 2003/05/01 00:05:27 karl Exp $
Copyright (C) 1999, 2001, 2002 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
@ -80,9 +80,9 @@ 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,
ISO_8859_1,
ISO_8859_2,
ISO_8859_3, /* this and none of the rest are supported. */
ISO_8859_4,
ISO_8859_5,
ISO_8859_6,
@ -118,7 +118,7 @@ typedef struct
typedef struct
{
encoding_code_type ec; /* document encoding type (see above enum) */
char *ecname; /* encoding name like ISO-8859-1 */
char *encname; /* encoding name like "ISO-8859-1", valid in Emacs */
iso_map_type *isotab; /* address of ISO translation table */
} encoding_type;

View File

@ -1,7 +1,7 @@
/* macro.c -- user-defined macros for Texinfo.
$Id: macro.c,v 1.1 2002/08/25 23:38:38 karl Exp $
$Id: macro.c,v 1.2 2003/06/01 23:41:23 karl Exp $
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 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
@ -322,7 +322,7 @@ apply (named, actuals, body)
else
{ /* Snarf parameter name, check against named parameters. */
char *param;
int param_start, which, len;
int param_start, len;
param_start = ++i;
while (body[i] && body[i] != '\\')
@ -336,29 +336,38 @@ apply (named, actuals, body)
if (body[i]) /* move past \ */
i++;
/* Now check against named parameters. */
for (which = 0; named && named[which]; which++)
if (STREQ (named[which], param))
break;
if (named && named[which])
{
text = which < length_of_actuals ? actuals[which] : NULL;
if (!text)
text = "";
len = strlen (text);
}
else
{ /* not a parameter, either it's \\ (if len==0) or an
error. In either case, restore one \ at least. */
if (len) {
warning (_("\\ in macro expansion followed by `%s' instead of \\ or parameter name"),
param);
}
if (len == 0)
{ /* \\ always means \, even if macro has no args. */
len++;
text = xmalloc (1 + len);
sprintf (text, "\\%s", param);
}
else
{
int which;
/* Check against named parameters. */
for (which = 0; named && named[which]; which++)
if (STREQ (named[which], param))
break;
if (named && named[which])
{
text = which < length_of_actuals ? actuals[which] : NULL;
if (!text)
text = "";
len = strlen (text);
text = xstrdup (text); /* so we can free it */
}
else
{ /* not a parameter, so it's an error. */
warning (_("\\ in macro expansion followed by `%s' instead of parameter name"),
param);
len++;
text = xmalloc (1 + len);
sprintf (text, "\\%s", param);
}
}
if (strlen (param) + 2 < len)
{
@ -371,8 +380,7 @@ apply (named, actuals, body)
strcpy (new_body + new_body_index, text);
new_body_index += len;
if (!named || !named[which])
free (text);
free (text);
}
}

View File

@ -1,8 +1,8 @@
/* makeinfo.h -- declarations for Makeinfo.
$Id: makeinfo.h,v 1.3 2003/01/17 17:14:34 karl Exp $
$Id: makeinfo.h,v 1.10 2003/05/12 13:12:32 karl Exp $
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 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
@ -88,15 +88,22 @@ DECLARE (int, non_top_node_seen, 0);
/* Nonzero indicates that indentation is temporarily turned off. */
DECLARE (int, no_indent, 1);
/* The amount of indentation to apply at the start of each line. */
DECLARE (int, current_indent, 0);
/* Nonzero means that we suppress the indentation of the first paragraph
following any section heading. */
DECLARE (int, do_first_par_indent, 0);
/* Amount by which @example indentation increases/decreases. */
DECLARE (int, default_indentation_increment, 5);
/* Nonzero indicates that filling a line also indents the new line. */
DECLARE (int, indented_fill, 0);
/* Nonzero means forcing output text to be flushright. */
DECLARE (int, force_flush_right, 0);
/* The amount of indentation to apply at the start of each line. */
DECLARE (int, current_indent, 0);
/* The column at which long lines are broken. */
DECLARE (int, fill_column, 72);
@ -104,9 +111,6 @@ DECLARE (int, fill_column, 72);
gets changed for cm_w (). */
DECLARE (int, non_splitting_words, 0);
/* Amount by which @example indentation increases/decreases. */
DECLARE (int, default_indentation_increment, 5);
/* Nonzero means that we are currently hacking the insides of an
insertion which would use a fixed width font. */
DECLARE (int, in_fixed_width_font, 0);
@ -114,16 +118,17 @@ DECLARE (int, in_fixed_width_font, 0);
/* Nonzero if we are currently processing a multitable command */
DECLARE (int, multitable_active, 0);
/* Nonzero means that we're generating HTML. */
/* Nonzero means that we're generating HTML. (--html) */
DECLARE (int, html, 0);
/* Nonzero means that we're generating XML. */
/* Nonzero means that we're generating XML. (--xml) */
DECLARE (int, xml, 0);
/* Nonzero means that we're generating DocBook. */
/* Nonzero means that we're generating DocBook. (--docbook) */
DECLARE (int, docbook, 0);
/* Nonzero means true 8-bit output for Info and plain text. */
/* Nonzero means true 8-bit output for Info and plain text.
(--enable-encoding) */
DECLARE (int, enable_encoding, 0);
/* Nonzero means escape characters in HTML output. */
@ -153,7 +158,7 @@ DECLARE (char *, command, NULL);
DECLARE (char *, copying_text, NULL);
/* @documentdescription ... @end documentdescription. */
DECLARE (char *, document_description, NULL);
DECLARE (const char *, document_description, NULL);
/* Nonzero if the last character inserted has the syntax class of NEWLINE. */
DECLARE (int, last_char_was_newline, 1);
@ -174,6 +179,9 @@ DECLARE (char *, include_files_path, NULL);
/* The filename of the current input file. This is never freed. */
DECLARE (char *, node_filename, NULL);
/* Name of CSS file to include, if any. (--css-include). */
DECLARE (char *, css_include, NULL);
/* Nonzero means do not output "Node: Foo" for node separations, that
is, generate plain text. (--no-headers) */
DECLARE (int, no_headers, 0);
@ -208,7 +216,8 @@ DECLARE (int, validating, 1);
/* Nonzero means print information about what is going on. (--verbose) */
DECLARE (int, verbose_mode, 0);
/* Nonzero means prefix each @chapter, ... with a number like 1. (--number-sections) */
/* Nonzero means prefix each @chapter, ... with a number like
1, 1.1, etc. (--number-sections) */
DECLARE (int, number_sections, 0);
/* Nonzero means split size. When zero, DEFAULT_SPLIT_SIZE is used. */
@ -260,9 +269,10 @@ DECLARE (int, expensive_validation, 0);
#define END_VERBATIM "end verbatim"
/* Stuff for splitting large files. */
#define SPLIT_SIZE_THRESHOLD 70000 /* What's good enough for Stallman... */
#define DEFAULT_SPLIT_SIZE 50000 /* Is probably good enough for me. */
/* Stuff for splitting large files. The numbers for Emacs
texinfo-format-buffer are much smaller, but memory capacities have
increased so much, 50k info files seem a bit tiny these days. */
#define DEFAULT_SPLIT_SIZE 300000
DECLARE (int, splitting, 1); /* Defaults to true for now. */
#define skip_whitespace() \
@ -286,4 +296,7 @@ DECLARE (int, splitting, 1); /* Defaults to true for now. */
#define looking_at(string) \
(strncmp (input_text + input_text_offset, string, strlen (string)) == 0)
/* Possibly return Local Variables trailer for Info output. */
extern char *info_trailer ();
#endif /* not MAKEINFO_H */

View File

@ -1,8 +1,8 @@
/* node.c -- nodes for Texinfo.
$Id: node.c,v 1.6 2003/01/18 17:16:17 karl Exp $
$Id: node.c,v 1.12 2003/05/01 00:30:07 karl Exp $
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
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
@ -595,7 +595,7 @@ cm_node ()
filling_enabled = indented_fill = 0;
if (!html || (html && splitting))
current_footnote_number = 1;
if (verbose_mode)
printf (_("Formatting node %s...\n"), node);
@ -609,7 +609,7 @@ cm_node ()
xml_begin_node ();
if (!docbook)
{
xml_insert_element (NODENAME, START);
xml_insert_element (NODENAME, START);
if (macro_expansion_output_stream && !executing_string)
me_execute_string (node);
else
@ -924,7 +924,7 @@ cm_node ()
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:"));
add_word_args ("%s%s<a name=\"", _("Node:"), "&nbsp;");
tem = expand_node_name (node);
add_anchor_name (tem, 0);
add_word_args ("\">%s</a>", tem);
@ -935,6 +935,7 @@ cm_node ()
tem = expansion (next, 0);
add_word (",\n");
add_word (_("Next:"));
add_word ("&nbsp;");
add_word ("<a rel=\"next\" accesskey=\"n\" href=\"");
add_anchor_name (tem, 1);
add_word_args ("\">%s</a>", tem);
@ -945,6 +946,7 @@ cm_node ()
tem = expansion (prev, 0);
add_word (",\n");
add_word (_("Previous:"));
add_word ("&nbsp;");
add_word ("<a rel=\"previous\" accesskey=\"p\" href=\"");
add_anchor_name (tem, 1);
add_word_args ("\">%s</a>", tem);
@ -955,6 +957,7 @@ cm_node ()
tem = expansion (up, 0);
add_word (",\n");
add_word (_("Up:"));
add_word ("&nbsp;");
add_word ("<a rel=\"up\" accesskey=\"u\" href=\"");
add_anchor_name (tem, 1);
add_word_args ("\">%s</a>", tem);
@ -979,7 +982,7 @@ cm_node ()
if (prev)
{
xml_insert_element (NODEPREV, START);
execute_string ("%s", prev);
execute_string ("%s", prev);
xml_insert_element (NODEPREV, END);
}
if (up)
@ -1042,6 +1045,9 @@ cm_anchor (arg)
/* Parse the anchor text. */
anchor = get_xref_token (1);
/* Force all versions of "top" to be "Top". */
normalize_node_name (anchor);
/* In HTML mode, need to actually produce some output. */
if (html)
{
@ -1292,7 +1298,7 @@ validate (tag, line, label)
/* The strings here are followed in the message by `reference to...' in
the `validate' routine. They are only used in messages, thus are
translated. */
static char *
static const char *
reftype_type_string (type)
enum reftype type;
{
@ -1598,7 +1604,7 @@ last_node_p (tags)
break;
}
}
return last;
}
@ -1628,8 +1634,8 @@ split_file (filename, size)
if (size == 0)
size = DEFAULT_SPLIT_SIZE;
if ((stat (filename, &fileinfo) != 0) ||
(((long) fileinfo.st_size) < SPLIT_SIZE_THRESHOLD))
if ((stat (filename, &fileinfo) != 0)
|| (((long) fileinfo.st_size) < size))
return;
file_size = (long) fileinfo.st_size;
@ -1656,6 +1662,10 @@ split_file (filename, size)
TAG_ENTRY *tags = tag_table;
char *indirect_info = NULL;
/* Maybe we want a Local Variables section. */
char *trailer = info_trailer ();
int trailer_len = trailer ? strlen (trailer) : 0;
/* Remember the `header' of this file. The first tag in the file is
the bottom of the header; the top of the file is the start. */
the_header = xmalloc (1 + (header_size = tags->position));
@ -1777,7 +1787,9 @@ split_file (filename, size)
|| write (fd, the_header, header_size) != header_size
|| write (fd, the_file + file_top, file_bot - file_top)
!= (file_bot - file_top)
|| (close (fd)) < 0)
|| (trailer_len
&& write (fd, trailer, trailer_len) != trailer_len)
|| close (fd) < 0)
{
perror (split_filename);
if (fd != -1)
@ -1822,7 +1834,16 @@ split_file (filename, size)
/* Inhibit newlines. */
paragraph_is_open = 0;
/* Write the indirect tag table. */
write_tag_table_indirect ();
/* preserve local variables in info output. */
if (trailer)
{
insert_string (trailer);
free (trailer);
}
fclose (output_stream);
free (the_header);
free (the_file);

View File

@ -1,7 +1,7 @@
/* sectioning.c -- for @chapter, @section, ..., @contents ...
$Id: sectioning.c,v 1.6 2002/11/08 02:21:07 karl Exp $
$Id: sectioning.c,v 1.10 2003/05/13 16:37:54 karl Exp $
Copyright (C) 1999, 2001, 2002 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
@ -52,7 +52,7 @@ section_alist_type section_alist[] = {
{ "heading", 3, ENUM_SECT_NO, TOC_NO },
{ "chapheading", 2, ENUM_SECT_NO, TOC_NO },
{ "majorheading", 2, ENUM_SECT_NO, TOC_NO },
{ "top", 1, ENUM_SECT_NO, TOC_YES },
{ NULL, 0, 0, 0 }
};
@ -151,7 +151,7 @@ search_sectioning (text)
/* ignore the optional command prefix */
if (text[0] == COMMAND_PREFIX)
text++;
for (i = 0; (t = section_alist[i].name); i++)
{
if (strcmp (t, text) == 0)
@ -161,7 +161,7 @@ search_sectioning (text)
}
return -1;
}
/* Return an integer which identifies the type section present in TEXT. */
int
what_section (text)
@ -215,6 +215,11 @@ void
sectioning_underscore (cmd)
char *cmd;
{
/* If we're not indenting the first paragraph, we shall make it behave
like @noindent is called directly after the section heading. */
if (! do_first_par_indent)
cm_noindent ();
if (xml)
{
char *temp;
@ -231,7 +236,7 @@ sectioning_underscore (cmd)
the section and put an Index instead */
flush_output ();
xml_last_section_output_position = output_paragraph_offset;
xml_insert_element (xml_element (cmd), START);
xml_insert_element (TITLE, START);
xml_open_section (level, cmd);
@ -239,8 +244,8 @@ sectioning_underscore (cmd)
execute_string ("%s\n", temp);
free (temp);
xml_insert_element (TITLE, END);
}
else
}
else
{
char character;
char *temp;
@ -300,7 +305,7 @@ handle_enum_increment (level, index)
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
@ -312,7 +317,7 @@ handle_enum_increment (level, index)
/* 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));
@ -397,6 +402,7 @@ insert_and_underscore (level, with_char, cmd)
/* Insert the text following input_text_offset up to the end of the
line as an HTML heading element of the appropriate `level' and
tagged as an anchor for the current node.. */
void
sectioning_html (level, cmd)
int level;
@ -413,8 +419,10 @@ sectioning_html (level, cmd)
old_no_indent = no_indent;
no_indent = 1;
/* level 0 (chapter) is <h2> */
add_word_args ("<h%d class=\"%s\">", level + 2, cmd);
/* level 0 (chapter) is <h2>, everything else is <h3>. We don't want
to go lower than that because browsers then start rendering the
headings smaller than the text. */
add_word_args ("<h%d class=\"%s\">", MIN (3, level + 2), cmd);
/* If we are outside of any node, produce an anchor that
the TOC could refer to. */
@ -429,7 +437,7 @@ sectioning_html (level, cmd)
/* 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.
Also, the anchor close must be output before the section name
in case the name itself contains an anchor. */
add_word ("</a>");
@ -535,7 +543,6 @@ cm_top ()
}
else
{
TAG_ENTRY *top_node = find_node ("Top");
top_node_seen = 1;
/* It is an error to use @top before using @node. */

View File

@ -1,7 +1,7 @@
/* xml.c -- xml output.
$Id: xml.c,v 1.18 2002/12/17 16:34:22 karl Exp $
$Id: xml.c,v 1.19 2003/05/13 16:37:54 karl Exp $
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 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
@ -316,7 +316,7 @@ element docbook_element_list [] = {
{ "comment", 0, 0 },
{ "function", 0, 1 },
{ "legalnotice", 1, 0 },
{ "para", 0, 0 } /* Must be last */
/* name / contains para / contained in para */
};
@ -600,7 +600,7 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist)
if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
return;
if (!xml_element_list[elt].name || !strlen (xml_element_list[elt].name))
{
/*printf ("Warning: Inserting empty element %d\n", elt);*/
@ -634,7 +634,7 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist)
if (arg == START && !xml_in_para && !xml_element_list[elt].contained_in_para)
xml_indent ();
if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
&& arg == START && elt != TABLEITEM && elt != TABLETERM
&& !in_indexterm && xml_current_element() == TABLE)
{
@ -879,8 +879,8 @@ xml_add_char (character)
return;
if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
return;
if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
&& !cr_or_whitespace (character) && !in_indexterm)
{
in_table_title = 1;
@ -1229,6 +1229,7 @@ xml_asterisk ()
to have real multilivel indexing support, not just string analysis. */
#define INDEX_SEP "@this string will never appear@" /* was , */
void
xml_insert_indexterm (indexterm, index)
char *indexterm;
char *index;

View File

@ -1,5 +1,5 @@
/* texindex -- sort TeX index dribble output into an actual index.
$Id: texindex.c,v 1.7 2003/01/19 18:47:15 karl Exp $
$Id: texindex.c,v 1.9 2003/05/19 13:10:59 karl Exp $
Copyright (C) 1987, 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003 Free Software Foundation, Inc.
@ -166,7 +166,7 @@ main (argc, argv)
/* In case we write to a redirected stdout that fails. */
/* not ready atexit (close_stdout); */
/* Describe the kind of sorting to do. */
/* The first keyfield uses the first braced field and folds case. */
keyfields[0].braced = 1;
@ -218,9 +218,7 @@ main (argc, argv)
outfile = outfiles[i];
if (!outfile)
{
outfile = concat (infiles[i], "s", "");
}
outfile = concat (infiles[i], "s");
need_initials = 0;
first_initial = '\0';
@ -234,7 +232,6 @@ main (argc, argv)
flush_tempfiles (tempcount);
xexit (0);
return 0; /* Avoid bogus warnings. */
}
@ -322,7 +319,7 @@ decode_command (argc, argv)
if (tempdir == NULL)
tempdir = DEFAULT_TMPDIR;
else
tempdir = concat (tempdir, "/", "");
tempdir = concat (tempdir, "/");
keep_tempfiles = 0;
@ -401,18 +398,15 @@ maketempname (count)
if (!tempbase)
{
int fd;
char *tmpdir = getenv ("TEMPDIR");
if (!tmpdir)
tmpdir = "/tmp";
tempbase = concat (tmpdir, "/txidxXXXXXX");
tempbase = concat (tempdir, "txidxXXXXXX");
fd = mkstemp (tempbase);
if (fd == -1)
if (fd == -1)
pfatal_with_name (tempbase);
}
sprintf (tempsuffix, ".%d", count);
return concat (tempdir, tempbase, tempsuffix);
return concat (tempbase, tempsuffix);
}
@ -1140,7 +1134,7 @@ parsefile (filename, nextline, data, size)
}
else
first_initial = toupper (*p);
while (*p && *p != '\n')
p++;
if (p != end)
@ -1653,39 +1647,31 @@ void
perror_with_name (name)
char *name;
{
char *s;
s = strerror (errno);
printf ("%s: ", program_name);
printf ("%s; for file `%s'.\n", s, name);
fprintf (stderr, "%s: ", program_name);
perror (name);
}
void
pfatal_with_name (name)
char *name;
{
char *s;
s = strerror (errno);
printf ("%s: ", program_name);
printf (_("%s; for file `%s'.\n"), s, name);
perror_with_name (name);
xexit (1);
}
/* Return a newly-allocated string whose contents concatenate those of
S1, S2, S3. */
/* Return a newly-allocated string concatenating S1 and S2. */
char *
concat (s1, s2, s3)
char *s1, *s2, *s3;
concat (s1, s2)
char *s1, *s2;
{
int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
int len1 = strlen (s1), len2 = strlen (s2);
char *result = (char *) xmalloc (len1 + len2 + 1);
strcpy (result, s1);
strcpy (result + len1, s2);
strcpy (result + len1 + len2, s3);
*(result + len1 + len2 + len3) = 0;
*(result + len1 + len2) = 0;
return result;
}