summaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/texinfo/ABOUT-NLS73
-rw-r--r--gnu/usr.bin/texinfo/AUTHORS2
-rw-r--r--gnu/usr.bin/texinfo/ChangeLog3211
-rw-r--r--gnu/usr.bin/texinfo/INTRODUCTION21
-rw-r--r--gnu/usr.bin/texinfo/NEWS120
-rw-r--r--gnu/usr.bin/texinfo/README104
-rw-r--r--gnu/usr.bin/texinfo/TODO34
-rw-r--r--gnu/usr.bin/texinfo/acinclude.m490
-rw-r--r--gnu/usr.bin/texinfo/aclocal.m4210
-rw-r--r--gnu/usr.bin/texinfo/config.in278
-rw-r--r--gnu/usr.bin/texinfo/djgpp/README422
-rw-r--r--gnu/usr.bin/texinfo/djgpp/config.bat88
-rw-r--r--gnu/usr.bin/texinfo/djgpp/config.sed26
-rw-r--r--gnu/usr.bin/texinfo/djgpp/config.site25
-rw-r--r--gnu/usr.bin/texinfo/doc/README26
-rw-r--r--gnu/usr.bin/texinfo/doc/epsf.tex54
-rw-r--r--gnu/usr.bin/texinfo/doc/help2man401
-rw-r--r--gnu/usr.bin/texinfo/doc/info.180
-rw-r--r--gnu/usr.bin/texinfo/doc/info.562
-rw-r--r--gnu/usr.bin/texinfo/doc/install-info.184
-rw-r--r--gnu/usr.bin/texinfo/doc/makeinfo.1152
-rw-r--r--gnu/usr.bin/texinfo/doc/mdate-sh92
-rw-r--r--gnu/usr.bin/texinfo/doc/stamp-vti3
-rw-r--r--gnu/usr.bin/texinfo/doc/stamp-vti.13
-rw-r--r--gnu/usr.bin/texinfo/doc/texi2dvi.184
-rw-r--r--gnu/usr.bin/texinfo/doc/texindex.147
-rw-r--r--gnu/usr.bin/texinfo/doc/texinfo.551
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-cs.tex72
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-de.tex83
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-en.tex71
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-es.tex60
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-nl.tex70
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-no.tex72
-rw-r--r--gnu/usr.bin/texinfo/doc/txi-pt.tex73
-rw-r--r--gnu/usr.bin/texinfo/doc/version.texi3
-rw-r--r--gnu/usr.bin/texinfo/info/README5
-rw-r--r--gnu/usr.bin/texinfo/info/dribble.c10
-rw-r--r--gnu/usr.bin/texinfo/info/info-utils.c66
-rw-r--r--gnu/usr.bin/texinfo/info/nodes.c452
-rw-r--r--gnu/usr.bin/texinfo/info/pcterm.c747
-rw-r--r--gnu/usr.bin/texinfo/info/search.c12
-rw-r--r--gnu/usr.bin/texinfo/info/session.h19
-rw-r--r--gnu/usr.bin/texinfo/info/signals.c84
-rw-r--r--gnu/usr.bin/texinfo/install-sh4
-rw-r--r--gnu/usr.bin/texinfo/intl/ChangeLog64
-rw-r--r--gnu/usr.bin/texinfo/intl/Makefile.in12
-rw-r--r--gnu/usr.bin/texinfo/intl/VERSION2
-rw-r--r--gnu/usr.bin/texinfo/intl/bindtextdom.c8
-rw-r--r--gnu/usr.bin/texinfo/intl/dcgettext.c43
-rw-r--r--gnu/usr.bin/texinfo/intl/dgettext.c32
-rw-r--r--gnu/usr.bin/texinfo/intl/explodename.c13
-rw-r--r--gnu/usr.bin/texinfo/intl/finddomain.c35
-rw-r--r--gnu/usr.bin/texinfo/intl/gettext.c2
-rw-r--r--gnu/usr.bin/texinfo/intl/gettextP.h22
-rw-r--r--gnu/usr.bin/texinfo/intl/hash-string.h4
-rw-r--r--gnu/usr.bin/texinfo/intl/l10nflist.c8
-rw-r--r--gnu/usr.bin/texinfo/intl/loadinfo.h20
-rw-r--r--gnu/usr.bin/texinfo/intl/loadmsgcat.c43
-rw-r--r--gnu/usr.bin/texinfo/intl/localealias.c140
-rw-r--r--gnu/usr.bin/texinfo/intl/textdomain.c8
-rw-r--r--gnu/usr.bin/texinfo/lib/getopt.c82
-rw-r--r--gnu/usr.bin/texinfo/lib/getopt.h2
-rw-r--r--gnu/usr.bin/texinfo/lib/getopt1.c9
-rw-r--r--gnu/usr.bin/texinfo/lib/strcasecmp.c49
-rw-r--r--gnu/usr.bin/texinfo/lib/strncasecmp.c48
-rw-r--r--gnu/usr.bin/texinfo/lib/substring.c37
-rw-r--r--gnu/usr.bin/texinfo/lib/xexit.c86
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/README4
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/cmds.c1121
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/cmds.h50
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/defun.c663
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/defun.h31
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/files.c529
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/files.h45
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/footnote.c359
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/footnote.h37
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/html.c182
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/html.h44
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/index.c823
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/index.h36
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/insertion.c1368
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/insertion.h61
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/lang.c415
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/lang.h86
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/macro.c1114
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/macro.h71
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/node.c1568
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/node.h111
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/sectioning.c691
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/sectioning.h80
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/Makefile.am18
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/Makefile.in223
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/cond32
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/cond.txi40
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-extrali13
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-extrali.txi11
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-manuals12
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-min8
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-min.txi12
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-para8
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-para.txi24
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-title13
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/html-title.txi12
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace71
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace.txi18
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/no-headers8
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-expand11
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-expand.txi64
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-value11
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-value.txi15
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace11
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace.txi30
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/top10
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/top.txi25
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/top211
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/tests/top2.txi7
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/toc.c476
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/toc.h49
-rw-r--r--gnu/usr.bin/texinfo/missing78
-rw-r--r--gnu/usr.bin/texinfo/po/POTFILES.in14
-rw-r--r--gnu/usr.bin/texinfo/po/cs.gmobin0 -> 24556 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/cs.po2655
-rw-r--r--gnu/usr.bin/texinfo/po/de.gmobin42427 -> 51816 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/de.po2371
-rw-r--r--gnu/usr.bin/texinfo/po/de_AT.gmobin0 -> 389 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/de_AT.po2314
-rw-r--r--gnu/usr.bin/texinfo/po/eo.gmobin0 -> 43170 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/eo.po2552
-rw-r--r--gnu/usr.bin/texinfo/po/nl.gmobin0 -> 27158 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/nl.po2693
-rw-r--r--gnu/usr.bin/texinfo/po/no.gmobin0 -> 52646 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/no.po2527
-rw-r--r--gnu/usr.bin/texinfo/po/ru.gmobin0 -> 43328 bytes
-rw-r--r--gnu/usr.bin/texinfo/po/ru.po2589
-rw-r--r--gnu/usr.bin/texinfo/po/texinfo.pot1689
-rw-r--r--gnu/usr.bin/texinfo/util/README6
-rw-r--r--gnu/usr.bin/texinfo/util/deref.c317
-rw-r--r--gnu/usr.bin/texinfo/util/fix-info-dir317
-rw-r--r--gnu/usr.bin/texinfo/util/fixref.gawk145
-rw-r--r--gnu/usr.bin/texinfo/util/outline.gawk145
-rw-r--r--gnu/usr.bin/texinfo/util/prepinfo.awk356
-rw-r--r--gnu/usr.bin/texinfo/util/texi-docstring-magic.el347
142 files changed, 38057 insertions, 2305 deletions
diff --git a/gnu/usr.bin/texinfo/ABOUT-NLS b/gnu/usr.bin/texinfo/ABOUT-NLS
index dacb8b18bed..28d38c76fd6 100644
--- a/gnu/usr.bin/texinfo/ABOUT-NLS
+++ b/gnu/usr.bin/texinfo/ABOUT-NLS
@@ -137,7 +137,8 @@ Each translation team has its own mailing list, courtesy of Linux
International. You may reach your translation team at the address
`LL@li.org', replacing LL by the two-letter ISO 639 code for your
language. Language codes are *not* the same as the country codes given
-in ISO 3166. The following translation teams exist, as of August 1997:
+in ISO 3166. The following translation teams exist, as of December
+1997:
Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
@@ -172,42 +173,42 @@ Available Packages
==================
Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of August
+matrix shows the current state of internationalization, as of December
1997. The matrix shows, in regard of each package, for which languages
PO files have been submitted to translation coordination.
- Ready PO files cs da de en es fi fr it ja ko nl no pl pt sl sv
- .-------------------------------------------------.
- bash | [] [] [] | 3
- bison | [] [] [] | 3
- clisp | [] [] [] [] | 4
- cpio | [] [] [] [] [] | 5
- diffutils | [] [] [] [] [] | 5
- enscript | [] [] [] [] [] [] | 6
- fileutils | [] [] [] [] [] [] [] [] [] [] | 10
- findutils | [] [] [] [] [] [] [] [] | 8
- flex | [] [] [] [] | 4
- gcal | [] [] [] [] [] | 5
- gettext | [] [] [] [] [] [] [] [] [] [] | 11
- grep | [] [] [] [] [] [] [] [] [] | 9
- hello | [] [] [] [] [] [] [] [] [] [] | 10
- id-utils | [] [] [] | 3
- indent | [] [] [] [] | 4
- libc | [] [] [] [] [] [] [] | 7
- m4 | [] [] [] [] [] | 5
- make | [] [] [] [] [] [] | 6
- music | [] [] | 2
- ptx | [] [] [] [] [] [] [] [] | 8
- recode | [] [] [] [] [] [] [] [] [] | 9
- sh-utils | [] [] [] [] [] [] [] | 7
- sharutils | [] [] [] [] [] | 5
- tar | [] [] [] [] [] [] [] [] [] [] | 10
- texinfo | [] | 1
- textutils | [] [] [] [] [] [] [] [] [] | 9
- wdiff | [] [] [] [] [] [] [] [] | 8
- `-------------------------------------------------'
- 16 languages cs da de en es fi fr it ja ko nl no pl pt sl sv
- 27 packages 3 2 24 1 17 1 26 2 1 11 20 9 19 7 7 17 167
+ Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
+ .----------------------------------------------------.
+ bash | [] [] [] | 3
+ bison | [] [] [] | 3
+ clisp | [] [] [] [] | 4
+ cpio | [] [] [] [] [] [] | 6
+ diffutils | [] [] [] [] [] | 5
+ enscript | [] [] [] [] [] [] | 6
+ fileutils | [] [] [] [] [] [] [] [] [] [] | 10
+ findutils | [] [] [] [] [] [] [] [] [] | 9
+ flex | [] [] [] [] | 4
+ gcal | [] [] [] [] [] | 5
+ gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
+ grep | [] [] [] [] [] [] [] [] [] [] | 10
+ hello | [] [] [] [] [] [] [] [] [] [] [] | 11
+ id-utils | [] [] [] | 3
+ indent | [] [] [] [] [] | 5
+ libc | [] [] [] [] [] [] [] | 7
+ m4 | [] [] [] [] [] [] | 6
+ make | [] [] [] [] [] [] | 6
+ music | [] [] | 2
+ ptx | [] [] [] [] [] [] [] [] | 8
+ recode | [] [] [] [] [] [] [] [] [] | 9
+ sh-utils | [] [] [] [] [] [] [] [] | 8
+ sharutils | [] [] [] [] [] [] | 6
+ tar | [] [] [] [] [] [] [] [] [] [] [] | 11
+ texinfo | [] [] [] | 3
+ textutils | [] [] [] [] [] [] [] [] [] | 9
+ wdiff | [] [] [] [] [] [] [] [] | 8
+ `----------------------------------------------------'
+ 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
+ 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
@@ -220,6 +221,6 @@ distributed as such by its maintainer. There might be an observable
lag between the mere existence a PO file and its wide availability in a
distribution.
- If August 1997 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites.
+ If December 1997 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites.
diff --git a/gnu/usr.bin/texinfo/AUTHORS b/gnu/usr.bin/texinfo/AUTHORS
index 647ea29772d..ead862aba0c 100644
--- a/gnu/usr.bin/texinfo/AUTHORS
+++ b/gnu/usr.bin/texinfo/AUTHORS
@@ -1,3 +1,3 @@
Richard Stallman, Brian Fox, Bob Chassell, Noah Friedman, Paul Rubin,
-Karl Berry, and no doubt many others.
+Karl Berry, Eli Zaretskii, and many others.
diff --git a/gnu/usr.bin/texinfo/ChangeLog b/gnu/usr.bin/texinfo/ChangeLog
index 8e3fb78ebe7..126d1fca463 100644
--- a/gnu/usr.bin/texinfo/ChangeLog
+++ b/gnu/usr.bin/texinfo/ChangeLog
@@ -1,9 +1,3182 @@
+1999-09-28 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: New isbn.
+
+ * configure.in,
+ util/texi2dvi: version 4.0.
+
+1999-09-24 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Fixes from Oleg.
+
+1999-09-20 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.c: Don't write region at an anchor.
+ From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+
+ * info/terminal.c: Only set dumb terminal if tgetent returns < 0,
+ not 0.
+ For HP-UP 11.
+ From jeff.hull@state.co.us.
+
+ * makeinfo/footnote.c: Don't translate the `Footnotes' string
+ according to LANG, it should be according to
+ @documentlanguage, which isn't implemented yet.
+ From: Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * doc/texinfo.txi: @end direntry from kama.
+
+1999-09-19 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: \ninett is now \smalltt.
+
+ * doc/texinfo.txi: arnold changes
+
+ 1999-09-03 Akim Demaille <akim@epita.fr>
+ * texi2dvi (getopt): batch has to be assigned `eval', not `echo'.
+ (bibtex): Launch BibTeX also when the LOG file complains that
+ there are no BBL file.
+
+ * doc/texinfo.txi: Document that @anchor ignores spaces.
+
+ * makeinfo/cmds.c (cm_shyph): remove, &shy; is not supported in
+ browsers.
+ From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+
+ * makeinfo/makeinfo.c: Don't crash if current_indent = 0.
+ From: Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/makeinfo.c: Avoid blank lines between @menu entries.
+ * configure.in: 3.12t
+
+ 1999-08-31 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/info.c (info_short_help): Document --apropos.
+
+1999-09-18 Karl Berry <karl@gnu.org>
+
+ * makeinfo/html.c (html_output_head): use text for <title>, not
+ html markup. From François.
+ * makeinfo/makeinfo.c (text_expansion): new routine.
+ * makeinfo/cmds.c (cm_settitle): don't expand the title here,
+ we'll do it later.
+
+ * makeinfo/makeinfo.h (text_expansion): declare.
+
+ * info/indices.c,
+ * info/infodoc.c,
+ * info/session.c,
+ * info/footnotes.c: translate errors.
+ * info/info.h: Use `' instead of "" in errors.
+
+1999-09-06 Karl Berry <karl@gnu.org>
+
+ +1999-08-24 Jan Nieuwenhuizen <janneke@gnu.org>
+ * makeinfo/node.c:cm_node: don't compare current_node when null.
+
+ 1999-08-23 W. L. Estes <will@fumblers.org>
+ * makeinfo/node.c (cm_node): write <a name=> tags even
+ ifusing --no-headers
+
+ * configure.in: ospeedlib -> trylib
+ From: Andreas Schwab <schwab@suse.de>
+
+ * makeinfo/makeinfo.c (read_command): add explicit 0 to return if
+ enclosure command. From: Andreas Jaeger <aj@arthur.rhein-neckar.de>.
+
+1999-08-19 Karl Berry <karl@gnu.org>
+
+ * configure.in: add missing quotes, logic in new termcap library
+ check.
+
+1999-08-17 Karl Berry <karl@gnu.org>
+
+ * makeinfo/multi.c,
+ * makeinfo/sectioning.c,
+ * makeinfo/node.c,
+ * makeinfo/macro.c: omit unused vars
+ * info/session.c (info_goto_invocation_node): omit unused decl.
+
+ * configure.in: Check for extra termlib variable necessary on
+ HP-UX 9.
+ From: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+
+ 1999-08-16 Andreas Schwab <schwab@suse.de>
+ * info/terminal.c (terminal_initialize_terminal): Try tcgetattr
+ and cfgetospeed in preference to TIOCGETP.
+ (original_tchars, original_ltchars): Define them only if needed.
+
+1999-08-16 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c (create_internal_info_help_node): rename arg.
+ (info_find_or_create_help_window): avoid deref of null eligible.
+
+ * info/terminal.c (TIOCGETP, TIOCGETC, TIOCGLTC) [alpha && linux]:
+ #undef. Useless stubs are present.
+
+1999-08-15 Karl Berry <karl@gnu.org>
+
+ * info/nodes.c: Remove reference to nonexistent RFC for Info
+ files.
+
+1999-08-11 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/nodes.c (info_find_file_internal): If the file's contents
+ were gc'ed since last time it was loaded, reload the file.
+
+Wed Aug 11 06:42:47 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am (EXTRA_DIST): add txi-pt.tex from Lalo.
+
+Mon Aug 9 16:28:18 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Support preloaded texinfo.tex, from Stephen.
+
+ * makeinfo/makeinfo.c (add_char): restore ugly check for first
+ character being <.
+
+ * makeinfo/cmds.c (cm_kbd): Increment in_fixed_width_font for
+ html.
+
+ * doc/texinfo.txi: effect not affect
+
+ * makeinfo/makeinfo.c: Rearrange help.
+
+ * makeinfo/toc.c: Cast %* arguments to (int) to placate gcc
+ -Wformat.
+
+Fri Aug 6 13:03:14 1999 Karl Berry <karl@gnu.org>
+
+ * util/install-info.c: Hardwire the File: dir, Node: top part of
+ the skeleton dir file.
+ Report from: Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+ * info/Makefile.am (BUILT_SOURCES): rm -f $(BUILT_SOURCES), a
+ kludge.
+
+ 1999-07-28 Karl Eichwalder <ke@gnu.franken.de>
+
+ * makeinfo/makeinfo.c: Fix help string (-o).
+
+ 1999-07-30 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_uref, cm_email): Don't collapse -- and
+ `` in the URL part of the reference.
+
+ 1999-08-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (main): For entries given on command line,
+ set entry_sections and entry_sections_tail members to NULL, and
+ set text_len member to the entry length. After processing the
+ Info file, update the entry_sections pointers of all entries that
+ came from the command line.
+
+ * util/texindex.c (sort_offline, sort_in_core): use off_t rather
+ than long.
+ Found on FreedBSD 2.2.8 by "Trond Endrestol" <endrestol@hotmail.com>.
+
+Mon Jul 19 17:16:46 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: 3.12n
+
+ * makeinfo/makeinfo.c (add_char): Don't insert <p> if we're in
+ @html.
+
+ * makeinfo/html.c (add_escaped_anchor_name),
+ * makeinfo/toc.c (toc_add_entry): use URL_SAFE_CHAR.
+ * makeinfo/makeinfo.h (HTML_SAFE, URL_SAFE_CHAR): new macros.
+
+Sun Jul 18 14:47:40 1999 Karl Berry <karl@gnu.org>
+
+ * dir-example: Add bzip2.
+
+ * configure.in: 3.12m.
+
+ * doc/texinfo.txi (@afourlatex,@afourwide): add to command list.
+
+1999-07-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't collapse `` and -- while
+ expanding node names. Generate a terminating period for
+ @pxref, when it has more than a single argument.
+
+ * makeinfo/index.c (cm_printindex): Don't collapse `` and -- while
+ expanding node names.
+
+Sat Jul 17 16:33:45 1999 Karl Berry <karl@gnu.org>
+
+ * 3.12l.
+
+ * doc/texinfo.txi: @alias, @definfoenclose, etc.
+
+ * util/texindex.c (indexify): error message instead of abort(2)
+ when no page number.
+
+Fri Jul 16 18:00:26 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Overfull boxes, help2man, etc.
+
+ * util/Makefile.am (EXTRA_DIST): texi-outline.gawk is really
+ outline.gawk, add fixref.gawk and prepinfo.awk and
+ texi-docstring-magic.el.
+
+Thu Jul 15 18:57:54 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: .fmt, etc.
+ * doc/texinfo.txi: More macro docs, etc.
+
+Wed Jul 14 19:58:47 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Give good quote.
+
+ * util/Makefile.am (EXTRA_DIST): add texi-outline.gawk.
+
+ From: kama@hippo.fido.de (Karl Heinz Marbaise)
+ * makeinfo/toc.c (contents_update_html): go back to start level.
+ * doc/texinfo.txi: deftypeop
+
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
+ * makeinfo/toc.c (toc_add_entry): don't assume sprintf return type
+ is int.
+ * makeinfo/sectioning.c (insert_and_underscore): declare more
+ unsigned char *.
+ * makeinfo/macro.h (itext_info, itext_size): remove declarations,
+ they're defined static.
+ * makeinfo/makeinfo.c: Split up help string even more.
+
+Tue Jul 13 17:16:18 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document @rmacro.
+ * makeinfo/macro.c (cm_rmacro): new command to do @allow-recursion
+ by default.
+ (define_macro): split off from cm_macro.
+
+ * makeinfo/macro.h (cm_rmacro): declare.
+ * makeinfo/macro.h (delete_macro): do not need to export.
+ * makeinfo/cmds.c (rmacro): new command.
+
+ * makeinfo/html.c,
+ * makeinfo/toc.c,
+ * makeinfo/lang.c,
+ * makeinfo/makeinfo.c: Use strchr instead of member.
+
+Mon Jul 12 08:01:19 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: document this.
+ * makeinfo/macro.c (apply): warn if \ in macro body is not
+ followed by a parameter name or \, instead of silently
+ accepting it, for compatibility with TeX.
+
+ * makeinfo/macro.c: Doc fix.
+
+Sun Jul 11 12:49:50 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/macro.c (cm_macro): do @quote-arg implicitly if single
+ argument to macro.
+ * doc/texinfo.txi: Document this.
+
+ * doc/texinfo.txi (Smallcaps): Document makeinfo warning if arg is
+ all uppercase.
+ * makeinfo/cmds.c (cm_sc): warn if arg is all upper (suggested by
+ Jim Meyering).
+
+ * makeinfo/cmds.c (cm_var): warn if argument contains any of ,[]()
+ which are unlikely to be allowable in real variable names.
+ Suggested by rms.
+
+ * makeinfo/makeinfo.h (member): remove weird masking macro.
+
+ * doc/texinfo.txi: Probably ok to indent @example.
+
+ * configure.in: 3.12k.
+
+ * makeinfo/html.c (add_escaped_anchor_name): Cast to unsigned char
+ for 8-bit chars. From Yoshiki.
+
+ * makeinfo/makeinfo.c: complain -> warn for sake of <80 chars.
+
+1999-07-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/multi.c (multitable_item): Quote the value of align=
+ property.
+
+ * makeinfo/defun.c (defun_internal): Ditto.
+
+ * makeinfo/cmds.c (cm_center): Ditto.
+
+ * makeinfo/toc.c (toc_add_entry): New argument ANCHOR; all callers
+ changed. In HTML mode, expand NODE_NAME, or use ANCHOR, if
+ non-NULL, and save it together with the TOC name in the name
+ member of the TOC entry.
+ (toc_add_entry, toc_find_section_of_node): Add a warning in a
+ comment that the NODE argument must be unexpanded.
+ (contents_update_html): Terminate the TOC entry with </a>.
+
+ * makeinfo/sectioning.c (sectioning_html): If the sectioning
+ command is outside any node, generate explicit anchor and pass it
+ to toc_add_entry.
+
+ * makeinfo/node.c (expand_node_name): Now external instead of
+ static.
+ (cm_node): Output expanded node name in the navigation bar.
+
+ * makeinfo/node.h: Declare expand_node_name.
+
+ * makeinfo/index.c (cm_printindex): Produce valid HTML links, even
+ if index->node is NULL or empty. Fix format of index under
+ --no-headers.
+
+Fri Jul 9 18:09:28 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Pair @end html properly. From Olaf B.
+
+ * doc/Makefile.am (EXTRA_DIST): add txi-nl.tex from Marcel van der Boom
+ <marcel@virtualprojects.org>.
+
+ * doc/txi-en.tex: Doc fix.
+
+Wed Jul 7 16:07:44 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am: Doc fix.
+
+ * configure.in (txi_CHECK_DECLS): call this new macro (in
+ acinclude.m4).
+ * acinclude.m4: new file.
+
+Tue Jul 6 19:12:37 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.h,
+ * makeinfo/insertion.c,
+ * makeinfo/cmds.c,
+ * makeinfo/defun.c: new command @deftypeop.
+ Suggestion from: booth@us.ibm.com.
+
+1999-07-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_value): Don't convert quotes and dashes
+ in the argument of @value, since @set doesn't.
+
+Mon Jul 5 16:43:23 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (get_item_function): return "@ " rather
+ than "@". (command_needs_braces): new fn.
+ (cm_item): handle @itemize markers that don't take braces.
+ Bug reported by Stephen, prototype fix from Yoshiki.
+
+ * doc/texinfo.txi (Contents): @contents ignored at beginning when
+ outputting to stdout.
+ Installed this.
+>1999-05-02 Eli Zaretskii <eliz@is.elta.co.il>
+> * makeinfo/toc.c (cm_contents, cm_shortcontents): If writing to
+> stdout, output the contents and short contents immediately, and
+> assign NULL to contents_filename and shortcontents_filename, so
+> that toc_update won't try to rewrite stdout.
+
+
+ * makeinfo/sectioning.c (sectioning_html): declare starting_pos
+ and ending_pos as unsigned char * since they're based on
+ output_paragraph.
+
+ * makeinfo/insertion.c: Cast output_paragraph to char * for sake
+ of strncmp prototype (on IRIX 4).
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
+
+
+ * info/man.c (get_manpage_contents): restore previous (default)
+ SIGCHLD handler so the pclose when gunzipping info files
+ doesn't fail with `No child processes' (because
+ reap_children reaped it).
+ From: Josip Rodin <jrodin@public.srce.hr>
+ njs@uclink4.berkeley.edu, 38063-forwarded@bugs.debian.org
+
+Fri Jul 2 14:26:22 1999 Karl Berry <karl@gnu.org>
+
+ From gildea:
+ * info/terminal.c (TIOCGETC) [M_XENIX && TIOCGETC]: #undef.
+ * info/session.c (strncasecmp) [M_XENIX]: declare.
+
+Thu Jul 1 19:25:12 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_value): erroneous capitalization in
+ error message.
+
+ * makeinfo/insertion.c (end_insertion): @end html should turn html
+ escaping back on. From esr.
+
+ * makeinfo/makeinfo.c (cm_pxref): No period needed to terminate
+ cross-reference.
+
+Sun Jun 13 16:12:41 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Remove some more node links.
+
+Sat May 1 16:01:36 1999 Karl Berry <karl@gnu.org>
+
+ * info/info.c: Single space for option indent to match others.
+
+ * makeinfo/makeinfo.c,
+ * util/texindex.c,
+ * util/install-info.c: Must indent option list for help2man.
+
+ * info/infodoc.c [HELP_NODE_GETS_REGENERATED]: set to true.
+ (info_internal_help_text): put moving cmds first so they know how to go
+ forward in the help window.
+ (create_internal_info_help_node): can't always quit help with C-x 0.
+ (info_find_or_create_help_window): pass !one_window_p.
+
+1999-04-29 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't collapse --- to -- etc.,
+ in references.
+
+Mon Apr 26 16:41:55 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.c (validate): arrange to translate the reference type.
+ Report from Sergio.
+
+ * makeinfo/makeinfo.c (validate): should not be declared here.
+
+ * makeinfo/index.c (cm_printindex): <ul compact> is not
+ translatable. From Yoshiki.
+
+ * doc/Makefile.am (EXTRA_DIST): include new txi-es.tex from Adrian
+ Perez Jorge <alu1415@csi.ull.es>. And new txi-en.tex.
+
+Sun Apr 25 16:08:27 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_settitle): don't output html head here.
+
+ * makeinfo/makeinfo.c: Move html routines to html.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
+ * makeinfo/html.[ch]: new files.
+
+ * makeinfo/makeinfo.c: Restore -- in --output line. From Sergio.
+
+1999-04-23 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/cmds.c (cm_center): Recover the previous state when
+ called with --html.
+
+1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_bye): Flush the output, in case some command
+ produced it immediately before @bye.
+
+ * makeinfo/toc.h (TOC_ENTRY_ELT): New member: containing_node.
+
+ * makeinfo/toc.c (lots_of_stars): New variable.
+ (toc_add_entry): Add a new parameter node_name; all callers
+ changed. Record the name of the node containing the section.
+ (toc_find_section_of_node): New function.
+ (toc_free): Free the new containing_node member.
+ (contents_update_info, shortcontents_update_info): Underline the
+ title with stars. Output two empty lines after the TOC.
+ (contents_update): Fix off-by-one error in writing the rest of the
+ file after updating the TOC.
+
+ * makeinfo/index.c (cm_printindex): Save and restore line_number
+ and input_filename. Don't output the "* Menu" header when
+ --no-headers is in effect. Make the fake node name for index
+ entries that are outside any node be more explanatory, and emit an
+ error for such index entries. Under --no-headers, output a
+ reference to the section name, as returned by a call to
+ toc_find_section_of_node, instead of a node name.
+
+1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/index.c (struct index_elt): Add a new member
+ entry_text.
+ (free_index, make_index_entries_unique): Free the entry_text
+ member.
+ (index_add_arg): Don't HTML-escape the index entry here.
+ (index_add_arg): Initialize the entry member to NULL. Put the
+ entry text into the entry_text member.
+ (sort_index): Expand the index entries as if in non-HTML mode.
+ Put the expansion into the entry member of struct index_elt.
+ (cm_printindex): Allocate the line[] array in Info mode only.
+ In HTML mode, escape and expand the original index entry text,
+ don't use the results of expansion inside sort_index.
+
+ * makeinfo/cmds.c (cm_r): Undo the effect of @code while printing
+ one of the "code"-style indices in HTML mode.
+
+1999-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind DEL in echo
+ area to ea_rubout, except for __MSDOS__.
+
+ * doc/info-stnd.texi (Node Commands): Document that `I' only
+ produces its effect for programs documented in the current Info
+ file. Tell them to invoke `I' from DIR if it doesn't work from
+ current place.
+
+Thu Apr 22 09:59:02 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c,
+ * info/info.c: Rewrite help string a little more.
+
+ * doc/info-stnd.texi: Change chapter name to match node name,
+ * other changes.
+
+ * makeinfo/cmds.c (cm_bye): call discard_braces.
+
+ * makeinfo/cmds.c (cm_settitle): output more meta and link tags.
+
+ * configure.in (ALL_LINGUAS): add eo.
+
+ * util/install-info.c [STRIP_DOT_EXE]: #if not #ifdef
+
+Wed Apr 21 19:40:51 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Doc fix.
+
+ * makeinfo/sectioning.c (insert_and_underscore): do not output
+ html anchor here.
+ * makeinfo/node.c (cm_node): do anchor at node name not sectioning
+ title.
+
+ * makeinfo/node.c: Newlines on node lines.
+
+Tue Apr 20 13:02:46 1999 Karl Berry <karl@gnu.org>
+
+ * info/man.c (get_manpage_contents): freopen stdin and stderr to
+ /dev/null rather than closing them. http://bugs.debian.org/14787
+
+Mon Apr 19 14:12:09 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document possibility of `titlepage' stuff for
+ plain text output using @ifinfo.
+ Report from: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>.
+
+ * makeinfo/cmds.c: Screw that.
+ * doc/texinfo.txi: Fix up frontmatter a bit.
+
+ * dir-example: Spaces not tabs.
+ * dir-example (R FAQ): add.
+
+ * makeinfo/makeinfo.c: Lowercase makeinfo in first line.
+
+ * doc/info.texi (The node reached...): is a @subsection not a
+ @subsub.
+
+ * doc/texinfo.txi: Document option rename.
+ * makeinfo/makeinfo.c: Rename option to commands-in-node-names.
+
+ * makeinfo/index.h (index_compare_fn): declare.
+ * makeinfo/index.c (index_element_compare): call through new
+ variable index_compare_fn, and set it to strcoll if
+ @documentlanguage was used and LANG != en.
+ #include lang.h.
+
+Sat Apr 17 14:46:47 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (current_item_function, cm_item): rewrite
+ to skip all conditionals.
+ (cm_item): use current_item_function rather than current_insertion_type
+ to check what to use for @item, so @ifset etc. can be used around
+ @items.
+ Report from: "W. L. Estes" <wlestes@br20920.uncg.edu>.
+
+ * makeinfo/makeinfo.c (current_insertion_type): no need to
+ declare.
+
+ * makeinfo/makeinfo.c: Add examples to help message.
+
+ * util/texindex.c (usage): Rearrange --help, avoid extra newline.
+
+ * info/info.c: Sort --help in the usual place.
+
+ * makeinfo/makeinfo.c: Reindent help message, rename
+ --expensive-validation to --commands-in-nodes.
+
+Fri Apr 16 17:53:48 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_ignore_arg): new routine.
+ (cm_ignore_line_no_op): remove, can use cm_ignore_line.
+
+Tue Apr 13 16:45:39 1999 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: Frontmatter changes.
+
+ * doc/info.texi: Remove advanced remark in first node.
+
+ * doc/texinfo.txi: Texinfo.tex does macros now. From Eli.
+
+ * doc/texinfo.txi: Document @w{ } to produce an unbreakable space.
+
+ * util/texi2dvi: Update from Akim, avoid Solaris ucb echo weirdness.
+
+ * info/infodoc.c: Parenthesize function calls, don't depend on
+ gettext being there. Report from: Doug Semler
+ <doug@seaspace.com>.
+
+1999-04-12 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infomap.c (initialize_vi_like_keymaps): Initialize the echo
+ are keymap *before* it is filled up with keys.
+
+1999-04-10 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/macro.c (execute_macro): Reset the line number to where
+ the macro argumenst begin, before executing its expansion.
+
+ * makeinfo/makeinfo.c (cm_xref): Expand the name of arguments
+ before writing them in HTML mode.
+ (handle_menu_entry): Expand the name of the gleaned node before
+ writing it in HTML mode.
+
+ * makeinfo/sectioning.c (sectioning_html): Expand the name of the
+ current node when producing the <a name=... anchor.
+
+ * makeinfo/node.c (cm_node): Expand the name of node and its links
+ before outputting them in HTML mode.
+
+ * makeinfo/index.c (cm_printindex): Expand node names to which the
+ index points.
+
+ * makeinfo/footnote.c (cm_footnote): Call execute_string instead
+ of add_word_args, since current_node needs to be expanded. Expand
+ the name of the Footnotes node before calling
+ remember_node_reference.
+
+ * makeinfo/tests/node-expand.txi: New test, for testing how node
+ names are expanded in @node, @menu, cross-references, and
+ indices.
+
+ * makeinfo/makeinfo.c (add_char): If we output <p>, adjust the
+ affected brace positions by 3, so cm_xxx functions get what they
+ expect in START and END.
+ (insert_html_tag): Likewise.
+
+ * makeinfo/cmds.c (cm_sc): Remove the kludge that looks for the
+ beginning of <small>, it is no longer needed.
+
+ * makeinfo/macro.c (cm_definfoenclose): Don't stop at the first
+ blank after the second comma: the blank may belong to the second
+ delimiter.
+
+ * makeinfo/tests/htmlpara.txi: New test, for the commands affected
+ by the <p> output at paragraph beginning.
+
+ * makeinfo/makeinfo.h (expensive_validation): New option.
+
+ * makeinfo/makeinfo.c (long_options): Add expensive_validation.
+ (usage): Likewise.
+
+ * makeinfo/node.c (find_node): If NAME isn't found verbatim, try
+ expanding it and every node name in tag table, before comparing
+ them, but only if expensive_validation is non-zero.
+ (find_node_reference): Likewise.
+ (cm_node): Don't expand node name and its links here.
+ (validate_file): If direct comparisons fail, try expanding the
+ comparees before giving up, unless expensive_validation is zero.
+ Switch the order of NODE and UP in error message about a lacking
+ menu item.
+
+1999-04-07 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/index.c (cm_printindex): Don't output "Menu" header.
+
+ * makeinfo/node.c (get_node_token): Collapse whitespace in node
+ names.
+ (glean_node_from_menu, expand_node_name): Likewise.
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind all the 256
+ keys to ea_insert, like the Emacs-like case does.
+
+ * doc/info-stnd.texi (Invoking Info): Document support for files
+ compessed with bzip2, and the --vi-keys option.
+ (Many places): Document key bindings under --vi-keys.
+
+1999-04-06 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/session.c (info_last_node, info_first_node): With a numeric
+ argument, go to ARGth node counting from the beginning. Skip
+ anchor tags when looking for the target node--the last tag can be
+ an anchor, for example.
+ (last_search_direction, last_search_case_sensitive): New
+ variables.
+ (last_search_for_string): Remove variable.
+ (info_search_internal): Always move point by one notch before
+ beginning the search, to avoid complications in repeated search
+ commands. When looking for the next node tag, skip any anchor
+ tags.
+ (info_search_1): Accept a 5th argument ASK_FOR_STRING, and only
+ prompt for search string if it's non-zero. All callers changed.
+ Look for the COUNTth occurence of the string.
+ (info_search, info_search_backward, info_search_case_sensitively):
+ Set last_search_direction and last_search_case_sensitive.
+ (info_search_next, info_search_previous): New commands, repeat
+ last search in the same or reverse direction without prompting the
+ user for the string.
+
+ * info/infomap.c (initialize_emacs_like_keymaps): Bind `C-x n' to
+ info_search_next and `C-x N' to info_search_previous.
+ (initialize_vi_like_keymaps): Bind `n' to info_search_next and `N'
+ to info_search_previous.
+
+1999-04-04 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (get_rest_of_line): Don't expand non-macros,
+ so that macro-expanded output will still have them.
+
+1999-04-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/node.c (cm_node): Expand the node name and its links
+ completely before using them, so that they could use e.g. @value{}
+ etc.
+
+ * makeinfo/makeinfo.c (replace_with_expansion): Don't
+ remember_itext if we are executing_string.
+
+ * makeinfo/sectioning.c (sectioning_html): Remove #ifdef
+ HAVE_MACROS. Don't call me_execute_string if already
+ executing_string.
+
+ * makeinfo/toc.c (toc_add_entry): Expand macros in TOCNAME right
+ here, since the macro can be later redefined.
+ (contents_update_html, contents_update_info,
+ shortcontents_update_html, shortcontents_update_info): Use stdio
+ functions for output instead of add_word etc.
+ (rewrite_top, contents_update, shortcontents_update, toc_update):
+ New functions, replace the TOC placebo with the actual TOC.
+ (cm_contents): Output a placebo instead of writing the TOC.
+ (cm_shortcontents): Output a placebo instead of writing the short
+ TOC.
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Call toc_update
+ if appropriate.
+
+ * makeinfo/sectioning.c (cm_top): Don't output the HTML header
+ here, since the Top node might be preceeded by other commands,
+ like @contents.
+
+ * makeinfo/cmds.c (cm_settitle): Output the HTML header here.
+
+ * makeinfo/node.c (set_current_output_filename): New function,
+ saves the name of the actual file we are now writing, including in
+ the case of split-HTML output.
+ (cm_node): Call it to record the name of output file.
+
+ * makeinfo/footnote.c (free_pending_notes): Re-initialize
+ current_footnote_number to 1.
+
+ * makeinfo/index.c (index_add_arg): Remove redundant xstrdup.
+ (cm_printindex): Don't free index->entry: it is freed in
+ free_index, if, e.g., there's more than one file to convert.
+
+ * makeinfo/makeinfo.c (init_internals): Call toc_free.
+
+Mon Apr 5 16:53:33 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am: Texmf_{texinfo,dvips}: dirs not files. From
+ Kurt Hornik.
+
+Wed Mar 31 13:50:09 1999 Karl Berry <karl@gnu.org>
+
+ * Pretest 3.12h.
+
+ * makeinfo/node.c (last_node_p): new fn.
+ (split_file): call it, instead of assuming no more entries means
+ no more nodes. (Loses with anchors.)
+ Report from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
+
+ * makeinfo/index.c (sort_index): whether an entry is @code or not
+ depends on the element, not the index, because of synindex.
+
+ * doc/Makefile.am (install-tex): Must use $(TEXMF), do
+ $(mkinstalldirs) on tex dirs.
+ From: Nathan Sidwell <nathan@acm.org>.
+
+ * doc/texinfo.txi: Document need for blank line before @image if
+ you want space.
+
+ * Install changes from Eli:
+
+ 1999-03-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infodoc.c (info_internal_help_text): Remove hard-wired key
+ names, use %-10s instead.
+ (info_help_keys_text): New variable, holds two variants of keys
+ that invoke basic commands, indexed by vi_keys_p.
+ (create_internal_info_help_node): Use info_help_keys_text[].
+
+ * info/window.c (build_message_buffer): Support more general
+ format strings, like %-10.15s, %+4d etc.
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind ESC-h, ESC-t,
+ C-x LFD and C-x RET.
+
+ 1999-03-08 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (output_dirfile): Sort the entries and
+ output them in alphabetic order. Output each entry only in those
+ sections where it belongs.
+ (parse_input): New function, code moved from main. Process
+ sections and entries in a single loop, and record with each entry
+ the list of sections where that entry belongs. Record each entry
+ separately, not all of them together as a single block.
+ (parse_dir_file): New function, code moved from main.
+ (main): Move code to parse_input and parse_dir_file. Put the new
+ entries only into sections where they belong.
+ (compare_entries_text): New function, called when sorting new
+ entries.
+
+ * info/infomap.c (initialize_vi_like_keymaps): New function. Bind
+ keys a-la Less, including new functions from session.c below.
+ (initialize_emacs_like_keymaps): New function, with the guts of
+ initialize_info_keymaps.
+
+ * info/session.c (info_scroll_forward, info_scroll_backward): If
+ default_window_size is non-negative, use it as the default number
+ of lines to scroll.
+ (info_scroll_forward_set_window, info_scroll_backward_set_window,
+ info_down_line, info_up_line, info_scroll_half_screen_down,
+ info_scroll_half_screen_up, info_search_backward): New functions,
+ for Less-like look and feel.
+
+Tue Mar 30 16:44:53 UTC 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * doc/txi-de.tex:
+ - added additional putwordin
+ * doc/texinfo.txi:
+ - changed defivar into deftypeivar
+ * makeinfo/sectioning.c:
+ - changed output of anchors based on problems with ie.
+ * makeinfo/defun.c:
+ - output in HTML mode changed to be on previous state.
+ * makeinfo/insertion.c:
+ - fixed up HTML output for deftypeivar.
+
+1999-03-30 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi ($tmpdir): Avoid security holes.
+
+Fri Mar 26 17:06:55 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_exdent): rewrite to preserve blank lines.
+ Bug from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
+
+ * makeinfo/cmds.c (cm_exdent): arg is in `roman'.
+
+Thu Mar 25 16:21:27 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c,
+ * makeinfo/defun.c,
+ * makeinfo/insertion.h (insertion_type): add deftypeivar.
+ * makeinfo/defun.h (cm_defun): declare here.
+ * makeinfo/cmds.c (defun.h): include.
+ * doc/texinfo.txi (deftypeivar[x]): new commands.
+ * makeinfo/cmds.c (deftypeivar[x]): new commands.
+
+ * makeinfo/cmds.c (cm_exdent): save, set and restore
+ in_fixed_width_font.
+
+ * doc/texinfo.txi (uref): rewrite.
+
+ * info/info.c (info_short_help): more spaces for new help2man.
+
+ * makeinfo/node.c (cm_node): output node name in html, change
+ navbar punctuation.
+
+ * doc/texinfo.5: Fix URL.
+
+ * Finally installed this:
+ 1998-05-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * makeinfo/makeinfo.c (convert_from_loaded_file): When the file
+ contains no @setfilename then always look for \input (not
+ \include) in the first line and skip that. Don't skip the first
+ line if no \input was found.
+
+1999-03-24 Akim Demaille <demaille@inf.enst.fr>
+
+ * configure.in (AC_HEADER_STAT): Added.
+ * util/texindex.c (main): Check infiles are not directories.
+
+1999-03-24 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (index_files): Don't use `!' to run sed -e "s!foo$!!"
+ since the shell will interpret `$!'.
+
+Tue Mar 23 16:41:08 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi (uref): rewrite to make HTML output read more
+ nicely. From Tim S.
+
+ * info/info.c (info_short_help): include examples.
+
+ * makeinfo/makeinfo.c (close_paragraph_with_lines): move earlier
+ so can be static.
+
+ * makeinfo/sectioning.c,
+ * makeinfo/node.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/makeinfo.c,
+ * makeinfo/macro.c,
+ * makeinfo/insertion.c,
+ * makeinfo/cmds.c,
+ * makeinfo/files.c,
+ * makeinfo/footnote.c (size_of_input_text): rename to
+ input_text_length.
+
+ * makeinfo/makeinfo.c (cm_xref): make wrong-char-following a warning.
+ (replace_with_expansion): remove bogus conditional that was duplicated
+ unconditionally.
+ From: Hans-Bernhard Broeker <broeker@physik.rwth-aachen.de>
+
+Mon Mar 22 14:39:59 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am (install-tex): parenthesize.
+
+ * Makefile.am (dist-hook): remove, it uses hard links so we chmod
+ all our sources.
+
+ * makeinfo/toc.c,
+ * makeinfo/defun.c,
+ * makeinfo/sectioning.c: Use _, not N_.
+
+ * info/Makefile.am (ginfo_SOURCES): include $(BUILT_SOURCES)
+ explicitly.
+
+ * makeinfo/lang.c,
+ * makeinfo/lang.h: ISO-639 updates.
+
+ * makeinfo/cmds.c: exampleindent changes.
+
+ * info/info.c (info_short_help): reformat somewhat, and don't say
+ info info options any more.
+
+ * doc/info-stnd.texi (Invoking): make description format somewhat
+ more standard.
+
+ * info/infomap.c (Initialize_info_keymaps): do ea_insert bindings
+ first so subsequent bindings (e.g., for ESC) override.
+
+Sun Mar 21 17:31:00 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/multi.c (output_multitable_row): remove unnecessary
+ trailing whitespace from output, output blank row for blank @item.
+
+ * doc/texinfo.txi: Remove extra @item in language multitable.
+
+Sat Mar 20 12:30:25 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Update language table from ISO 639:
+ http://www.iro.umontreal.ca/contrib/po/iso-639. From kama.
+
+ * doc/texinfo.txi (exampleindent): document.
+
+ * doc/texinfo.txi (Creating an Info File): use this for the node name.
+
+ * doc/info.texi: Make Texinfo references consistent, etc.
+
+1999-03-18 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (set_default_indentation_increment): new
+ routine.
+ * makeinfo/insertion.c (cm_exampleindent): new routine.
+ Call set_default_indentation_increment.
+
+Mon Mar 15 17:06:15 1999 Karl Berry <karl@gnu.org>
+
+ * info/Makefile.am (ginfo_SOURCES): Remove doc.c and funs.h in
+ hopes they then won't be distributed. Report from Andreas.
+
+ * makeinfo/cmds.c (cm_sp): close paragraph and disable filling to
+ produce blank lines in info.
+ Report from: Michael Vanier <mvanier@bbb.caltech.edu>.
+
+ * doc/texinfo.txi: Attempt to get Edition info on one line.
+
+ * makeinfo/makeinfo.h (cr_or_whitespace): use whitespace and check
+ for \r. (skip_whitespace_and_newlines, command_char): use it.
+ Report from bonzini@gnu.org.
+
+ * makeinfo/cmds.c (cm_center): save and restore filling_enabled,
+ so @center can be used inside an @example. Bug from kama.
+
+1999-03-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/footnote.c (cm_footnote): In separate footnote style,
+ generate a reference to "foo-Footnote-NN" for each footnote.
+ (output_pending_notes): In separate footnote style, generate an
+ anchor "foo-Footnote-NN" for each footnote, so that the link in
+ the parent node would lead directly to the footnote.
+
+ * info/footnotes.c (make_footnotes_node): Recognize the new
+ "foo-Footnote-NN" style of footnote references.
+
+1999-03-09 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * configure.in (AC_OUTPUT): Remove command to create po/Makefile,
+ already done by AM_GNU_GETTEXT.
+
+Tue Mar 9 17:48:46 1999 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (dist-hook): make distribution directory writable.
+
+ * Installed these changes:
+
+ 1999-03-04 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (bibtex): Allow several runs of bibtex, this can be
+ used if bibentries reference other bibentries. Moreover, looking
+ for `Citation' in the LOG should be enough to avoid uneless runs.
+
+ Sun Mar 7 15:15:00 1999 UTC Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/sectioning.{c,h}:
+ - using defines instead of literals.
+ - cleaned up some stylistic matters like Karl Berry
+ suggested. Handling of things like:
+ @unnumbered ..
+ @section ...
+ now it works correct.
+
+ * makeinfo/toc.{c,h}
+ - addTocEntry, freeToc changed into toc_add_entry
+ toc_free. stylistics changed.
+
+ * makeinfo/iso2cht.pl,iso-639: script, table from the web.
+ - perl script converting the iso-639 table from the web
+ into the appropiate files (isoenum.h, isotab.c and
+ iso.texi) which can be inserted directly into
+ lang.c, lang.h and texinfo.txi.
+
+Tue Mar 9 17:47:59 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Bump to 3.12g.
+
+Sun Mar 7 07:01:19 1999 Karl Berry <karl@gnu.org>
+
+ * info/infomap.c: Don't do isprint, just bind everything.
+
+Fri Mar 5 14:31:42 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi,
+ * makeinfo/makeinfo.c: Document that --no-headers writes to stdout
+ by default.
+
+ * doc/texinfo.txi: @setchapternewpage doesn't change
+ \bindingoffset, just headers. Recommend not including it in the
+ manual source at all.
+
+ * makeinfo/node.c (write_tag_table_internal): set
+ in_fixed_width_font while constructing this so --- doesn't
+ collapse to --, etc. Bug report from Sergio.
+
+ * dir-example: Add a2ps stuff.
+
+ * info/session.c: Allow any character in search string.
+
+ * info/infodoc.c (describe_key): don't assume non-latin1
+ characters are undefined.
+
+ * info/infomap.c (initialize_info_keymaps): make all characters
+ insertable by default in echo area. From Eli.
+
+ * Installed these changes:
+
+ Wed Feb 23 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/sectioning.{c,h}:
+ - added to hold complete handling of sectioning
+ a little step towards modularization ;-)
+
+ * makeinfo/cmds.c:
+ - sectioning_alist moved to sectioning.c and
+ added information about enumerated chapter,
+ section ..., appendix or not. Everything
+ which has any relationship with sectioning
+ moved to sectioning.{c,h} I hope I have found
+ all.
+
+ * makeinfo/toc.{c,h}:
+ - added for complete handling of "table of contents"
+ "short contents". Better ASCII only support
+ (--no-headers) so no Text "Menu" is printed.
+ May be we can do more.
+
+ * makeinfo/makeinfo.{c,h}:
+ - added new command line switch --number to enumerate
+ chapter, sections etc.
+
+ * doc/texinfo.txi:
+ - --number option documented.
+
+ 1999-02-28 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/insertion.c (in_paragraph): New variable.
+ (cm_item): Add </p> only if <p> is open.
+ * makeinfo/makeinfo.c (handle_menu_entry): Ditto.
+
+ * makeinfo/insertion.c (begin_insertion),
+ * makeinfo/makeinfo.c (handle_menu_entry): If commentary
+ precedes first menu item, put them outside of <ul>.
+ Put <p> and </p> correctly.
+
+ 1999-02-27 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/info.c (info_short_help): Document --show-options and
+ --usage.
+
+ 1999-02-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/makedoc.c (main) [STRIP_DOT_EXE]: Strip the .exe suffix, so
+ that doc.c says "./makedoc.c", not "./makedoc.exe.c".
+
+ * info/info.c (goto_invocation_p): New variable.
+ (long_options): New options --show-options and its alias --usage.
+ (main): Don't update the display until we find the first node to
+ be displayed, to avoid flushing incorrect display. If user wants
+ to see the command-line options node right away, display whatever
+ info_intuit_options_node finds.
+
+ * info/session.c (info_intuit_options_node): New function, uses
+ heuristics to find the node which describes program's invocation.
+ (info_goto_invocation_node): New command, asks for a program's
+ name and displays the invocation node of that program.
+ (entry_in_menu): New function, fuzzily looks for a menu entry in a
+ node's menu.
+ (program_name_from_file_name): New function, suggests a program
+ name given a name of its Info file.
+ (info_search_in_node): Accept an additional argument: a flag to
+ search case-sensitively; all callers changed. If case-sensitive
+ search is required, don't turn on the case-fold flag in the search
+ binding.
+ (info_search_internal): Accept an additional argument: a flag to
+ search case-sensitively; all callers changed. Share the last
+ search string between normal and case-sensitive search commands.
+ (info_search_1): New function, with the guts that previously
+ belonged to info_search. If the search is case-sensitive,
+ mentions that in the prompt for the search string. If the search
+ string includes upper-case characters, searches case-sensitively.
+ (info_search): Calls info_search_1 with zero case-sensitivity
+ flag.
+ (info_search_case_sensitively): New command, calls info_search_1
+ with non-zero case-sensitivity flag.
+ (incremental_search): If the search
+ string includes upper-case characters, searches case-sensitively.
+
+ * info/search.c (search_backward): Fix bug in case-sensitive
+ search.
+
+ * info/infomap.c (initialize_info_keymaps): `-' in info window map
+ produces negative arguments. `S' invokes case-sensitive search.
+ `O' and `I' invoke goto-invocation.
+
+ * doc/info-stnd.texi (Invoking Info): Document --show-options.
+ (Node Commands): Document `O', goto-invocation.
+ (Searching Commands): Document `S' and the case-sensitive search
+ when the search string includes upper-case letters. Document `/'
+ as a synonym for `s'.
+ (Miscellaneous Commands): Document `M--' and `-'.
+
+ 1999-02-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/info.c (main): Under --index-search, search indices *after*
+ following menus, so that we don't look for an index in DIR.
+
+
+Wed Mar 3 17:20:07 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c: Do not output <small> in info mode.
+ From: Eli Zaretskii <eliz@is.elta.co.il>.
+
+ * makeinfo/insertion.c (enum_html): Remove unused var temp.
+ From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * info/infodoc.c: Avoid translation of blank lines.
+
+ * info/tilde.c,
+ * info/man.c,
+ * makeinfo/index.c (index_add_arg): avoid use of alloca.
+
+ * info/echo-area.c: Don't pause for an additional 75 microseconds.
+ Noted by Eli.
+
+ * configure.in: Bump to 3.12f.
+
+ * doc/texinfo.txi: findex enddots. From Eli.
+
+1999-03-01 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (insert_html_tag): Add <p> when
+ paragraph is not opened.
+ (sectioning_html): Call close_paragraph so that paragraph
+ will be started.
+
+1999-02-26 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (get_xref_files): Take $filename_noext as $1.
+ (get_xref_files): Look for $1.idx only, not *.idx.
+ (get_xref_files): Look for $1.cb files (\usepackage{changebar}).
+ * texi2dvi: Look for rerun requests in LOG files in addition to
+ xref files comparison.
+ (bibtex): Remove useless `./' (already added in
+ command_line_filename).
+ (filename_dir): Smarter sed expression that handles file names
+ with no directory part.
+ (txiversion): Removed useless () (`` already guarantee a subshell).
+
+1999-02-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/multi.c (find_template_width): Fix operator precedence.
+
+Tue Feb 23 10:35:53 1999 Karl Berry <karl@gnu.org>
+
+ * dir-example: ccmode not cc-mode. From hds.
+
+Mon Feb 22 07:34:00 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/lang.c,
+ * doc/texinfo.txi: Fix kazakhkh typo.
+
+1999-02-21 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.sed: Add pcterm.c to terminal.o dependencies.
+
+1999-02-21 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/lang.c (cm_accent_generic): Emit the accent character
+ only once, after the argument.
+
+Sun Feb 21 16:36:14 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (handle_menu_entry): new routine.
+ (reader_loop): call it, allowing for comments in menus.
+
+ * makeinfo/node.c: Rearrange functions to make static, etc.
+
+ * doc/Makefile.am (EXTRA_DIST, install-tex): Add txi-cs and txi-no.
+
+1999-02-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (open_possibly_compressed_file): Output
+ explicit message about empty input files.
+ (insert_entry_here): Insert multiple entries in alphabetical order.
+
+Fri Feb 19 09:13:28 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (enum_html): new routine.
+ (begin_insertion): call it.
+ Based on code from: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>.
+
+ * lib/xexit.c (EXIT_FAILURE) [!defined EXIT_SUCCESS && VMS]: weird
+ long value.
+ From: Lars Hecking <lhecking@nmrc.ucc.ie>
+
+Thu Feb 18 16:42:10 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.h (remember_node_reference): decl.
+ * makeinfo/makeinfo.c (find_unused_reference): dump unused decl.
+
+1999-02-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_dots, cm_enddots): Don't produce &#133; for
+ HTML, as too many browsers don't support it; use "..." in a
+ smaller font.
+ (cm_top): Output the lang= attribute inside <html>.
+
+ * makeinfo/node.c (cm_node): Output the lang= attribute inside
+ <html>.
+
+ * makeinfo/footnote.c (output_pending_notes): Generate <ol>
+ instead of <dl compact>. Make the text of each footnote start a
+ new paragraph.
+
+1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (cm_item): Remove <dd> when immediately
+ followed by a <dt>. Add a <br> before every <dt>, except if we
+ are converting @itemx, or in the first item after <dl>.
+ (begin_insertion): Use <dl> for tables, to make it look closer to
+ the Info output. Don't output a newline after a <pre>.
+
+1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (handle_variable): Don't backup input
+ pointer if we hit the end of text (usually, inside
+ execute_string).
+ * makeinfo/insertion.c (get_item_function): Likewise.
+
+Wed Feb 17 15:09:06 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Better indexing of space entries.
+
+ * makeinfo/multi.c (find_template_width): new routine to really
+ parse @multitable {...} templates.
+ (setup_multitable_parameters): call it.
+ Bug report from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
+
+ * lib/system.h (substring): declare.
+
+ * lib/Makefile.am (libtxi_a_SOURCES): add substring.c.
+
+ * makeinfo/defun.c: Move substring to lib.
+
+ * util/texindex.c (tempcopy): no longer used.
+ (maketempname): make static.
+
+ * Installed these changes:
+
+1999-02-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_acronym): New function, makes @acronym
+ produce a smaller font size in HTML mode.
+ (cm_sc): Produce smaller font size in HTML mode.
+
+ * makeinfo/footnote.c (cm_footnote): In HTML output, make the
+ footnote number be a superscript; remove [] around the link.
+
+ * makeinfo/cmds.c (cm_var_sc): Separated into two functions:
+ cm_var and cm_sc, since @var and @sc have different effects in
+ HTML output.
+
+ * makeinfo/makeinfo.c (cm_xref, cm_inforef): Don't put "[]" around
+ HTML links.
+
+ * info/pcterm.c (DJGPP_keytab): Add translation for Alt-PgUp and
+ Alt-PgDn, to support the new M-prior key.
+
+Wed Feb 17 11:50:46 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Don't mention texi2roff so prominently.
+
+ * makeinfo/makeinfo.c: Pass enclose_expand to remember_brace
+ rather than enclose_command. From Eli.
+
+ * makeinfo/macro.c (cm_alias, cm_definfoenclose): Expand macros in
+ first call to get_until_in_line. From Eli.
+
+ * info/makedoc.c,
+ * info/session.c,
+ * info/man.c,
+ * info/tilde.c,
+ * info/info.c,
+ * makeinfo/files.c,
+ * makeinfo/multi.c,
+ * makeinfo/node.c,
+ * makeinfo/makeinfo.c: Use xexit.
+ * makeinfo/makeinfo.h (NO_ERROR, FATAL, SYNTAX): remove.
+
+ * info/terminal.c: Avoid sleep unless on sun-cmd terminal.
+
+ * lib/xexit.c (EXIT_FAILURE) [!EXIT_FAILURE]: #define to 1 to fix
+ Sony NEWS-OS 4.0C lossage. From Akim.
+
+ * info/infodoc.c: Translate where is doc string, underline lines
+ in help.
+ From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
+
+ * makeinfo/cmds.c (cm_dots, cm_enddots): go back to ... and ....,
+ &#133; apparently doesn't work widely enough.
+
+Tue Feb 16 07:37:54 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in (ALL_LINGUAS): add de_AT.
+
+ * util/texi2dvi: Redirect cd output to /dev/null when determining
+ txiversion.
+
+Mon Feb 15 13:43:37 1999 Karl Berry <karl@gnu.org>
+
+ * util/install-info.c,
+ * util/texindex.c: Call xexit instead of exit.
+
+ * lib/system.h (xexit): Declare.
+
+ * lib/Makefile.am (libtxi_a_SOURCES): Add xexit.c.
+
+ * doc/texinfo.txi: Document that @documentencoding is used in the
+ HTML output.
+
+ * makeinfo/cmds.c (cm_top): use document_encoding if set.
+ (command_table): call cm_documentencoding instead of no-op.
+ * makeinfo/lang.c (document_encoding, cm_documentencoding): define.
+ * makeinfo/lang.h (document_encoding, cm_documentencoding): declare.
+
+ * makeinfo/insertion.c: Restore </p> before <li>.
+
+ * util/texi2dvi: If texinfo.tex version is too low for macros, use
+ makeinfo.
+
+ * makeinfo/cmds.c (cm_center): save and restore value of
+ indented_fill, otherwise @center within an @enumerate (say)
+ also closes the indentation.
+ Bug from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
+
+Sun Feb 14 15:25:02 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Doc fix.
+
+ * doc/texinfo.txi: Be enthusiastic if people want to implement
+ more output formats, but use makeinfo to do the job.
+
+ * makeinfo/index.c (index_element_compare): Use strcoll if it's
+ available.
+ * configure.in: Call AC_FUNC_STRCOLL.
+ * makeinfo/makeinfo.c (main): Use LC_CTYPE and LC_COLLATE
+ categories. Suggestion from Oleg.
+
+ * lib/system.h (setlocale) [!HAVE_SETLOCALE]: #define away.
+ Suggestion from Akim.
+
+ * doc/texinfo.txi: Document @paragraphindent working in TeX now.
+
+ * doc/texinfo.txi,
+ * makeinfo/lang.c,
+ * makeinfo/lang.h (language_code_type): abbrev changes from Oleg.
+
+ * makeinfo/cmds.c,
+ * makeinfo/node.c: Only translate `Next:', `Previous:', and `Up:',
+ not the whole href. From Eli.
+
+ * doc/texinfo.txi: Document that only unsplit html output is
+ supported in this release.
+
+Sat Feb 13 17:55:30 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Check for termlib before termcap for sake of
+ Solaris (judging from less-332 configure.in) and maybe
+ HP-UX 11.
+
+ * doc/texinfo.txi (Footnote commands): incoherency reported by Aharon.
+ Language vs country fixes from Oleg.
+
+1999-02-13 Karl Eichwalder <ke@gnu.franken.de>
+
+ * makeinfo/node.c (cm_node): Tag navigation links as translatable.
+ * makeinfo/cmds.c (cm_top): Ditto.
+
+Wed Feb 10 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/defun.h:
+ - new because we need get_base_type-function
+ accessible in insertion.c
+
+ * makeinfo/defun.c:
+ - complete HTML handling of the @def... things.
+
+ * makeinfo/Makefile.am:
+ - defun.h added as part of makeinfo.
+
+ * makeinfo/makeinfo.c:
+ - define looking_at moved into header-file, because
+ we need it in defun.c
+
+ * makeinfo/insertion.c:
+ - some minor changes made to support the @def...
+ things in HTML.
+
+ * makeinfo/lang.c: (cm_accent_generic)
+ - bug fixed. Using umlaut (accent ...)
+ would produce &A only if an umlaut follows
+ an empty line.
+ - bug fixed. Because things like &tilde; &grave;
+ and &circ; do not exist as standalone characters
+ in HTML.
+ - cm_special_char now produce correct HTML for
+ @O{} and @o{}.
+ - warning using _("Text") instead "Text" (gettext).
+
+ * makeinfo/cmds.c:
+ - @url fixed. Display the given Text.
+
+ * doc/texinfo.txi:
+ - corrected the references for @uref, because
+ they were given as "url" instead of "uref".
+ @uref has three arguments, so show them in
+ command list.
+
+Wed Feb 10 17:27:58 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Rewrite for overfull box.
+
+Tue Feb 9 19:03:16 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document more HTML output stuff. Based on esr
+ changes.
+ * makeinfo/macro.c,
+ * makeinfo/macro.h,
+ * makeinfo/makeinfo.c: Do alias and definfoenclose expansion.
+ From esr.
+
+Mon Feb 8 14:41:07 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c: New commands @alias and @definfoenclose.
+ From: "Eric S. Raymond" <esr@snark.thyrsus.com>.
+
+ * doc/texinfo.txi: Document @documentlanguage and
+ @documentencoding.
+
+ * makeinfo/cmds.c: Move accent support to lang.c.
+
+ * makeinfo/makeinfo.c (add_char): add &nbsp; rather than an 8-bit
+ char for html.
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add lang.[ch].
+
+ * doc/texinfo.txi: Be even more emphatic that @url is not
+ typically what you want.
+ * doc/texinfo.txi: Document that macro calls must use empty
+ braces.
+
+ * info/session.c: Do not translate node pointers. From Karl E.
+
+ * makeinfo/cmds.c (cm_dfn): Use <dfn>. Suggestion from Eli.
+
+Sun Feb 7 07:00:08 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Make --html imply --no-split.
+
+ * makeinfo/cmds.c (cm_top): don't core dump if the top node has no
+ next.
+
+ * makeinfo/makeinfo.c (replace_with_expansion): compare length
+ after expansion with length of full input text before
+ expansion, not just the length of the expanded text.
+ Bug (contents2) reported by kama.
+
+ * info/infodoc.c (create_internal_info_help_node): gettext calls
+ to help msg strings. From Ulrich.
+
+Fri Feb 5 17:35:13 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: set makeinfo= for latex case.
+
+ * doc/texinfo.txi (@deftp summary): ref Data Types node that
+ actually describes it. From kama.
+
+Thu Feb 4 07:39:10 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Take it back. Emacs info needs that text
+ before the CTRL-_.
+ * makeinfo/makeinfo.c: Don't bother to output the header (This is
+ -, produced ...) to stdout.
+
+ * doc/texinfo.txi (Other Info Directories): Mention that dir files
+ must be named dir.
+
+ * makeinfo/makeinfo.c (cm_uref): implement optional third
+ argument.
+ * doc/texinfo.txi (uref): document it.
+ Suggestion from: Charles Karney <karney@pppl.gov>
+
+ * doc/Makefile.am (info_TEXINFOS): put texinfo.txi first so
+ UPDATED reflects its modtime, rather than info-stnd's.
+
+ * makeinfo/files.c (full_pathname) [!WIN32]: #endif in wrong place.
+ From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/cmds.c (cm_url): Remove URL: from output. It's ugly.
+
+Wed Feb 3 16:05:03 1999 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c: Doc fix, zero not oh.
+
+ * makeinfo/makeinfo.c (add_char): don't ignore if
+ only_macro_expansion, even in no_headers case.
+ Otherwise menu items don't get remembered and defaulting
+ doesn't work. Macros suck!
+
+ * util/texi2dvi (common): include orig_pwd.
+ (language): reguess for each file if not explicitly set.
+
+Tue Feb 2 16:22:32 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Bump to 3.12d now.
+
+Mon Feb 1 14:46:45 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (cm_item): For itemize and enumerate, do
+ </p> before the <li> for html. Bug from Eli.
+
+ * makeinfo/index.c: Installed change in index.c:
+ Mon Dec 28 12:50:14 1998 Matthew Fredette <fredette@mit.edu>
+ * makeinfo.c (index_add_arg): Use xstrdup on input_filename
+ when saving it in the new index entry.
+
+ * util/texi2dvi: cd / before cd $orig_pwd in case of DOS drive
+ change.
+
+Sun Jan 31 16:39:01 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Used sed to expand only the @{if,}tex parts of
+ the source since makeinfo's conditional options aren't ready yet
+ (from Akim).
+ Also use ${1+"$@"} for Digital Unix "$@" expansion bug (from Noah).
+
+ * util/install-info.c: Doc fix from Eli.
+
+ * doc/texinfo.txi: Oops, said we looked for .png twice.
+
+Sat Jan 30 17:18:14 1999 Karl Berry <karl@gnu.org>
+
+ * info/session.c (forward_move_node_structure): remove tangled
+ code to merely print words instead of numbers; too hard to translate.
+
+ * info/session.c: Missing _'s for more i18n. From Trond.
+
+ * doc/Makefile.am (EXTRA_DIST): Include txi-no.tex from Trond.
+
+Sun Jan 24 09:28:12 1999 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): Use djgpp by itself instead of listing
+ each file separately (new feature in automake 1.4).
+
+ * makeinfo/insertion.c (begin_insertion): for quotation, always
+ increment current_indent even if html output, why not.
+ (Otherwise must not decrement current_indent in end_insertion.)
+
+ * doc/texinfo.txi: More overfull box fixes.
+
+ * makeinfo/insertion.c: Add some assertions and the beginnings of
+ handling @tex.
+
+ * doc/texinfo.txi: Fix overfull boxes, but tables of contents at
+ the front.
+
+ * util/texi2dvi: Can't pass --no-ifinfo --iftex to makeinfo yet,
+ it's not ready.
+
+Sat Jan 23 10:22:16 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Pass --no-ifinfo --iftex to makeinfo.
+
+Fri Jan 22 19:09:49 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Include version.texi before @settitle so
+ @value{VERSION} gets expanded in the html title. From kama.
+
+ * These patches from Tim Singletary <talon@clark.net>.
+ * makeinfo/makeinfo.c: Simplify and improve html menus.
+ * makeinfo/insertion.c (begin_insertion): simplify html menu case
+ and set had_menu_commentary.
+ * makeinfo/insertion.h (had_menu_commentary): declare new global.
+ * makeinfo/node.h (glean_node_from_menu): declare.
+ * makeinfo/node.c (glean_node_from_menu): new arg to specify what
+ type of reference to remember as.
+
+ Date: Sun, 29 Nov 1998 09:21:01 -0500 (EST)
+ From: Tim Singletary <tsingle@talon.clark.net>
+ To: texinfo-pretest@tug.org
+ Subject: explanation of previous patches
+
+ > These diffs introduce some non-trivial changes into very
+ > sensitive parts of makeinfo, and it is hard to judge them without
+ > knowing what exactly do they solve.
+
+ At a high level, these patches fix (or at least significantly improve)
+ the html conversion of menus. Specifically, they fix bugs in the
+ conversion of menu commentary and detailmenu entries.
+
+ The menu commentary fixes require some justification: The unpatched
+ makeinfo attempts, with many bugs, to place menu commentary outside
+ the <menu> by adding </ul> and <ul> tags. While I understand the
+ motivation for this, that there might be browsers that don't support
+ <p> within <menu>, I'm not aware of any such browser and don't see any
+ compelling reason to continue the </ul> kludge.
+
+ Certainly
+ <menu>
+ <li>First paragraph.
+ <p>Second paragraph.
+ <li>Second item.
+ </menu>
+ is valid html!
+
+ Anyway, here's what my patches do:
+
+ 1) Deleted the `<h4>Menu</h4>' at the beginning of each menu. Using
+ `<h4>' is wrong since menus don't usually come after an `h3'
+ header. `<b>' looks the same on most browsers, but my opinion is
+ that there's no need for any header at all!
+
+ 2) Deleted the `<li>' kludge at the begining of each menu. It's no
+ longer needed since I'm deleting the </ul> kludge.
+
+ 3) Replace `in_menu_para', declared static in makeinfo.c:add_char()
+ with `had_menu_commentary', declared globally. Modified
+ insertion.c:begin_insertion() to initialize had_menu_commentary to
+ 1 when beginning a menu. Now there's enough state information for
+ menu commentary to be processed within <menu> ... </menu>; the
+ commentary can be seperated from the rest of the menu by bracketing
+ it between <p>'s.
+
+ Note that the first patch had a bug initializing
+ had_menu_commentary; the second patch fixes this bug.
+
+ 4) Changed the semantics of the argument to
+ node.c:glean_node_from_menu(). Previously, glean_node_from_menu()
+ only called remember_node_reference() when the argument was
+ non-zero. But add_char() didn't call `glean_node_from_menu(1)'
+ when processing detailmenu entries. In other words, detailmenu
+ entries didn't get registered as references, which lead to the html
+ conversion of detailmenu entries not producing proper hrefs!
+
+ The new semantics are that glean_node_from_menu always calls
+ remember_node_reference(), but calls it with `menu_reference' when
+ the first arg to glean_node_from_menu() is 1 and with
+ `followed_reference' otherwise. Now, detailmenu entries get
+ registered as `followed_reference' (normal menu entries still get
+ registered as `menu_reference') and the html conversion produces
+ proper hrefs.
+
+ 5) The above changes made it possible to streamline the section of
+ add_char() that deals with html menu text.
+
+ 6) In an otherwise unrelated change, rewrote a section of
+ glean_node_from_menu to no longer use `goto save_node;'.
+
+
+Thu Jan 21 12:55:42 1999 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: OK, let's try restoring the @include
+ version.texi with the new automake.
+
+ * makeinfo/cmds.c: Improve HTML @pounds, @bullet, etc.
+
+ * doc/Makefile.am (install-tex): new target.
+ (EXTRA_DIST): Include txi-??.tex.
+ txi-de.tex: new file from kama.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Bump to 1.4.
+ (install-tex): new target.
+
+ * util/texi2dvi: Restore "$@" for explicitness in main loop.
+
+ * doc/Makefile.am (*.1) [TEXINFO_MAINT]: Conditionalize.
+
+ * configure.in (AC_PREREQ): Bump to 2.13.
+ (TEXINFO_MAINT): Define this AM_CONDITIONAL.
+
+ * doc/texinfo.txi: Document that the HTML output name is derived
+ from @setfilename.
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Use @setfilename
+ for basename of html output.
+
+ * doc/texinfo.txi (url): Use example.org for the example.
+
+ * makeinfo/cmds.c (cm_url): @url should not produce a link, sorry
+ to say.
+
+Wed Jan 20 16:31:55 1999 Karl Berry <karl@gnu.org>
+
+ * util/texindex.c,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c,
+ * info/info.c: It's 1999.
+
+ * doc/info.texi (Advanced info commands): Fix typos from Gildea.
+
+ * makeinfo/makeinfo.c (end_of_sentence_p): don't check negative
+ array offset.
+ From: Enrico Scholz <enrico.scholz@wirtschaft.tu-chemnitz.de>
+
+Sun Jan 17 16:42:16 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Restore --batch, handle changing escape character
+ more cleanly. From Akim (as always).
+
+Thu Jan 14 16:47:41 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in (ALL_LINGUAS): Add no.
+ From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
+
+ * util/texi2dvi: Doc fix from Akim and do not always exit 1 from trap.
+ And it's 1999.
+
+ * doc/texinfo.txi (image): Document imagename.pdf.
+
+ * Apply this change from Eli:
+
+ 1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.h (meta_char_pos): New variable.
+ * makeinfo/makeinfo.c (init_paragraph): Initialize it.
+ (add_char): Use META to create a non-breakable space character.
+ (add_meta_char): New function.
+ (end_of_sentence_p): Don't handle characters at meta_char_pos as
+ normal sentence enders.
+ (flush_output): Only unMETA the non-breaking space character.
+ Reset meta_char_pos to zero.
+ (do_flush_right_indentation): Call adjust_braces_following.
+ (indent): Likewise.
+ (cm_value): Save and restore the value of meta_char_pos.
+ (expansion): Likewise.
+ * makeinfo/macro.c (me_execute_string_keep_state): Save and
+ restore the value of meta_char_pos.
+ * makeinfo/node.c (cm_node): Save and restore the value of
+ meta_char_pos.
+ * makeinfo/cmds.c (cm_accent): Make the dot we add due to
+ @dotaccent be a meta-character.
+ (cm_code, cm_dfn): Call add_meta_char to insert the closing
+ quote.
+ (cm_cite): Call add_char instead of add_word.
+
+Thu Jan 7 18:04:26 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Handle pdf files more cleanly. From Akim.
+
+Wed Jan 6 17:49:11 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): Check for .png also.
+
+Sun Dec 20 07:54:47 1998 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Add --pdf.
+
+ * util/texi2dvi: New option -@ to use @input and @nonstopmode, in
+ case texinfo is preloaded.
+ From: Khimenko Victor <khim@sch57.msk.ru>
+ Date: Sun, 20 Dec 1998 02:04:12 +0300 (EET)
+
+Sat Dec 19 17:37:37 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi (Multitable Column Widths): leading zero ok for
+ @columnfractions.
+
+ * util/texi2dvi: New version from Akim, plus --quiet is like
+ --batch, etc.
+
+Fri Dec 18 17:22:44 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document that the Texinfo source can't be
+ arbitrarily ordered (for print) even if all pointers are supplied.
+
+ * makeinfo/insertion.c (end_insertion): In itemize case,
+ close_insertion_paragraph so @end itemize cause a line break.
+ Report from: Sergei Pokrovsky <pok@nbsp.nsk.su>
+ Date: Sun, 22 Nov 1998 19:45:21 +0700 (GMT)
+
+Tue Dec 15 16:21:51 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: More fixes from Oleg.
+
+ * configure.in: Bump version to 3.12c for next pretest.
+
+ * util/install-info.c (open_possibly_compressed_file)
+ [STRIP_DOT_EXE]: logic for compression_program assignment
+ was reversed.
+ From: wlestes@wlestes.uncg.edu
+
+Sat Dec 12 18:02:48 1998 Karl Berry <karl@gnu.org>
+
+ * Merged these changes from Andreas:
+
+1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/node.c (cm_node): When searching for @menu don't
+ require a space after it.
+
+1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/cmds.c (cm_top): free top_name only after done using it.
+
+Sat Dec 12 15:40:13 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Various typos and fixes from Oleg.
+
+ * doc/texinfo.txi: Move @node's outside of @ifinfo for the sake of
+ HTML processing.
+
+ * doc/texinfo.txi (titlepage): @pxref was not in parens. From Oleg.
+
+Sun Dec 6 16:49:09 1998 Karl Berry <karl@gnu.org>
+
+ * dir-example: Amd is now am-utils.
+
+ * doc/Makefile.am: Reinstate help2man invocations for development.
+
+ * doc/texinfo.txi: Document @set...contentsaftertitlepage (from kama).
+ Fix incorrect sense for @image and Hungariam typo (from Oleg).
+
+ * lib/system.h: #include libintl.h here instead of acconfig.h, so
+ the system include files have a chance to #define NULL
+ before it does.
+ * acconfig.h: Remove libintl.h and #defines from here.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * info/signals.c: Start #ifdef's in column one for cc on sysv68
+ (m68k-motorola-sysv).
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * info/filesys.c (is_dir_name): use strcpy instead of automatic
+ array initialization.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * configure.in (ALL_LINGUAS): add ru.
+
+Fri Dec 4 08:12:11 1998 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c: Gettextize the help buffer string.
+
+Sun Nov 29 17:12:35 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Use @ifnottex rather than @ifinfo for @top.
+ (makeinfo top): document this.
+
+ * doc/info-stnd.texi,
+ * doc/info.texi: Use @ifnottex rather than @ifinfo for @top.
+
+ * makeinfo/insertion.c (cm_menu): Implicitly insert @top command
+ so we can construct the node tree as usual when we see @menu
+ before @node. Probably this is when the input uses
+ @ifinfo instead of @ifnottex, as virtually all existing
+ manuals do.
+
+ * makeinfo/insertion.c (discard_insertions): Let any conditional
+ cross node boundary. (So the @top node can be wrapped
+ in @ifnottex, for example.)
+
+ * Installed these:
+
+1998-11-21 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (expansion): Save and restore
+ last_inserted_character and last_char_was_newline.
+
+ * makeinfo/cmds.c (cm_dircategory): Kill any indentation before
+ INFO-DIR-SECTION. install-info relies on this.
+
+1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/multi.c (struct env): Add meta_char_pos member.
+ (select_output_environment): Save and restore meta_char_pos.
+ (out_char): Output characters by switching environment to #0 and
+ calling insert. Call flush_output when a newline is output.
+ (output_multitable_row): Update the current environment's
+ output_paragraph_offset as well, after removing trailing
+ whitespace. Fix typo in loop index.
+ (do_multitable): Call close_single_paragraph.
+ (end_multitable): Call close_insertion_paragraph. Don't output
+ an extra newline.
+
+1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.h (meta_char_pos): New variable.
+ * makeinfo/makeinfo.c (init_paragraph): Initialize it.
+ (add_char): Use META to create a non-breakable space character.
+ (add_meta_char): New function.
+ (end_of_sentence_p): Don't handle characters at meta_char_pos as
+ normal sentence enders.
+ (flush_output): Only unMETA the non-breaking space character.
+ Reset meta_char_pos to zero.
+ (do_flush_right_indentation): Call adjust_braces_following.
+ (indent): Likewise.
+ (cm_value): Save and restore the value of meta_char_pos.
+ (expansion): Likewise.
+ * makeinfo/macro.c (me_execute_string_keep_state): Save and
+ restore the value of meta_char_pos.
+ * makeinfo/node.c (cm_node): Save and restore the value of
+ meta_char_pos.
+ * makeinfo/cmds.c (cm_accent): Make the dot we add due to
+ @dotaccent be a meta-character.
+ (cm_code, cm_dfn): Call add_meta_char to insert the closing
+ quote.
+ (cm_cite): Call add_char instead of add_word.
+
+Sun Nov 29 16:30:06 1998 Karl Berry <karl@gnu.org>
+
+ * info/info.h,
+ * info/footnotes.h (FOOTNOTE_LABEL),
+ * info/indices.c (APROPOS_NONE): Use N_ rather than _.
+
+ * info/infodoc.c (create_internal_info_help_node,
+ function_documentation): Do not translate the empty string.
+ Date: Fri, 25 Sep 1998 15:09:42 +0400
+ From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>
+
+ * doc/info-stnd.texi: Mention PRIOR as another alias for
+ PREVIOUS/PageUp.
+
+ * doc/texinfo.txi: @emph produces _emph_ not *emph*. Spurious
+ junk before makeinfo bison example.
+ From: tihonov@ffke-campus.mipt.ru.
+
+1998-11-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/defun.c (defun_internal): Don't expand the arguments to
+ @defun and its ilk.
+
+ * makeinfo/makeinfo.c (expansion): Copy the name of the currently-
+ executing command and restore it after expansion.
+
+Sun Nov 15 17:40:51 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Rearrange usage, allow -v for verbose, only
+ output `Making' line when verbose.
+ * makeinfo/makeinfo.h (process_html, process_info, process_tex):
+ declare.
+ * makeinfo/cmds.c: Use conditional commands.
+ * makeinfo/insertion.c (find_type_from_name): Handle rawhtml and
+ rawtex.
+ (conditional commands): Allow individual switching on and off.
+
+ * makeinfo/insertion.h: Declare conditionals.
+
+1998-11-14 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (begin_insertion, end_insertion): Use <pre>
+ to convert @display and @smalldisplay into HTML.
+
+ * makeinfo/cmds.c (cm_asterisk): Don't insert an extra newline in
+ HTML mode, since input includes a newline right after the @*.
+ (cm_sp): Output "<br><p>\n" as many times as the argument says.
+ (cm_url): Don't include "<a href=" in the anchor text in HTML
+ output.
+
+ * makeinfo/makeinfo.c (cm_pxref): Don't add a period after @pxref
+ if in HTML mode.
+ (get_rest_of_line): Accept an additional argument EXPAND, and
+ expand the rest of line if it's non-zero. All callers changed.
+ (close_paragraph): When in HTML mode, honor the formatting of the
+ source paragraphs by generating "<p>" for every closed paragraph;
+ follow it by as many "<p>"'s as paragraph_spacing specifies.
+
+Sat Nov 14 17:38:27 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c: Use <ul compact> instead of deprecated <menu>.
+ Omit extra <li> after the menu beginning.
+
+ * makeinfo/index.c: Use <ul compact> instead of deprecated <menu>.
+
+Thu Nov 12 16:33:09 1998 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): add djgpp/config.sed.
+
+ * info/terminal.c: #include <sys/ioctl.h> to define TIOCGWINSZ
+ under LynxOS. From: Marius Groeger <mag@sysgo.de>.
+
+1998-11-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/insertion.c (begin_insertion): Correctly handle
+ ifnottex and ifnothtml.
+ (end_insertion): Likewise.
+
+Sun Nov 8 17:30:23 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/index.c,
+ * makeinfo/insertion.c: Menu is special to Info.
+ * makeinfo/node.c: Top is a special name, don't translate it.
+ * info/session.c (info_top_node): Top is a special name, don't
+ translate it.
+ From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>.
+
+Fri Nov 6 17:18:43 1998 Karl Berry <karl@gnu.org>
+
+ * configure.in: Version 3.12b.
+
+ * util/texi2dvi: Fixes from Eli and Christoph Martin.
+
+ Mon Oct 5 13:58:53 1998 Dave Glowacki <dglo@ssec.wisc.edu>
+ * util/install-info.c: Fix off-by-one error in findlines()
+
+ * util/texindex.c (usage): avoid trigraph until Ulrich fixes
+ po2tbl.sed.in. From Paul Eggert.
+
+1998-11-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't bypass the test that an
+ xref ends with a period or a comma if the reference has a single
+ argument.
+
+1998-10-31 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (end_insertion): Don't decrement
+ in_fixed_width_font when leaving a menu, the previous value is
+ restored by pop_insertion.
+
+ * makeinfo/makeinfo.c (add_char): Don't increment output_column
+ twice when a newline is inserted into the output.
+
+ * doc/texinfo.txi (emph & strong): Document the use of underscores
+ for @emph in the Info output.
+
+1998-10-30 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.bat: Make sure intl/po2tblsed.in exists before we
+ begin the configure boogie.
+ * djgpp/config.sed: Sed script, to be run by config.bat.
+
+ * doc/info-stnd.texi (Node Commands): Document the new G command.
+
+ * info/session.c (info_follow_menus): Step over a possible leading
+ space in a menu entry in menus[].
+ (split_list_of_nodenames): Renamed from split_words. Split the
+ string on commas, not on spaces, since a menu entry can have
+ embedded whitespace. Get past the null byte after inserting it.
+ (info_menu_sequence): Don't crash if there's no DIR node; try
+ using Top of the current Info file, and if that doesn't work
+ either, throw an error.
+
+ * util/texi2dvi: Use $path_sep in TEXINPUTS. Don't include any
+ dots in $tmpdir, 8+3 filesystems won't like that.
+
+ * makeinfo/makeinfo.c (reader_loop): Expand any macros in a menu
+ entry when creating a <menu> item for HTML. Fix an off-by-one
+ error in counting input lines.
+
+ * makeinfo/files.c (expand_filename): Don't treat .foo/bar as
+ absolute file name.
+
+ * makeinfo/makeinfo.c (add_char): Use strncpy instead of memcpy,
+ since the buffers overlap. If the line being refilled includes
+ nothing but the indentation and the word being added, do NOT add
+ an extra newline.
+
+ * util/install-info.c (strip_info_suffix, menu_item_equal,
+ open_possibly_compressed_file) [__MSDOS__]: Allow .inz and .igz as
+ suffuxes for compressed files.
+ (open_possibly_compressed_file): Return an indication whether we
+ opened a file or a pipe. Use FOPEN_RBIN from system.h.
+ [STRIP_DOT_EXE]: Use gzip.exe with an explicit .exe extension.
+ [O_BINARY]: If the file is not compressed, switch its stream to
+ text mode.
+ (readfile): Close the file or the pipe.
+ (output_dirfile): Call pclose to actually run the compressor.
+
+Thu Nov 5 08:33:06 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: effect -> affect
+ From: Eric Hanchrow <offby1@blarg.net>
+
+Tue Nov 3 14:26:59 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): Allocate enough space for the
+ zero byte.
+
+ * doc/texinfo.txi: Document epsf.tex standard location.
+
+Tue Oct 27 10:45:47 1998 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (TEXINFO_TEX): add definition.
+
+ * doc/info-stnd.texi: Avoid unnecessary overfull boxes from
+ examples.
+
+ * doc/Makefile.am (install-data-local): missing ".
+
+ * doc/Makefile.am: Don't try to run help2man in distribution.
+
+Mon Oct 26 13:43:53 1998 Karl Berry <karl@gnu.org>
+
+ * configure.in (TEXMF): lose this whole block. It is too painful
+ to maintain with the different tex installations out there.
+
+ * util/Makefile.am (EXTRA_DIST): update-info renamed to
+ fix-info-dir.
+
+ * makeinfo/footnote.h: Doc fix.
+
+ * makeinfo/multi.c: #include "insertion.h"
+ * makeinfo/cmds.c: #include "node.h"
+ * makeinfo/makeinfo.h,
+ * makeinfo/makeinfo.c: Move globals, functions for insertions and
+ nodes.
+ * makeinfo/defun.c: #include "insertion.h"
+ * makeinfo/Makefile.am: Add insertion.[ch], node.[ch].
+ * node.[ch], insertion.[ch]: New files.
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h: Move globals for cmds.h.
+ * makeinfo/index.h: Include cmds.h.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): Add cmds.h, cmds.c.
+ * cmds.c, cmds.h: New files.
+
+Sat Oct 24 17:28:14 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h: Globals for files.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add files.[ch].
+
+Tue Oct 20 17:03:10 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add macro.c and
+ macro.h.
+ * makeinfo/makeinfo.c: Move macro code to macro.h and macro.c.
+ * makeinfo/makeinfo.h: Move macro stuff to macro.h, expose global
+ last_char_was_newline for macro.c.
+ * makeinfo/index.c,
+ * makeinfo/footnote.c: #include macro.h.
+
+Wed Oct 7 16:24:07 1998 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: For now don't include version.texi due to
+ automake error.
+
+ * makeinfo/index.h: #include makeinfo.h for sake of COMMAND type.
+ * makeinfo/index.c: No need to include makeinfo.h, index.h does
+ now.
+
+ * makeinfo/makeinfo.c: Move footnote code to footnote.c.
+ * makeinfo/makeinfo.h: Globals for footnote.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add footnote.[ch].
+
+ * makeinfo/makeinfo.c: Move defun code to defun.c, necessary
+ global to makeinfo.h.
+ * makeinfo/makeinfo.h (default_indentation_increment): move here
+ for defun.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add defun.c.
+
+ * Makefile.am: Doc fix.
+
+ * configure.in (AC_OUTPUT): generate makeinfo/tests/Makefile.
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add index.[ch].
+
+Fri Oct 2 17:42:26 1998 Karl Berry <karl@gnu.org>
+
+ * lib/system.h (STREQ): new macro.
+
+Thu Oct 1 09:26:57 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Delete spare copy since out of date,
+ add makeinfo html to menu,
+ detailmenu doesn't take braces in summary.
+
+Wed Sep 30 14:38:21 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Remove != NULL comparisons,
+ xmalloc/xrealloc casts, assignments in if statements.
+
+Wed Sep 30 14:16:01 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Remove NULL casts and parentheses in return
+ statements.
+
+ * makeinfo/makeinfo.c (add_link): Don't add a link if the node is null.
+ (reader_loop): don't glean_node_from_menu if detailmenu, even if html.
+ Various formatting changes.
+
+ * doc/help2man: Always exit successfully.
+
+ * makeinfo/Makefile.am (SUBDIRS): add.
+ (makeinfo_SOURCES): no more html.h.
+
+Fri Sep 11 18:47:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Fiddle with html output.
+
+1998-09-07 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (maybe_update_execution_strings): Only
+ reallocate TEXT if the existing storage is too small, otherwise
+ leave TEXT alone.
+ (replace_with_expansion): Call maybe_update_execution_strings to
+ reallocate input_text if we are executing_string, since storage
+ for execution_string is assumed to be large enough to hold every
+ possible string.
+ (me_execute_string): xstrdup the argument, so callees could freely
+ relocate it as needed.
+
+1998-09-06 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (replace_with_expansion): Don't remember
+ macro-expansion pointers if we are executing_string.
+
+1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/filesys.c (info_suffixes): Put the empty suffix last in the
+ list, so that `foo.info' is found before `foo', if both exist.
+
+1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (maybe_update_execution_strings): New
+ function, updates an entry in execution_strings[] array after
+ input_text is relocated by replace_with_expansion.
+ (replace_with_expansion): Call it.
+
+1998-09-04 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (expand_macro): If a macro is called with
+ too many arguments, return NULL and print the line number where
+ the call begins.
+ (execute_macro): If expand_macro returns NULL, return
+ immediately.
+
+Sun Sep 6 19:11:28 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/multi.c: Html output. Specifically, these changes:
+
+ Fri Jul 4 22:58:29 1997 Dave Love <d.love@dl.ac.uk>
+
+ * doc/makeinfo.texi: Document HTML output.
+
+ * makeinfo/makeinfo.c: Wrap strings in _() in bits changed for
+ HTML.
+ (cm_image): Generate <img> for HTML.
+
+ Sun Jun 22 22:50:07 1997 Dave Love <d.love@dl.ac.uk>
+
+ * makeinfo/makeinfo.c (NAMED_NODE_ANCHORS): New define.
+ (title, outstanding_node, node_number, node_node_references,
+ escape_html, ifinfo_as_html): New variables.
+ (tentry.number, node_ref.number, fn.number): New fields.
+ (CommandTable): Various additions and alterations for HTML.
+ (long_options): Add html and no-info-as-html.
+ (main): Extra code for HTML.
+ (usage): Add HTML stuff.
+ (expand_filename): Deal with .html.
+ (escape_string): New procedure.
+ (convert_from_loaded_file): Extra code for HTML.
+ (init_internals): Call free_node_references, initialize
+ node_number.
+ (reader_loop): Process menu items for HTML hyperlinks. Escape
+ HTML special characters.
+ (add_char): Code for line breaks and paragraph insertions in
+ HTML.
+ (flush_output): Don't UNMETA for HTML.
+ (indent): Do nothing for HTML.
+ (current_item_function): Case for ifhtml.
+ (begin_insertion): Deal with HTML in various cases.
+ (insert_html_tag): new procedure.
+ (cm_asterisk, cm_copyright, cm_accent, cm_code, cm_kbd,
+ cm_angle_brackets, cm_var, cm_defn, cm_var, cm_emph, cm_string,
+ cm_cite, cm_top, cm_xref, cm_inforef, cm_uref, cm_direntry,
+ cm_ifinfo, cm_item, process_defun_args, defun_internal, cm_sp,
+ cm_dircategory, cm_center, cm_result, cm_expansion, cm_error,
+ cm_exdent, index_add_arg, make_index_entries_unique,
+ cm_printindex, cm_footnote, output_pending_notes,
+ me_execute_string): Code for HTML.
+ (cm_shyph): New procedure.
+ (cm_special_char): Add start, end args. Code for HTML.
+ (cm_email, cm_url, cm_i, cm_b, cm_r): New procedures.
+ (sectioning_html): New procedure.
+ (sectioning_underscore): Use it.
+ (add_link): New procedure.
+ (remember_node): Add number field and update node_number. Note
+ next, etc. nodes for HTML.
+ (add_escaped_anchor_name, add_anchor_name): New procedures.
+ (cm_node): New code for HTML. Move some other code to more
+ useful place.
+ (remember_node_reference): Add number field and update
+ node_number.
+ (remember_node_node_reference, free_node_node_references,
+ number_of_node): New procedures.
+ (cm_ifhtml, cm_html): New procedures.
+ (expansion): Take care of HTML escaping.
+ (cm_settitle): New procedure.
+ (remember_note): Set number field.
+
+ Declare various procedures in advance.
+
+ * doc/texinfo.txi: Makeinfo --html documentation from Dave Love.
+ Typo fixes from: Paul DuBois <dubois@primate.wisc.edu>.
+
+Thu Sep 3 11:11:01 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
+
+1998-08-28 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_uref, cm_email): Use get_xref_token to
+ gather arguments.
+ (get_xref_token): Keep track of input line number when expanding
+ xref arguments.
+
+Tue Aug 25 14:36:44 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Exit the script if TeX exits with bad status.
+
+1998-08-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/indices.c (info_index_apropos): In the *Apropos*
+ menu, print the label first, then the Info file name and
+ the node name. Make the Info file name part of the menu
+ entry, so that all entries are distinct.
+ (apropos_in_all_indices): Scan each Info file only once, thus
+ avoiding multiple identical entries in the *Apropos* menu.
+ Free xstrdup'ed buffer, to avoid leaking memory.
+
+Thu Aug 13 12:54:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Set version to 3.12a.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): bump required version to 1.3,
+ add readme-alpha option.
+
+ * util/texindex.c (program_name),
+ * util/install-info.c (progname),
+ * info/info.c (program_name),
+ * makeinfo/makeinfo.c (progname): hardwire per coding standards.
+ * doc/help2man: Remove ginfo special case.
+
+Tue Aug 11 17:41:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/gen-dir-node: New version from drk@sgi.com.
+
+Mon Aug 10 13:55:37 1998 Karl Berry <karl@cs.umb.edu>
+
+ * dir-example: Add entries from Linux.
+
+ * info/info-utils.c (get_window_of_node): New fn.
+ * info/info-utils.h (get_window_of_node): New fn.
+ * (strchr,...) [!HAVE_STRCHR]: remove these #defines.
+ * info/infodoc.c (info_find_or_create_help_window): Call
+ get_window_of_node instead of get_internal_info_window.
+ This is so pressing ? repeatedly will always get to the same Help
+ window instead of popping up new ones.
+ From: "Brian J. Fox" <bfox@prospero.datawave.net>
+
+ * info/signals.c: Ignore SIGWINCH if we're in the midst of it.
+ We might get a whole lot of them. Noticed on Afterstep.
+ From: "Brian J. Fox" <bfox@prospero.datawave.net>
+
+1998-07-25 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
+
+ * install-info.c (findlines): Allocate room for one more line,
+ to avoid crash if dir file has exactly 512 lines.
+
+Tue Aug 4 07:14:35 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c: Improve help message.
+
+ * dir-example: Add mtools.
+
+Fri Jul 31 13:29:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/help2man: Various hacks for texinfo.
+
+ * doc/texinfo.txi: Make dir entries more consistent.
+
+ * doc/Makefile.am: Generate man pages with help2man.
+
+ * util/texi2dvi,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c,
+ * util/texindex.c: Improve help message.
+
+ * doc/info.5: Initial.
+ * doc/texinfo.5: Section 5.
+
+Thu Jul 30 17:31:42 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info-stnd.texi,
+ * doc/texinfo.txi: Use Automake-standard VERSION and UPDATED.
+
+Wed Jul 29 17:34:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Describe macro limitations a bit more.
+
+ * dir-example: Correct makeinfo link.
+
+Tue Jul 28 16:44:06 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (remember_brace_1): xstrdup command, since
+ we free it later.
+
+Mon Jul 27 16:27:30 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (node_printed_rep): New fn.
+ Change calls.
+
+ * info/session.c (info_set_node_of_window): Simplify by taking new
+ argument to say whether to call
+ set_remembered_pagetop_and_point. Change calls.
+ * info/indices.c: Change call.
+
+ * info/info.c: Rewrite initial menu-sequence following stuff as a
+ function in session.c, and call it.
+
+ * info/infomap.c: Define `G' as info_menu_sequence.
+ * info/session.h (info_menu_sequence, info_follow_menus): declare
+ new fns.
+ * info/session.c (info_follow_menus, split_words,
+ * info_menu_sequence): New functions for new command.
+
+Thu Jul 23 16:44:42 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (info_scroll_other_window_backward): new command.
+ * info/infomap.c (initialize_info_keymaps): bind M-DEL and M-prior to
+ scroll-other-window-backward.
+ Report from: Vladimir Alexiev <vladimir@cs.ualberta.ca>
+ Date: Tue, 2 Dec 1997 14:54:30 -0700
+
+ * info/info-utils.c (printed_representation): If ISO_Latin_p, show
+ characters as-is. Don't assume iscntrl(x) returns false
+ for meta characters.
+ Report from: Francois Pinard <pinard@iro.umontreal.ca>
+ Date: 15 Jan 1998 17:48:51 -0500
+
+ * info/pcterm.c (pc_initialize_terminal): now no need to set it
+ here.
+ * info/info-utils.c (ISO_Latin_p): set to 1 by default.
+
+ * doc/info-stnd.texi: Document SPC, add goto-node anchor.
+
+Wed Jul 22 18:58:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/window.c (message_buffer_to_node),
+ * info/session.c (kill_node),
+ * info/nodes.c (info_get_node_of_file_buffer,
+ info_node_of_file_buffer_tags),
+ * info/man.c (manpage_node_of_file_buffer),
+ * info/footnotes.c (make_footnotes_node): set display_pos member
+ in new node.
+
+Tue Jul 21 14:04:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ (all of this is to make SPC/DEL not move outside the current
+ document, i.e., not up through dir)
+ * info/info-utils.h (info_label_was_found): Move from here.
+ * (info_prev_label_of_node): Don't use it any more.
+ * info/session.c (INFO_LABEL_WAS_FOUND): Move to here, add test
+ for filename not dir.
+ (forward_move_node_structure): Change calls, notice if no more nodes.
+ (backward_move_node_structure): Check for moving outside current
+ document to dir.
+ * info/filesys.c (compression_suffixes): Add bz2 for bunzip2.
+ (is_dir_name): New fn.
+ * info/filesys.h: Declare it.
+ * info/nodes.c (info_get_node, info_find_file_internal): Use it.
+
+ * makeinfo/makeinfo.c: Set in_fixed_width_font to avoid munging
+ node names.
+
+Sat Jul 18 17:14:10 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/man.c (reap_children): Call wait (NULL), since we don't
+ actually use the return status for anything. NEXTSTEP 3.3
+ doesn't like an int * even though that is the POSIX
+ specification.
+ Date: Fri, 22 Aug 1997 13:55:42 +0200
+ From: "Felix H. Gatzemeier" <fxg@imib.rwth-aachen.de>
+ Via: Thomas Esser <te@informatik.uni-hannover.de>
+
+ * info/session.c (kill_node): Restore point when we go back.
+
+Thu Jul 16 18:54:04 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (BRACE_ELEMENT): Add `command' to the save
+ stack.
+ (MAYBE_BRACE_ARGS): New possibility, somewhat like TeX's
+ next-token-as-argument.
+ (command_table): Use cm_accent and MAYBE_BRACE_ARGS for all accents.
+ (read_command): Implement MAYBE_BRACE_ARGS.
+ (init_brace_stack): save current command.
+ (pop_and_call_brace): restore current command.
+ (cm_accent): move almost all accent characters to after the argument.
+ Suggested by Fran,cois.
+
+ * info/info.c (version_string): Remove defn.
+ Change call for --version option.
+ * info/session.c (display_startup_message_and_start): Just use
+ VERSION.
+ * info/info.h (version_string): Remove decl.
+
+Tue Jul 14 16:46:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.h: Doc fix.
+
+ * makeinfo/makeinfo.c (validate_file): Don't complain about
+ unreferenced anchors.
+
+ * doc/texinfo.txi: Document @anchor.
+
+Sun Jul 12 14:14:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (remember_node): Only set `current_node' if
+ this is not an anchor.
+
+ * info/nodes.c (get_tags_of_indirect_tags_table): Don't set
+ nodelen to -1 when fixing up the subfile entries, it might be 0
+ from an anchor.
+
+ * info/nodes.c (find_node_of_anchor): Offset display_pos for
+ anchor tags by the amount that node references are off by (- 1).
+
+Sat Jul 11 17:37:18 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_anchor): Add output_column for anchors
+ embedded in a line.
+
+Fri Jul 10 16:28:21 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (info_menu_or_ref_item): Don't search for the
+ xref text if it's an anchor.
+ * info/nodes.h (N_FromAnchor): New NODE flag.
+ * info/nodes.c (find_node_of_anchor): New fn.
+ (info_node_of_file_buffer_tags): Handle anchor case.
+
+Wed Jul 8 17:48:59 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/window.c (window_set_node_of_window): Set window->point to
+ node->display_pos.
+ Remove unneeded casts.
+
+Tue Jul 7 08:06:14 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (add_word_args) [!VA_SPRINTF]: Use buffer,
+ not the undeclared temp_string.
+ From: Tobias Naehring <naehring@eeetw3.et.tu-dresden.de>
+ To: egcs-bugs@cygnus.com
+ Date: Mon, 6 Jul 98 13:51:55 +0200
+
+Mon Jul 6 17:43:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/nodes.h (NODE): Add display_pos member.
+
+Sun Jul 5 08:17:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/nodes.h (INFO_REF_LABEL): Define.
+
+ * util/texi2dvi: Rationalize use of `index' vs. more general
+ `xref'.
+
+Thu Jul 2 18:53:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Don't translate -Footnotes, it's a magic
+ cookie. From Eli.
+
+Wed Jul 1 08:42:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (url): Missing word `command'.
+
+Tue Jun 30 10:35:48 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c: Missing \n in try --help msg.
+
+ * makeinfo/makeinfo.c (cm_anchor): New fn for new cmd.
+ (TAG_FLAG_ANCHOR): New flag for tag entries.
+ (write_tag_table_internal): Handle anchor case.
+ (TAG_FLAG_{{PREV,NEXT,UP}_ERROR,NO_WARN,IS_TOP}): Add TAG_FLAG_ prefix
+ for clarity, change uses.
+
+ * doc/texinfo.txi: Remove warning about footnotes with @item, that
+ works now.
+
+Mon Jun 29 10:17:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (AM_CONFIG_HEADER): Use second argument to be 8.3
+ compliant.
+ * config.h.in: Rename to config.in.
+
+ * info/Makefile.am (EXTRA_DIST),
+ * info/terminal.c [__MSDOS__]: Change #include to pcterm.c and
+ rename file.
+
+Sun Jun 28 14:29:27 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/Makefile.am (EXTRA_DIST): Add pc_term.c.
+
+ * makeinfo/makeinfo.c (HAVE_MACROS): Remove this conditional, we
+ always want macros now.
+
+ * info/indices.c: Copyright.
+
+1998-06-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c: (only_macro_expansion): New variable,
+ suppresses all expansions except macros.
+ (replace_with_expansion): New function, replaces a portion of
+ input text with its expansion. Avoids moving the text around if
+ we are positive it will expand into itself. If the length of the
+ expanded text is the same as the length of the original text, just
+ replaces the original text without moving the rest. Resyncs the
+ remembered text pointers with the realloc'ed input_text, when it
+ is realloc'ed.
+ (reader_loop): When only_macro_expansion is non-zero, only handle
+ macros, but leave the rest of input intact.
+ (read_command): Now returns an int, zero means no known command or
+ macro is found after the prefix character; all callers changed.
+ Support operation under non-zero only_macro_expansion.
+ (cm_node): Expand only the macros in the @node line. Allocate and
+ generate the macro-expanded @node line in one swell whoop.
+ (glean_node_from_menu): Expand macros in menu entries.
+ (get_xref_token): A new argument EXPAND, when non-zero, means
+ expand macros in the entire brace-delimited argument before
+ looking for the next comma; all callers changed.
+ (expansion): Save and restore additional state variables important
+ for output generation machinery. Disable indentation and filling
+ during the recursive expansion, so that the output buffer offset
+ is not invalidated by filling.
+ (me_execute_string_keep_state): New function, calls
+ me_execute_string, but saves and restores state variables
+ important for output generation, so that -E doesn't change the
+ generated Info output.
+ (index_add_arg, cm_footnote): Call me_execute_string_keep_state.
+ (expand_macro): New function, returns the macro expansion as a
+ malloc'ed string.
+ (execute_macro): Call expand_macro.
+ (me_execute_string): Avoid memory leak by freeing input_filename.
+ (get_until_in_braces, replace_with_expansion, add_char,
+ cm_footnote, cm_macro, cm_unmacro, get_brace_args,
+ extract_colon_unit): Use the faster memcpy/memmove instead of
+ strncpy.
+
+Sat Jun 27 14:18:54 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info.texi: Use @subsubsection instead of
+ @unnumberedsubsubsection, since it's in a numbered chapter.
+
+ * Started installation of following DOS patches from Eli.
+>1998-05-16 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/session.c (info_goto_node): Don't show the nodes of the
+> current Info file twice in *Completions*.
+> * info/echo-area.c (ea_possible_completions): Actually pass the
+> number of completions to printf_to_message_buffer.
+>
+> * info/man.c (manpage_node_of_file_buffer): xstrdup the nodename
+> member of manpage nodes, since the tags are freed and recomputed
+> when a new man page is added to *manpages* file_buffer.
+> (get_manpage_node): Recompute info_windows[]->nodes[] for all
+> windows showing the man pages after nodes[]->contents are
+> invalidated by reallocation of file_buffer->contents.
+>
+>1998-05-15 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (DEFAULT_INFO_PRINT_COMMAND) [__MSDOS__]: Define to
+> ">PRN".
+> * info/session.c (print_node): Support ">printer" in
+> INFO_PRINT_COMMAND, to mean write to the named file/device insead
+> of piping to it as a program.
+> (kill_node): Compare window in addition to the nodename, when
+> looking for the node to kill.
+>
+>1998-05-09 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (SET_SCREEN_SIZE_HELPER) [__MSDOS__]: Define a new
+> macro.
+> * info/m-x.c (set_screen_height): Use SET_SCREEN_SIZE_HELPER, if
+> defined. If the screen size did'n change, redisplay the previous
+> screen contents.
+>
+> * info/infomap.c (initialize_info_keymaps) [__MSDOS__]: Bind DEL
+> to ea_delete in the echo-area keymap.
+> * info/session.c (incremental_search): If the key is
+> isearch_terminate_search_key, but buffered input is pending, don't
+> gobble the ESC key.
+>
+> * info/info.c (main): Switch the order thet terminal_prep_terminal
+> and terminal_clear_screen are called, to make it consistent with
+> what initialize_info_session does when called with non-zero second
+> argument. Call terminal_unprep_terminal last, after moving the
+> cursor to the bottom of the screen. If user_filename is of the
+> form "d:foo", add "d:." to the INFOPATH, not "d:".
+>
+> * info/signals.c (initialize_info_signal_handler): Save old
+> SIGUSR1 handler.
+> (info_signal_handler): Handle SIGUSR1.
+>
+> * info/indices.c (info_apropos): Print the results to stdout.
+>
+>1998-05-02 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * makeinfo/makeinfo.c (ALSO_NULL_DEVICE): New macro, for alternate
+> null device name.
+>
+> * info/man.c (get_manpage_contents): Redirect stderr of the man
+> page formatter to the null device.
+> (executable_file_in_path): Use IS_SLASH.
+>
+> * info/session.c (info_gather_typeahead) [__DJGPP__]: Call
+> pc_term_chars_avail to get the number of pending characters.
+>
+> * info/filesys.c (convert_eols): New function, converts DOS-style
+> EOLs to a single Newline.
+> (filesys_read_info_file, filesys_read_compressed): Call it.
+> (filesys_read_compressed) [STRIP_DOT_EXE]: Use explicit .exe
+> suffix.
+> (filesys_read_compressed): Check return status of `pclose'.
+>
+>1998-05-01 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/filesys.c (filesys_read_info_file): Add additional
+> parameter: is_compressed. All callers changed.
+>
+> * makeinfo/makeinfo.c (convert_from_loaded_file): Compare file
+> names with FILENAME_CMP. Use NULL_DEVICE.
+> (cm_node): Compare file names with FILENAME_CMP.
+> * info/tilde.c (tilde_find_suffix, tilde_expand_word): Use
+> IS_SLASH.
+>
+> * info/pc_term.c: New file, handles the PC terminal on MS-DOS and
+> MS-Windows.
+> * info/terminal.c [__MSDOS__]: Include pc_term.c.
+> * info/Makefile.in (ginfo_SOURCES): Add pc_term.c
+> Add pc_term.c to dependencies of terminal.o.
+>
+> * info/session.c (info_get_input_char): Reassign tty after EOF
+> from a non-stdin input stream.
+>
+>1998-04-30 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/session.c (info_set_input_from_file): Use binary input.
+> (info_gc_file_buffers): Compare file names with FILENAME_CMP.
+> * info/search.c (skip_whitespace_and_newlines): Use
+> whitespace_or_newline macro instead of reinventing the wheel.
+> * info/nodes.c (info_find_file_internal): Use IS_ABSOLUTE and
+> FILENAME_CMP.
+> (info_load_file_internal): Call filename_non_directory to find out
+> where the basename begins.
+> (get_tags_of_indirect_tags_table): Call filename_non_directory.
+> containing_dir of "d:foo" is "d:.", not "d:".
+> (forget_info_file): Compare file names with FILENAME_CMP.
+> * info/nodemenu.c (get_visited_nodes): Use FILENAME_CMP to find
+> duplicate lines.
+>
+> * lib/system.h (PIPE_USE_FORK): New macro.
+> * info/man.c (get_manpage_contents): Use it to determine whether
+> to call pipe/fork/exec or popen/pclose to run the man page
+> formatter.
+> (executable_file_in_path): Search for the file with several known
+> extensions such as .exe, where appropriate.
+>
+> * lib/system.h (NULL_DEVICE): A new macro.
+> * info/makedoc.c (main): Use it.
+> (maybe_dump_tags): Switch output strem to binary mode when
+> appropriate.
+> (process_one_file): Update file_size after reading the file.
+>
+> * info/infodoc.c: Add TAB, RET, and `i' to the list of important
+> commands in info_internal_help_text.
+>
+> * info/info.c (main): Support the --speech-friendly option. Use
+> PATH_SEP to separate directories.
+> (info_short_help) [__MSDOS__]: Mention the --speech-friendly
+> option.
+>
+> * info/info-utils.c (filename_non_directory): Use HAVE_DRIVE and
+> IS_SLASH.
+> * info/indices.c (do_info_index_search, index_entry_exists): Use
+> FILENAME_CMP to compare file names.
+> * info/filesys.c: Add ".inf" to the list of known extensions.
+> Look for .z before .Z, for the sake of case-insensitive
+> filesystems. Add DOS-specific extensions to work around 8+3
+> namespace restrictions.
+> (info_absolute_file): New function.
+> (info_find_fullpath): Call it for candidates which are absolute
+> file names. Use IS_SLASH and IS_ABSOLUTE.
+> (info_file_in_path): Use IS_SLASH.
+> (extract_colon_unit, info_add_path): Use PATH_SEP instead of ":".
+> (lookup_info_filename): Compare file names with FILENAME_CMP.
+> (filesys_read_info_file): Read Info files in binary mode.
+> (filesys_decompressor_for_file): Read Info files in binary mode.
+> Compare file names with FILENAME_CMP. On MS-DOS, allow files
+> whose names end with a `z' be decompressed with gunzip.
+> * info/dribble.c (open_dribble_file): Open dribble file in
+> FOPEN_WBIN mode.
+> * info/dir.c (maybe_build_dir_node): Use IS_SLASH.
+> * util/texindex.c (maketempname): Put the numeric suffix after the
+> dot, to salvage 3 more characters on 8+3 filesystems.
+>
+>1998-04-29 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * util/texindex.c (main): Use IS_SLASH to find the basename of
+> argv[0]. Lose the .exe suffix, if any.
+> (decode_command): Look at $TEMP and $TMP in addition to $TMPDIR.
+> Use DEFAULT_TMPDIR.
+> * util/texi2dvi: Use either `:' or `;' as directory separator in
+> TEXINPUTS, computed at run time. Save previous versions of index
+> files in a separate backup directory.
+> * util/install-info.c (main): Support backslashes in file names by
+> using IS_SLASH. Avoid recomputing length of infile_basename
+> unnecessarily. Use FILENAME_CMP for comparing file names
+> case-insensitively, where appropriate. Allow foo.inf as well as
+> foo.info to be an Info file name.
+> * lib/system.h (PATH_SEP, STRIP_DOT_EXE, FILENAME_CMPN,
+> DEFAULT_TMPDIR): New macros.
+>
+>1998-04-25 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (O_BINARY, SET_BINARY, FOPEN_RBIN, FOPEN_WBIN,
+> IS_SLASH, HAVE_DRIVE, IS_ABSOLUTE, FILENAME_CMP, PATH_SEP,
+> HAVE_LONG_FILENAMES): New macros.
+> * makeinfo/makeinfo.c (find_and_load): Use O_BINARY to decide when
+> read returning a value different from what st_size says is not an
+> error. Realloc the buffer after we've read the file.
+> (skip_directory_part): New function, skips leading directory in a
+> way that works on DOSISH systems.
+> (filename_non_directory, pathname_part): Call it.
+> (filename_part): Call filename_non_directory.
+> (expand_filename, full_pathname): Use IS_ABSOLUTE and IS_SLASH.
+> (convert_from_file): Check .txi extension first.
+> (split_file): Support splitting output files on 8+3 filesystems.
+> (main, extract_colon_unit): Use PATH_SEP instead of ':'.
+> (get_file_info_in_path): Use IS_ABSOLUTE and IS_SLASH.
+
+
+ * doc/texinfo.txi: Changes from Eli for MS-DOS stuff.
+ * doc/info-stnd.texi: Fixes from Eli: he documented all the
+ missing keys and command-line options, corrected
+ inaccuracies (probably left-overs from previous versions),
+ and added some clarifications where I thought the manual
+ was not clear enough.
+ * Makefile.am (EXTRA_DIST): Add djgpp files.
+
+ * makeinfo/makeinfo.c: New no-op commands @setcontentsaftertitlepage
+ and @setshortcontentsaftertitlepage.
+ * doc/texinfo.txi: Document the new @set{,short}contentsaftertitlepage
+ commands and the possibility of putting @contents and
+ @shortcontents after @end titlepage.
+
+ * util/texi2dvi: Check that the toc file has not changed (as well
+ as .aux and .??).
+
+Thu Jun 25 16:58:46 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document new commands @env, @command, @option.
+
+ * makeinfo/makeinfo.c (option, command, env): New markup commands, same
+ as @code in info.
+
+Wed Jun 24 15:39:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: New no-op command @acronym.
+
+ * doc/texinfo.txi: Document new command @acronym.
+
+ * util/install-info.c (strip_info_suffix, menu_item_equal): New fns.
+ (main): Call them instead of doing the filename test inline; all the
+ .info variations are too confusing to write out twice.
+
+Tue Jun 23 18:01:40 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Fix some overfull boxes.
+
+Mon Jun 22 19:22:17 1998 Karl Berry <karl@north>
+
+ * configure.in: Remove AC_LINK_FILES call, that was an old gettext
+ thing, no longer necessary, and causes problems with Autoconf.
+
+Sun Jun 14 07:00:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Indent options so help2man will work. From Akim.
+
+Sat Jun 13 10:45:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (ALL_LINGUAS): Add nl.
+
+ * util/texi2dvi: Avoid tabs.
+
+Wed Jun 10 17:38:21 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (gen_defindex): Use xmalloc instead of alloca.
+ This was our only use of alloca, so also remove all the #if junk
+ at the beginning to define it.
+
+ * makeinfo/makeinfo.c: Fix grammar in multiply-defined-node error
+ message.
+
+Tue Jun 9 17:53:54 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document new commands @smallformat,
+ @smalldisplay.
+
+ * makeinfo/makeinfo.c: New commands @smalldisplay and @smallformat.
+ Suggestion from: Eli Zaretskii <eliz@is.elta.co.il>.
+
+ * makeinfo/makeinfo.h (insertion_type, insertion_type_names):
+ Declare smalldisplay and smallformat.
+
+Mon Jun 8 07:57:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document possibility of combining @titlefont
+ and @title. From Eli.
+
+ * util/texi2dvi: Set verbose to : instead of false by default.
+
+ * util/texi2dvi: Missing \\ for sed with -t text. From Akim.
+
+Sun Jun 7 13:02:13 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document @pagesizes and texidvi -t.
+
+ * makeinfo/makeinfo.c: Define no-op @pagesizes and @afourpaper.
+ (major_version, minor_version): Remove these globals, just use the
+ Texinfo package version.
+ (print_version_info): Ditto.
+
+Fri Jun 5 17:54:16 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Change texi2dvi documentation a bit.
+
+ * util/texi2dvi: Handle --option=argument style of specifying
+ arguments.
+
+Sat May 30 14:01:37 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: More.
+
+ * util/install-info.c (open_possibly_compressed_file): Finish
+ implementation.
+
+ * doc/texinfo.txi: Document install-info compression support.
+
+Fri May 29 08:01:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (open_possibly_compressed_file): Initial
+ implementation.
+
+ * util/install-info.c (output_dirfile): Attempt to write dir.gz if
+ that's what we read.
+ (readfile): Pass back the actual opened filename, too.
+
+ * info/indices.c: Check in Eli's patch.
+
+Thu May 28 17:09:45 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (readfile): Set up to handle compressed
+ input (and output) files. Change callers.
+ Rearrange function order to avoid forward declarations.
+
+ * configure.in: Remove check for libz, we'll fork gzip instead.
+
+Tue May 26 18:01:13 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (print_help): Missing \n\ in help string.
+
+ * makeinfo/makeinfo.c (POST_SENTENCE): Rename from post_sentence.
+ Change calls.
+ (flush_output): Strip 8th bit if post_sentence char as well as space.
+ (cm_code, etc.): Change add_char calls for post_sentence chars to set
+ 8th bit.
+
+1998-05-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/indices.c (info_next_index_match): Call
+ info_set_node_of_window to display the node, so that footnotes are
+ displayed as well.
+
+Thu May 21 11:05:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (output_dirfile): New function, extracted
+ from the end of main.
+
+ * makeinfo/makeinfo.c (begin_insertion): Ignore @group in all the
+ example-like environments, not just @example. Otherwise the first
+ line in the environment is not indented correctly. Reported by rms.
+
+Wed May 20 17:44:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c: Doc fixes.
+
+ * util/install-info.c: Handle XEmacs-style dir entries:
+ * FILENAME::PROGRAM DESCRIPTION.
+ Date: Wed, 13 May 1998 13:58:28 +0900
+ From: KIRIYAMA Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
+
+ Also, do not set something_deleted on continuation lines; they are only
+ deleted if the entry was deleted.
+
+Tue May 19 17:22:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c: Do not read the dir file if we are only
+ deleting -- it might not exist, and we don't actually need it.
+ From: David Kaelbling <drk@sgi.com>
+ Date: Tue, 12 May 1998 11:05:26 -0400
+
+ * util/gen-dir-node:
+ From: David Kaelbling <drk@sgi.com>
+ Date: Tue, 12 May 1998 16:05:16 -0400 -
+ - The "dir" moobler header is slightly different from the default
+ dir file.
+ - If all files in ${infofiles} appear in the skeleton the last one
+ is processed twice.
+ - INFO-DIR-SECTION data is ignored.
+ - Don't generate entries for directories.
+
+Sat May 16 17:16:56 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_novalidate): New fn for new command
+ @novalidate, like --no-validate.
+
+Thu May 14 18:02:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document the @novalidate command.
+
+Wed May 13 17:47:20 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document limitation on @set/@value names in
+ index commands.
+
+Fri May 1 14:12:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (Command List): @deftypevar out of order.
+
+ * configure.in (ALL_LINGUAS): Add cs.
+
+Tue Apr 28 09:33:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (strcasecmp): This is in lib now.
+
+1998-04-26 Richard Stallman <rms@psilocin.gnu.org>
+
+ * util/install-info.c (print_help): Doc clarifications.
+
+Sun Apr 19 15:55:10 1998 Karl Berry <karl@cs.umb.edu>
+
+ * lib/system.h (strcasecmp, strncasecmp) [!HAVE_STR[N]CASECMP]:
+ Declare these.
+
+ * info/search.h (str[n]casecmp): Remove decl from here.
+
+ * configure.in (AC_REPLACE_FUNCS): Check for strcasecmp and
+ strncasecmp here.
+ (AC_CHECK_FUNCS): Instead of just strcasecmp here.
+
+ * configure.in (texconfig): Use TEXMFMAIN in preference to TEXMF
+ for post-0.4 teTeX.
+
+Wed Apr 15 17:20:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (Reporting Bugs): New section.
+ Suggestion from: Andrew Shapira <shapiraa@cs.rpi.edu>
+ Date: Mon, 4 Aug 1997 19:06:06 -0400 (EDT)
+
+ * info/infomap.c: Define / to be info_search.
+ Suggestion from: Egil Kvaleberg <egil@kvaleberg.no>
+ Date: Fri, 1 Aug 1997 08:16:45 +0200 (MET DST)
+
+ * doc/texinfo.txi (uref): Document reason for not using <URL: format.
+ Also use ftp.gnu.org instead of ftp.gnu.ai.mit.edu throughout.
+
+Tue Apr 14 10:43:39 1998 Karl Berry <karl@cs.umb.edu>
+
+ 1998-04-05 Karl Eichwalder <ke@suse.de>
+ * makeinfo/makeinfo.c (begin_insertion): No need to
+ gettext; it's a keyword. From carl-friedriech.spilcke-liss@ensae.fr.
+ (cm_printindex): ditto.
+
+ * util/texi2dvi: Always remove the $tmp_dir's.
+ From: Dean Gaudet <dgaudet@arctic.org>
+ Date: Tue, 14 Apr 1998 00:55:36 -0700 (PDT)
+
+Mon Apr 13 18:02:57 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Include
+ AM_SYS_POSIX_TERMIOS
+ AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+ to avoid window resizing being ignored under glibc2 systems,
+ e.g., Red Hat Linux 5.0. Actually any system where the ioctls are not
+ defined in <termios.h>.
+ See also http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl/full/206.
+ * acconfig.h (GWINSZ_IN_SYS_IOCTL): New #undef for autoheader.
+ * info/termdep.h [GWINSZ_IN_SYSIOCTL]: #include <sys/ioctl> if
+ this is defined.
+ From: Mark Jefferys <mjeffery@cse.ogi.edu>
+ Date: Thu, 9 Apr 1998 12:38:27 -0700 (PDT)
+
+Fri Apr 3 01:18:22 1998 Philippe De Muyter <phdm@macqel.be>
+
+ * info/info.c (main): Use 0, not NULL, as ? : alternative.
+
Tue Mar 3 13:29:17 1998 Karl Berry <karl@cs.umb.edu>
* configure.in: Version 3.12.
* po/de.po: New version.
-
+
* po/POTFILES.in: Do not include doc.c; that gets built at
runtime, thus causing texinfo.pot to try to get rebuilt. Besides,
it doesn't have any translatable strings.
@@ -34,7 +3207,7 @@ Fri Feb 27 16:06:23 1998 Karl Berry <karl@cs.umb.edu>
* info/info.c: Make help messages consistent with others.
* util/install-info.c (print_help): Format consistently.
-
+
(readfile): Support gzipped files via libz.
From: Elliot Lee <sopwith@redhat.com>
Date: Mon, 1 Sep 1997 23:37:14 -0400 (EDT)
@@ -152,7 +3325,7 @@ Sat Feb 21 17:41:26 1998 Karl Berry <karl@cs.umb.edu>
* util/texindex.c (--version),
* makeinfo/makeinfo.c (cm_today),
* makeinfo/makeinfo.c (print_version_info): Version strings etc. do not
- need translation.
+ need translation.
From: Karl Eichwalder <ke@suse.de>
Date: 13 Sep 1997 16:20:02 +0200
@@ -219,7 +3392,7 @@ Fri Aug 1 14:05:10 1997 Karl Berry <karl@cs.umb.edu>
* Makefile.am (EXTRA_DIST): Remove README-alpha.
From: "ir. Mark M._Kettenis" <kettenis@phys.uva.nl>.
-1997-07-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+1997-07-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* configure.in: Use AC_CHECK_HEADERS, not AC_CHECK_HEADER.
@@ -476,14 +3649,14 @@ Fri Jul 18 10:02:18 1997 Karl Berry <karl@cs.umb.edu>
Thu Jul 17 17:19:34 1997 Karl Berry <karl@cs.umb.edu>
-
+
* emacs/Makefile.am (*clean-lisp): Define, as Automake didn't.
From: Kenneth Stailey <kstailey@disclosure.com>.
* doc/Makefile.am: Do not distribute info.1.
* makeinfo/macros: Do not distribute this directory, it's merged
into the main documentation.
- * doc/makeinfo.texi: Don't distribute this either, it's in the
+ * doc/makeinfo.texi: Don't distribute this either, it's in the
main manual.
* util/install-info.c: Use \n\ for multiline string constant.
@@ -602,7 +3775,7 @@ Sat Jul 5 17:17:14 1997 Karl Berry <karl@cs.umb.edu>
* makeinfo/makeinfo.c (kbdinputstyle): New command.
(cm_no_op_line_arg): New function.
- * info/termdep.h (HAVE_TERMIOS_H) [NeXT]: #undef.
+ * info/termdep.h (HAVE_TERMIOS_H) [NeXT]: #undef.
From: Gregor Hoffleit <flight@mathi.uni-heidelberg.de> et al.
Fri Jul 4 14:18:08 1997 Karl Berry <karl@cs.umb.edu>
@@ -755,12 +3928,12 @@ Thu Jun 12 08:37:52 1997 Karl Eichwalder <ke@ke.Central.DE>
* info/Makefile.am:
* makeinfo/Makefile.am:
* util/Makefile.am:
- (localedir): Set.
+ (localedir): Set.
(INCLUDES): Add intl/ and LOCALEDIR.
(LDADD): Add @INTLLIBS@.
* makeinfo/makeinfo.c (main):
- * util/texindex.c (main):
+ * util/texindex.c (main):
* util/install-info.c (main):
setlocale, bindtextdomain, and textdomain.
@@ -804,7 +3977,7 @@ Sun Jun 1 16:34:12 1997 Karl Berry <karl@cs.umb.edu>
Tue May 27 17:20:44 1997 Karl Berry <karl@cs.umb.edu>
- * doc/texinfo.texi (various): Document @deftypemethod.
+ * doc/texinfo.texi (various): Document @deftypemethod.
(email): @ should have been @@ in the example.
From: Mate Wierdl <mw@wierdlmpc.msci.memphis.edu>
@@ -917,7 +4090,7 @@ Sun Apr 27 16:12:44 1997 Karl Berry <karl@cs.umb.edu>
* info/terminal.c (term_kP, term_kN): New variables to hold
PageUp, PageDown key sequences.
(terminal_initialize_terminal): Set them.
-
+
* util/texindex.c (main),
* util/install-info.c (main),
* makeinfo/makeinfo.c (print_version_info),
@@ -1083,10 +4256,10 @@ Thu Mar 13 13:59:45 1997 Karl Berry <karl@cs.umb.edu>
* configure.in (AC_CONFIG_HEADER): Use this,
to avoid hugely long compile line with all the -D's.
* info/general.h: Include <config.h>.
-
+
* emacs/Makefile.am (install, install-data): Do @echo
to tell the user to compile/install the elisp manually.
-
+
* configure.in (AC_REPLACE_FUNCS): Move strerror check to here.
(AC_CHECK_FUNCS): From here.
@@ -1230,7 +4403,7 @@ Mon Sep 30 10:07:21 1996 Karl Berry <karl@cs.umb.edu>
better page breaks.
(\tex): Reset \, to its plain TeX meaning,
and do not reset \l.
-
+
* COPYING: Update for new FSF address (from gcc dist).
* libtxi/Makefile.in: Various simplifications.
@@ -1336,10 +4509,10 @@ Thu Sep 26 10:46:34 1996 Karl Berry <karl@cs.umb.edu>
* emacs/texnfo-upd.el,
* emacs/texinfo.el,
* emacs/texinfmt.el: Update from bob for new Texinfo commands, etc.
-
+
* emacs/info.el, emacs/informat.el, emacs/makeinfo.el,
emacs/texnfo-tex.el: Update from Emacs 19.34 dist.
-
+
* emacs/elisp-comp: Use TMPDIR if set.
* util/Makefile.in (libdir): Remove.
@@ -1591,8 +4764,8 @@ Mon Jul 29 14:44:33 1996 Karl Berry <karl@cs.umb.edu>
Sun Jul 28 13:37:05 1996 Karl Berry <karl@cs.umb.edu>
* texinfo.tex (paragraphindent): Move to more reasonable place in
- the source file.
- (chapfonts, secfonts, subsecfonts, indexfonts): Call \setleading.
+ the source file.
+ (chapfonts, secfonts, subsecfonts, indexfonts): Call \setleading.
(\chfplain, \secheading, \plainsecheading, \subsecheading,
\subsubheading): Rewrite to properly \hangindent the title.
(\sectionheading): New generic macro to print section titles.
@@ -1724,7 +4897,7 @@ Fri Feb 23 19:50:18 1996 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
Wed Jan 3 10:01:45 1996 Brian J. Fox <bfox@nirvana.datawave.net>
* makeinfo/makeinfo.c (make_index_entries_unique): Be a little bit
- stricter about what makes two index entries identical.
+ stricter about what makes two index entries identical.
Fri Dec 29 13:00:24 1995 Brian J. Fox <bfox@wizard.datawave.net>
diff --git a/gnu/usr.bin/texinfo/INTRODUCTION b/gnu/usr.bin/texinfo/INTRODUCTION
index 1355e6fcf4a..13e24f7cff6 100644
--- a/gnu/usr.bin/texinfo/INTRODUCTION
+++ b/gnu/usr.bin/texinfo/INTRODUCTION
@@ -48,18 +48,6 @@ read this file, type
$ info -f info-stnd
-If you are using GNU Emacs, you may want to install the Emacs Lisp files
-permanently. Move them them to a directory in the load-path for Emacs;
-otherwise Emacs will not be able to load the autoloaded support files, such
-as `texinfmt.el'.
-
-The `texinfo.el' file contains the autoload commands; it is the only
-file that needs to be loaded initially. If your Emacs does not
-automatically load `texinfo.el', you can tell it to do so by placing
-the following in `default.el' or in your `.emacs' file:
-
- (load "texinfo")
-
To create a printed manual
==========================
@@ -90,13 +78,10 @@ program is not part of this distribution, but is available separately.
After following those instructions, type the following to make the .dvi
files:
- $ make texinfo.dvi
- $ (cd info; make info.dvi info-stnd.dvi)
- $ (cd makeinfo; make makeinfo.dvi)
+ $ (cd doc; make dvi)
-You can then print the resulting .dvi files with the `lpr' command (on BSD
-systems. On SysV systems the command is `lp'. Consult your man pages for
-more information).
+You can then print the resulting .dvi files with the `lpr' or `lp'
+commands, or maybe `dvips'.
For example, the command to print the texinfo.dvi file might be:
diff --git a/gnu/usr.bin/texinfo/NEWS b/gnu/usr.bin/texinfo/NEWS
index a9d80d8f50c..18423d50121 100644
--- a/gnu/usr.bin/texinfo/NEWS
+++ b/gnu/usr.bin/texinfo/NEWS
@@ -1,11 +1,113 @@
This file records noteworthy changes.
+4.0 (28 September 1999)
+* Language:
+ . New command @anchor for cross references to arbitrary points.
+ . New commands @documentlanguage sets the main document language,
+ and @documentencoding sets the document input encoding (although not
+ much is done yet with either).
+ . New command @pagesizes allows limited control of text area for typesetting.
+ . New command @acronym for abbreviations in all caps, such as `NASA'.
+ . New command @alias for simple command aliases.
+ . New command @definfoenclose for better control of info output.
+ . New commands @deftypeivar for typed instance variables of a class
+ and @deftypeop for typed operations of a class.
+ . New command @novalidate suppresses cross-reference checking and (in
+ TeX) auxiliary file creation.
+ . New commands @setcontentsaftertitlepage and
+ @setshortcontentsaftertitlepage to force printing the table of
+ contents after @end titlepage. Also, @contents and @shortcontents
+ themselves can now appear at the beginning of the document as
+ well as the end.
+ . New markup commands: @env (for environment variables), @command (for
+ command names), @option (for command-line options).
+ . New commands @smallformat and @smalldisplay, a la @smallexample.
+ . New command @exampleindent to set indentation of example-like
+ environments a la @paragraphindent.
+ . @uref takes an optional third argument of text to show instead of
+ (rather than in addition to) the url for info and dvi output.
+ . @footnote works in an @item for a @table.
+* texinfo.tex:
+ . latest version always at ftp://ftp.gnu.org/gnu/texinfo.tex (and mirrors).
+ . implements @macro.
+ . implements @paragraphindent (except asis).
+ . @emph and @i use true italic type (cmti) instead of slanted (cmsl).
+ . implements pdf output when run with pdftex.
+ . better support for internationalization via txi-??.tex files.
+* makeinfo:
+ . supports HTML output with the --html option.
+ . implication of --html: @top nodes should be wrapped in @ifnottex
+ rather than @ifinfo. @ifinfo conditionals are not expanded with --html.
+ . new option --number-sections to output chapter/section numbers.
+ . dashes and quotes are not treated specially in node names.
+ . new option --commands-in-node-names to allow @-commands in node names.
+ (Not implemented in TeX, and most likely never will be.)
+ . @emph output uses _underscores_.
+ . @image looks for .png files before .jpg.
+ . only output `Making ... file' line when verbose.
+ . allow -v as synonym for --verbose.
+ . new command line options to specify which conditionals to process
+ (but --iftex is not fully implemented).
+ . warns if @var contains any of ,[]().
+ . @quote-arg implicitly done for all one-argument macros, so commas in
+ the argument text are allowed.
+ . \\ required in macro body to get single \, no other `escapes' defined.
+* info:
+ . ISO Latin 1 characters are displayed and input as-is by default.
+ . new option --vi-keys to enable vi-like and less-like key bindings.
+ . new command S does case-sensitive searching.
+ . new commands C-x n and C-x N repeat last search, respectively, in the
+ same and in reverse direction, without prompting for the string. These
+ commands are bound to n and N under --vi-keys, like in Less.
+ . new command G menu1 menu2 ... searches for menu items from (dir),
+ as allowed on the command line.
+ . new command O (capital o, not zero) goes directly to the node that
+ describes command-line options.
+ . new command-line option --show-options causes the node which
+ describes command-line options to be the first node displayed.
+ . M-prior and M-DEL do new command info-scroll-other-window-backward.
+ . / searches like s does.
+ . If the search string includes upper-case letters, in both incremental
+ and non-incremental search, the search is case-sensitive.
+ . S searches case-sensitively even if the search string is all
+ lower-case.
+ . - makes the argument negative (so e.g. `- /' searches backward).
+ . l restores point in the window returned to.
+ . SPC/DEL do not move outside the current document.
+ . foo.info is found before foo.
+ . `info foo --index-search=bar' now searches for bar in foo's index.
+ . support for files compressed with bzip2.
+* install-info:
+ . handles gzipped dir files.
+ . sort entries into alphabetical order.
+ . install direntries only in preceding dircategory, not in all.
+ . --delete does not require the info file to exist.
+ . --delete can handle XEmacs-style dir entries.
+* texi2dvi:
+ . bug fixed: now uses only the @iftex and @tex parts of the source.
+ . process LaTeX source as well as Texinfo source.
+ . output PDF (using pdftex) with new option --pdf.
+ . handles --OPTION=ARG style of command line arguments.
+ . new option --batch for progress reports but no interaction.
+ . new option --clean to remove all auxiliary files.
+ . new option --quiet for silence (unless there are errors).
+ . new option -I for specifying directories for @include to search.
+ . handles LaTeX files (running BibTeX etc.).
+* Fixes to util/gen-dir-node and util/fix-info-dir (formerly util/update-info).
+* Distribution:
+ . Man pages included.
+ . Czech and Norwegian message translations.
+ . Various translations for texinfo.tex fixed words included.
+ . DJGPP support.
+
+
3.12 (3 March 1998)
* Elisp files removed, since they are only usefully distributed with Emacs.
* Restore inclusion of compile-time $(infodir) to INFOPATH.
* install-info creates a proper dir file.
* Various portability fixes.
+
3.11 (31 July 1997)
* New commands:
- @uref to make a reference to a url; @url now only indicates such.
@@ -40,6 +142,7 @@ This file records noteworthy changes.
3.10 (nonexistent)
+
3.9 (4 October 1996)
* makeinfo:
- Give a suppressible (with --no-validate) error for references
@@ -52,6 +155,7 @@ This file records noteworthy changes.
* configure: Include replacements for memcpy and memmove functions in
the distribution, in case they are missing.
+
3.8 (30 September 1996)
* Define and/or document new and/or previously existing commands:
Accents: @" @' @, @" @= @^ @` @~ @H @d @dotaccent @dotless @ringaccent
@@ -93,46 +197,55 @@ This file records noteworthy changes.
@infoinclude
@iappendix @iappendixsection @iappendixsec @iappendixsubsec
@iappendixsubsubsec
- @ichapter @isection @isubsection @isubsubsection
+ @ichapter @isection @isubsection @isubsubsection
@iunnumbered @iunnumberedsec @iunnumberedsubsec @iunnumberedsubsubsec
@setchapterstyle
@titlespec
+
3.7 (24 December 1995)
* Have --version print texinfo release number as well as the individual
program version.
* Better man page cleaning.
* Update Elisp files from current Emacs release.
+
3.6 (21 June 1995)
* Unmatched brace error reporting improved.
* Missing comment terminator prevented compilation.
+
3.5 (20 June 1995)
* Autoconf update.
* Support for parallel makes.
* make install does not install Elisp files.
+
3.4 (19 June 1995)
* Handle @ifhtml in Elisp.
* Update FSF address.
+
3.3 (15 June 1995)
* Portability changes.
* Compile Elisp files.
* Don't distribute .info* files.
+
3.2 (9 June 1995)
* Standalone Info can read Unix man pages.
* New commands: @! @? @^ @" @enddots.
* makeinfo -E does macro expansion (and nothing else).
+
3.1 (23 May 1993)
-Just bug fixes, see ChangeLog for full details.
+Just bug fixes, see ChangeLog for full details.
-texinfo-3.0: first release of Texinfo version 2, with many new commands.
+
+3.0: first release of Texinfo version 2, with many new commands.
+
Here is the separate NEWS for old releases of Info:
Version 2.11, Sat Apr 1 09:15:21 1995
@@ -332,4 +445,3 @@ Changes since 2.0:
* Scrolling in redisplay is implemented.
* Recursive uses of the echo area made more robust.
* Garbage collection of unreferenced nodes.
-
diff --git a/gnu/usr.bin/texinfo/README b/gnu/usr.bin/texinfo/README
index 15f83239d42..0b865efc648 100644
--- a/gnu/usr.bin/texinfo/README
+++ b/gnu/usr.bin/texinfo/README
@@ -1,48 +1,82 @@
This is the README file for the GNU Texinfo distribution.
-The primary distribution point is ftp://ftp.gnu.org/pub/gnu.
+The primary distribution point is ftp://ftp.gnu.org/gnu/texinfo/.
+
+Mailing lists:
+- bug-texinfo@gnu.org for bug reports or enhancement suggestions,
+ archived at ftp://ftp-mailing-list-archives.gnu.org/.
+- help-texinfo@gnu.org for authoring questions and general discussion.
+ archived at the same place.
+- texinfo-pretest@tug.org for pretests of new releases,
+ archived at http://tug.org/archives/texinfo-pretest/.
+There are as yet no corresponding newsgroups.
+
+For bug reports, please include enough information for the maintainers
+to reproduce the problem. Generally speaking, that means:
+- the version number of Texinfo and the program(s) involved (use --version).
+- hardware, operating system, and compiler versions (uname -a).
+- any unusual options you gave to configure (see config.status).
+- the contents of any input files necessary to reproduce the bug (crucial!).
+- a description of the problem and any samples of the erroneous output.
+- anything else that you think would be helpful.
+
+Patches are most welcome; if possible, please make them with diff -c and
+include ChangeLog entries.
+
+When sending email, please do not encode or split the messages in any
+way if at all possible; it's much easier to deal with one large message
+than many small ones. GNU shar is a convenient way of packaging
+multiple and/or binary files for email.
-Please email bugs or suggestions to bug-texinfo@gnu.org. (If you wish,
-you can join this list by sending a subscribe message to
-bug-texinfo-request@gnu.org.) Patches are welcome; if possible, please
-make them with diff -c and include ChangeLog entries.
-
-Programs within this distribution have their own version numbers. When
-you refer to a file, please mention its own version, as well as the
-version number of the Texinfo distribution.
For generic installation instructions on compiling and installing this
Automake-based distribution, please read the file `INSTALL'.
Installation notes specific to Texinfo:
- * The Info tree uses a file `dir' as its root node; the `dir-example'
- file in this distribution is included for informative purposes.
- Use it, modify it, or ignore it just as you like.
+* The Info tree uses a file `dir' as its root node; the `dir-example'
+ file in this distribution is included as a possible starting point.
+ Use it, modify it, or ignore it just as you like.
+
+* You can create a file texinfo.cnf to be read by TeX when
+ processing Texinfo manuals. For example, you might like to use
+ @afourpaper by default. See the `Preparing for TeX' node in
+ texinfo.txi for more details. You don't have to create the file if
+ you have nothing to put in it.
+
+* If your info files are not in $prefix/info, you may wish to add a line
+#define DEFAULT_INFOPATH "/mydir1:/mydir2:..."
+ to config.h after running configure.
- * You can create a file texinfo.cnf to be read by TeX when
- processing Texinfo manuals. For example, it might contain the
- command @afourpaper. See the `Preparing for TeX' node in
- texinfo.texi for more details.
+* For instructions on compiling this distribution with DJGPP tools
+ for MS-DOS and MS-Windows, please see the file djgpp/README.
- * If your info files are not in $prefix/info, you may wish to add a line
-#define DEFAULT_INFOPATH "/mydir1:/mydir2:/etc"
- to config.h after running configure.
+If you would like to contribute to the GNU project by implementing
+additional documentation output formats for Texinfo, that would be
+great. But please do not write a separate translator texi2foo for your
+favorite format foo! That is the hard way to do the job, and makes
+extra work in subsequent maintenance, since the Texinfo language is
+continually being enhanced and updated. Instead, the best approach is
+modify Makeinfo to generate the new format, as it does now for Info and HTML.
-This distribution includes (but is not limited to) the following files:
+
+This distribution includes the following files, among others:
README This file.
+
+ NEWS Summary of new features by release.
+
INTRODUCTION Brief introduction to the system, and
how to create readable files from the
Texinfo source files in this distribution.
Texinfo source files (in ./doc):
- texinfo.texi This manual describes the Texinfo language
- and many of the associated tools. It
- tells how to use Texinfo to write
- documentation, how to use Texinfo mode
- in GNU Emacs, TeX, makeinfo, and the
- Emacs Lisp Texinfo formatting commands.
+ texinfo.txi Describes the Texinfo language and many
+ of the associated tools. It tells how
+ to use Texinfo to write documentation,
+ how to use Texinfo mode in GNU Emacs,
+ TeX, makeinfo, and the Emacs Lisp
+ Texinfo formatting commands.
info.texi This manual tells you how to use
Info. This document comes as part of
@@ -72,26 +106,20 @@ Printing related files:
util/texi2dvi This is a shell script for
producing an indexed DVI file using
- TeX and texindex. Must be used if the
- source document uses Texinfo @macros.
+ TeX and texindex.
Source files for standalone C programs (./lib, ./makeinfo, ./info):
- makeinfo.c This file contains the source for
+ makeinfo/makeinfo.c This file contains the source for
the `makeinfo' program that you can
use to create an Info file from a
Texinfo file.
- info.c This file contains the source for
+ info/info.c This file contains the source for
the `info' program that you can use to
view Info files on an ASCII terminal.
- getopt.c Various support files
- getopt1.c
- getopt.h
-
-
Installation files:
configure This file creates creates a Makefile
@@ -110,11 +138,7 @@ Installation files:
to use to make a Makefile.in.
-Other files (util):
-
- NEWS This contains a summary of new
- features since the first edition
- of Texinfo.
+Other files:
fixfonts This is a shell script to install the
`lcircle10' TeX fonts as an alias for
diff --git a/gnu/usr.bin/texinfo/TODO b/gnu/usr.bin/texinfo/TODO
index 6df65a872ef..a06b40c68f3 100644
--- a/gnu/usr.bin/texinfo/TODO
+++ b/gnu/usr.bin/texinfo/TODO
@@ -1,8 +1,8 @@
If you are interested in working on any of these, email bug-texinfo@gnu.org.
* Makeinfo:
- - HTML output is being actively worked on, and with luck will be in
- the next release.
+ - Support output of Docbook format and SGML-Tools format.
+ - Support output of true 8-bit characters from accent commands, etc.
- A detexinfo program, like detex or delatex. This command would
strip all the texinfo commands out, and would be used as a filter on
the way to a speller. An option would be to NOT strip comments out.
@@ -13,23 +13,27 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
chapter/section references. See:
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2/faq201s.zip
- Call Ghostscript to get ASCII output for the @image command.
+ - Better HTML output: allow settable background color, table colors
+ and spacing, <head> meta tags, back link from footnote marker, etc.
+ - Could warn if @sc{TEXT} for all-caps TEXT, since it's a no-op.
* TeX:
- Use @ as the escape character, and Texinfo syntax generally, in the
table of contents, aux, and index files. Eliminate all the crazy
multiple redefinitions of every Texinfo command in different contexts.
- Handle @hsep and @vsep in @multitables.
+ - Introduce new command to change \bindingoffset.
+ - How about using latex2html to produce HTML?
* General:
- Better i18n support, including support for 8-bit input characters,
and 8-bit output in info. Perhaps have to use the ec fonts.
- Support compressed image files, automatic generation of .txt
or .jpg from .eps by Ghostscript.
- - Repeat TeX run until cross-references stabilize, not just twice.
- (Document this in manual and fix texi2dvi.)
- Handle reference card creation, perhaps by only paying attention to
sectioning and @def... commands.
- Allow : in node names for info files, for names like `class::method'.
+ - Allow @end (and other?) commands to be indented in the source.
- Get Info declared as a MIME Content-Type.
* Language:
@@ -41,15 +45,18 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
@caption ... @end caption
<arbitrary Texinfo commands>
@end figure
+ - support bibliographies with BibTeX (see web2c/doc for kludge prototype).
- @flushboth to combine @flushleft and @flushright, for RFC's.
- @part sectioning command.
- - Anchors a la HTML?
- Allow subitems and `see' and `see also' in indices.
+ - @verbatim ... @end verbatim.
- @exercise/@answer command for, e.g., gawk.
- Allow @hsep/@vsep at @item, instead of just in template.
- The dark corner symbol for the gawk manual.
+ - Support automatic line numbering of examples.
- Change bars. This is difficult or impossible in TeX,
unfortunately. To do it right requires device driver support.
+ wdiff or ediff may be better in some cases, anyway.
* Doc:
- Include a complete functional summary, as in a reference card, in
@@ -59,20 +66,29 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
for an example of doing it in both the tex and info versions.
* Info:
+ - Regular expression search.
+ - Allow key rebinding, perhaps through the readline library.
+ - Full-text search across all info files installed on the system.
+ - Support character sets other than ISO Latin 1.
+ - Perhaps comply with LANGUAGE setting on a per-node basis, to allow
+ incremental translation of Texinfo files.
- Search all nodes of dir file at startup, then can have
INFO-DIR-SEPARATE-GROUPS and other such.
- Better dir file merging.
- Steal interface ideas from Lynx: TAB for navigating to next link
- within a page, number links, etc.
+ within a page, number links, use color, etc. Perhaps code from the pinfo
+ viewer can be reused: http://zeus.polsl.gliwice.pl/~pborys/.
- q within help should quit help like C-x 0.
- - Full-text search on all available info files.
- - Incorporate an X-based viewer, perhaps tkinfo:
- http://www.math.ucsb.edu/~boldt/tkinfo/.
+ - Incorporate an X-based viewer, perhaps tkinfo
+ http://www.math.ucsb.edu/~boldt/tkinfo/
+ or saxinfo.
- Perhaps process Texinfo files directly instead of converting to Info:
ftp://ftp.cs.berkeley.edu/ucb/people/phelps/tcltk/tkman.tar.Z
+ ftp://ftp.cs.berkeley.edu/ucb/people/phelps/tcltk/rman.tar.Z
+ Tcl/Tk 8.0 from ftp.smli.com in the /pub/tcl directory.
From: phelps@ecstasy.CS.Berkeley.EDU (Tom Phelps)
+ (But this has the disadvantage of needing to be updated when the
+ Texinfo language changes, so don't.)
* Install-info:
- be able to copy the info file to compile-time $(infodir), to
diff --git a/gnu/usr.bin/texinfo/acinclude.m4 b/gnu/usr.bin/texinfo/acinclude.m4
new file mode 100644
index 00000000000..8f6fe5a3d4e
--- /dev/null
+++ b/gnu/usr.bin/texinfo/acinclude.m4
@@ -0,0 +1,90 @@
+# $Id: acinclude.m4,v 1.1 2000/02/09 01:23:53 espie Exp $
+# Source file used by aclocal in generating aclocal.m4.
+
+#serial 3
+
+AC_DEFUN(jm_CHECK_DECLARATION,
+[
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ test -z "$ac_cv_header_memory_h" && AC_CHECK_HEADERS(memory.h)
+ test -z "$ac_cv_header_string_h" && AC_CHECK_HEADERS(string.h)
+ test -z "$ac_cv_header_strings_h" && AC_CHECK_HEADERS(strings.h)
+ test -z "$ac_cv_header_stdlib_h" && AC_CHECK_HEADERS(stdlib.h)
+ test -z "$ac_cv_header_unistd_h" && AC_CHECK_HEADERS(unistd.h)
+ AC_MSG_CHECKING([whether $1 is declared])
+ AC_CACHE_VAL(jm_cv_func_decl_$1,
+ [AC_TRY_COMPILE($2,
+ [
+#ifndef $1
+char *(*pfn) = (char *(*)) $1
+#endif
+ ],
+ eval "jm_cv_func_decl_$1=yes",
+ eval "jm_cv_func_decl_$1=no")])
+
+ if eval "test \"`echo '$jm_cv_func_decl_'$1`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], , :, [$3])
+ else
+ AC_MSG_RESULT(no)
+ ifelse([$4], , , [$4
+])dnl
+ fi
+])dnl
+
+dnl jm_CHECK_DECLARATIONS(INCLUDES, FUNCTION... [, ACTION-IF-DECLARED
+dnl [, ACTION-IF-NOT-DECLARED]])
+AC_DEFUN(jm_CHECK_DECLARATIONS,
+[
+ for jm_func in $2
+ do
+ jm_CHECK_DECLARATION($jm_func, $1,
+ [
+ jm_tr_func=HAVE_DECL_`echo $jm_func | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+ AC_DEFINE_UNQUOTED($jm_tr_func) $3], $4)dnl
+ done
+])
+
+#serial 1
+# this is check-decl.m4 in sh-utils 1.16k/m4/check-decl.m4
+# with a different function list.
+
+dnl This is just a wrapper function to encapsulate this kludge.
+dnl Putting it in a separate file like this helps share it between
+dnl different packages.
+AC_DEFUN(txi_CHECK_DECLS,
+[
+ headers='
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#else
+# ifdef HAVE_STRINGS_H
+# include <strings.h>
+# endif
+#endif
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+'
+
+ if test x = y; then
+ dnl This code is deliberately never run via ./configure.
+ dnl FIXME: this is a gross hack to make autoheader put entries
+ dnl for each of these symbols in the config.h.in.
+ dnl Otherwise, I'd have to update acconfig.h every time I change
+ dnl this list of functions.
+ AC_DEFINE(HAVE_DECL_STRERROR, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRCASECMP, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRNCASECMP, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRCOLL, 1, [Define if this function is declared.])
+ fi
+
+ jm_CHECK_DECLARATIONS($headers, strerror strcasecmp strncasecmp strcoll)
+])
diff --git a/gnu/usr.bin/texinfo/aclocal.m4 b/gnu/usr.bin/texinfo/aclocal.m4
index 1c120d3dfa2..20d3fd0b45e 100644
--- a/gnu/usr.bin/texinfo/aclocal.m4
+++ b/gnu/usr.bin/texinfo/aclocal.m4
@@ -1,7 +1,7 @@
-dnl aclocal.m4 generated automatically by aclocal 1.2f
+dnl aclocal.m4 generated automatically by aclocal 1.4
-dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-dnl This Makefile.in is free software; the Free Software Foundation
+dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -10,6 +10,97 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
+# $Id: aclocal.m4,v 1.1.1.3 2000/02/09 01:23:55 espie Exp $
+# Source file used by aclocal in generating aclocal.m4.
+
+#serial 3
+
+AC_DEFUN(jm_CHECK_DECLARATION,
+[
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ test -z "$ac_cv_header_memory_h" && AC_CHECK_HEADERS(memory.h)
+ test -z "$ac_cv_header_string_h" && AC_CHECK_HEADERS(string.h)
+ test -z "$ac_cv_header_strings_h" && AC_CHECK_HEADERS(strings.h)
+ test -z "$ac_cv_header_stdlib_h" && AC_CHECK_HEADERS(stdlib.h)
+ test -z "$ac_cv_header_unistd_h" && AC_CHECK_HEADERS(unistd.h)
+ AC_MSG_CHECKING([whether $1 is declared])
+ AC_CACHE_VAL(jm_cv_func_decl_$1,
+ [AC_TRY_COMPILE($2,
+ [
+#ifndef $1
+char *(*pfn) = (char *(*)) $1
+#endif
+ ],
+ eval "jm_cv_func_decl_$1=yes",
+ eval "jm_cv_func_decl_$1=no")])
+
+ if eval "test \"`echo '$jm_cv_func_decl_'$1`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], , :, [$3])
+ else
+ AC_MSG_RESULT(no)
+ ifelse([$4], , , [$4
+])dnl
+ fi
+])dnl
+
+dnl jm_CHECK_DECLARATIONS(INCLUDES, FUNCTION... [, ACTION-IF-DECLARED
+dnl [, ACTION-IF-NOT-DECLARED]])
+AC_DEFUN(jm_CHECK_DECLARATIONS,
+[
+ for jm_func in $2
+ do
+ jm_CHECK_DECLARATION($jm_func, $1,
+ [
+ jm_tr_func=HAVE_DECL_`echo $jm_func | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+ AC_DEFINE_UNQUOTED($jm_tr_func) $3], $4)dnl
+ done
+])
+
+#serial 1
+# this is check-decl.m4 in sh-utils 1.16k/m4/check-decl.m4
+# with a different function list.
+
+dnl This is just a wrapper function to encapsulate this kludge.
+dnl Putting it in a separate file like this helps share it between
+dnl different packages.
+AC_DEFUN(txi_CHECK_DECLS,
+[
+ headers='
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#else
+# ifdef HAVE_STRINGS_H
+# include <strings.h>
+# endif
+#endif
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+'
+
+ if test x = y; then
+ dnl This code is deliberately never run via ./configure.
+ dnl FIXME: this is a gross hack to make autoheader put entries
+ dnl for each of these symbols in the config.h.in.
+ dnl Otherwise, I'd have to update acconfig.h every time I change
+ dnl this list of functions.
+ AC_DEFINE(HAVE_DECL_STRERROR, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRCASECMP, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRNCASECMP, 1, [Define if this function is declared.])
+ AC_DEFINE(HAVE_DECL_STRCOLL, 1, [Define if this function is declared.])
+ fi
+
+ jm_CHECK_DECLARATIONS($headers, strerror strcasecmp strncasecmp strcoll)
+])
+
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -43,7 +134,7 @@ dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
-[AC_REQUIRE([AM_PROG_INSTALL])
+[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
@@ -53,8 +144,8 @@ if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
@@ -66,15 +157,6 @@ AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
-
-# serial 1
-
-AC_DEFUN(AM_PROG_INSTALL,
-[AC_REQUIRE([AC_PROG_INSTALL])
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-AC_SUBST(INSTALL_SCRIPT)dnl
-])
-
#
# Check to make sure that the build environment is sane.
#
@@ -134,15 +216,80 @@ else
fi
AC_SUBST($1)])
+# Define a conditional.
+
+AC_DEFUN(AM_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi])
+
+dnl From Jim Meyering.
+
+# serial 1
+
+AC_DEFUN(AM_SYS_POSIX_TERMIOS,
+[AC_CACHE_CHECK([POSIX termios], am_cv_sys_posix_termios,
+ [AC_TRY_LINK([#include <sys/types.h>
+#include <unistd.h>
+#include <termios.h>],
+ [/* SunOS 4.0.3 has termios.h but not the library calls. */
+ tcgetattr(0, 0);],
+ am_cv_sys_posix_termios=yes,
+ am_cv_sys_posix_termios=no)])
+])
+
+dnl From Jim Meyering.
+
+# serial 1
+
+AC_DEFUN(AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL,
+[AC_REQUIRE([AM_SYS_POSIX_TERMIOS])
+ AC_CACHE_CHECK([whether use of TIOCGWINSZ requires sys/ioctl.h],
+ am_cv_sys_tiocgwinsz_needs_sys_ioctl_h,
+ [am_cv_sys_tiocgwinsz_needs_sys_ioctl_h=no
+
+ gwinsz_in_termios_h=no
+ if test $am_cv_sys_posix_termios = yes; then
+ AC_EGREP_CPP([yes],
+ [#include <sys/types.h>
+# include <termios.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+ ], gwinsz_in_termios_h=yes)
+ fi
+
+ if test $gwinsz_in_termios_h = no; then
+ AC_EGREP_CPP([yes],
+ [#include <sys/types.h>
+# include <sys/ioctl.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+ ], am_cv_sys_tiocgwinsz_needs_sys_ioctl_h=yes)
+ fi
+ ])
+ if test $am_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
+ AC_DEFINE(GWINSZ_IN_SYS_IOCTL,1,
+ [Define if TIOCGWINSZ requires sys/ioctl.h])
+ fi
+])
+
# Macro to add for using GNU gettext.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
-# This file file be copied and used freely without restrictions. It can
+# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
-# serial 3
+# serial 5
AC_DEFUN(AM_WITH_NLS,
[AC_MSG_CHECKING([whether NLS is requested])
@@ -162,7 +309,7 @@ AC_DEFUN(AM_WITH_NLS,
AC_ARG_WITH(included-gettext,
[ --with-included-gettext use the GNU gettext library included here],
nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
+ nls_cv_force_use_gnu_gettext=yes)
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
@@ -184,9 +331,10 @@ AC_DEFUN(AM_WITH_NLS,
AC_CHECK_LIB(intl, bindtextdomain,
[AC_CACHE_CHECK([for gettext in libintl],
gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
+ [AC_CHECK_LIB(intl, gettext,
+ gt_cv_func_gettext_libintl=yes,
+ gt_cv_func_gettext_libintl=no)],
+ gt_cv_func_gettext_libintl=no)])
fi
if test "$gt_cv_func_gettext_libc" = "yes" \
@@ -280,7 +428,7 @@ AC_DEFUN(AM_WITH_NLS,
: ;
else
AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
+ [found xgettext program is not GNU xgettext; ignore it])
XGETTEXT=":"
fi
fi
@@ -292,6 +440,12 @@ AC_DEFUN(AM_WITH_NLS,
nls_cv_header_intl=intl/libintl.h
nls_cv_header_libgt=intl/libgettext.h
fi
+ AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
# If this is used in GNU gettext we have to set USE_NLS to `yes'
# because some of the sources are only built for this goal.
@@ -336,9 +490,9 @@ AC_DEFUN(AM_GNU_GETTEXT,
AC_REQUIRE([AC_FUNC_MMAP])dnl
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
+unistd.h sys/param.h])
AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
+strdup __argz_count __argz_stringify __argz_next])
if test "${ac_cv_func_stpcpy+set}" != "set"; then
AC_CHECK_FUNCS(stpcpy)
@@ -430,11 +584,13 @@ __argz_count __argz_stringify __argz_next])
dnl be included in po/Makefile.
test -d po || mkdir po
if test "x$srcdir" != "x."; then
- if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ changequote(, )dnl
+ if test "x`echo $srcdir | sed -e 's@^[A-z]:@@' -e 's@/.*@@'`" = "x"; then
posrcprefix="$srcdir/"
else
posrcprefix="../$srcdir/"
fi
+ changequote([, ])dnl
else
posrcprefix="../"
fi
@@ -446,7 +602,7 @@ __argz_count __argz_stringify __argz_next])
# Search path for a program which passes the given test.
# Ulrich Drepper <drepper@cygnus.com>, 1996.
#
-# This file file be copied and used freely without restrictions. It can
+# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
@@ -494,7 +650,7 @@ AC_SUBST($1)dnl
# Check whether LC_MESSAGES is available in <locale.h>.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
-# This file file be copied and used freely without restrictions. It can
+# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
diff --git a/gnu/usr.bin/texinfo/config.in b/gnu/usr.bin/texinfo/config.in
new file mode 100644
index 00000000000..3e943f55925
--- /dev/null
+++ b/gnu/usr.bin/texinfo/config.in
@@ -0,0 +1,278 @@
+/* config.in. Generated automatically from configure.in by autoheader. */
+/* acconfig.h
+ This file is in the public domain.
+ $Id: config.in,v 1.1.1.1 2000/02/09 01:23:57 espie Exp $
+
+ Descriptive text for the C preprocessor macros that
+ the distributed Autoconf macros can define.
+ No software package will use all of them; autoheader copies the ones
+ your configure.in uses into your configuration header file templates.
+
+ The entries are in sort -df order: alphabetical, case insensitive,
+ ignoring punctuation (such as underscores). Although this order
+ can split up related entries, it makes it easier to check whether
+ a given entry is in the file.
+
+ Leave the following blank line there!! Autoheader needs it. */
+
+
+
+/* Define if using alloca.c. */
+#undef C_ALLOCA
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+ This function is required for alloca.c support on those systems. */
+#undef CRAY_STACKSEG_END
+
+/* Define if you have alloca, as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
+#undef HAVE_ALLOCA_H
+
+/* Define if you don't have vprintf but do have _doprnt. */
+#undef HAVE_DOPRNT
+
+/* Define if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define if you have the strcoll function and it is properly defined. */
+#undef HAVE_STRCOLL
+
+/* Define if you have the vprintf function. */
+#undef HAVE_VPRINTF
+
+/* Define as __inline if that's what the C compiler calls it. */
+#undef inline
+
+/* Define if on MINIX. */
+#undef _MINIX
+
+/* Define to `long' if <sys/types.h> doesn't define. */
+#undef off_t
+
+/* Define if the system does not provide POSIX.1 features except
+ with this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define if you need to in order for stat and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define as the return type of signal handlers (int or void). */
+#undef RETSIGTYPE
+
+/* Define if the setvbuf function takes the buffering type as its second
+ argument and the buffer pointer as the third, as on System V
+ before release 3. */
+#undef SETVBUF_REVERSED
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+#undef size_t
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown
+ */
+#undef STACK_DIRECTION
+
+/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#undef STAT_MACROS_BROKEN
+
+/* Define if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if your <sys/time.h> declares struct tm. */
+#undef TM_IN_SYS_TIME
+
+/* Define to 1 if NLS is requested. */
+#undef ENABLE_NLS
+
+/* Define as 1 if you have catgets and don't want to use GNU gettext. */
+#undef HAVE_CATGETS
+
+/* Define as 1 if you have gettext and don't want to use GNU gettext. */
+#undef HAVE_GETTEXT
+
+/* Define if your locale.h file contains LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define as 1 if you have the stpcpy function. */
+#undef HAVE_STPCPY
+
+/* Define if you have the __argz_count function. */
+#undef HAVE___ARGZ_COUNT
+
+/* Define if you have the __argz_next function. */
+#undef HAVE___ARGZ_NEXT
+
+/* Define if you have the __argz_stringify function. */
+#undef HAVE___ARGZ_STRINGIFY
+
+/* Define if you have the bzero function. */
+#undef HAVE_BZERO
+
+/* Define if you have the dcgettext function. */
+#undef HAVE_DCGETTEXT
+
+/* Define if you have the getcwd function. */
+#undef HAVE_GETCWD
+
+/* Define if you have the getpagesize function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if you have the memcpy function. */
+#undef HAVE_MEMCPY
+
+/* Define if you have the memmove function. */
+#undef HAVE_MEMMOVE
+
+/* Define if you have the memset function. */
+#undef HAVE_MEMSET
+
+/* Define if you have the munmap function. */
+#undef HAVE_MUNMAP
+
+/* Define if you have the putenv function. */
+#undef HAVE_PUTENV
+
+/* Define if you have the setenv function. */
+#undef HAVE_SETENV
+
+/* Define if you have the setlocale function. */
+#undef HAVE_SETLOCALE
+
+/* Define if you have the setvbuf function. */
+#undef HAVE_SETVBUF
+
+/* Define if you have the sigprocmask function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define if you have the sigsetmask function. */
+#undef HAVE_SIGSETMASK
+
+/* Define if you have the stpcpy function. */
+#undef HAVE_STPCPY
+
+/* Define if you have the strcasecmp function. */
+#undef HAVE_STRCASECMP
+
+/* Define if you have the strchr function. */
+#undef HAVE_STRCHR
+
+/* Define if you have the strdup function. */
+#undef HAVE_STRDUP
+
+/* Define if you have the strerror function. */
+#undef HAVE_STRERROR
+
+/* Define if you have the strncasecmp function. */
+#undef HAVE_STRNCASECMP
+
+/* Define if you have the <argz.h> header file. */
+#undef HAVE_ARGZ_H
+
+/* Define if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define if you have the <ncurses/termcap.h> header file. */
+#undef HAVE_NCURSES_TERMCAP_H
+
+/* Define if you have the <nl_types.h> header file. */
+#undef HAVE_NL_TYPES_H
+
+/* Define if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define if you have the <sys/fcntl.h> header file. */
+#undef HAVE_SYS_FCNTL_H
+
+/* Define if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define if you have the <sys/ptem.h> header file. */
+#undef HAVE_SYS_PTEM_H
+
+/* Define if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define if you have the <sys/ttold.h> header file. */
+#undef HAVE_SYS_TTOLD_H
+
+/* Define if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if you have the <termcap.h> header file. */
+#undef HAVE_TERMCAP_H
+
+/* Define if you have the <termio.h> header file. */
+#undef HAVE_TERMIO_H
+
+/* Define if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if you have the bsd library (-lbsd). */
+#undef HAVE_LIBBSD
+
+/* Define if you have the i library (-li). */
+#undef HAVE_LIBI
+
+/* Name of package */
+#undef PACKAGE
+
+/* Version number of package */
+#undef VERSION
+
+/* Define if TIOCGWINSZ requires sys/ioctl.h */
+#undef GWINSZ_IN_SYS_IOCTL
+
+/* Define if this function is declared. */
+#undef HAVE_DECL_STRERROR
+
+/* Define if this function is declared. */
+#undef HAVE_DECL_STRCASECMP
+
+/* Define if this function is declared. */
+#undef HAVE_DECL_STRNCASECMP
+
+/* Define if this function is declared. */
+#undef HAVE_DECL_STRCOLL
+
+
+
+/* Leave that blank line there!! Autoheader needs it.
+ If you're adding to this file, keep in mind:
+ The entries are in sort -df order: alphabetical, case insensitive,
+ ignoring punctuation (such as underscores). */
diff --git a/gnu/usr.bin/texinfo/djgpp/README b/gnu/usr.bin/texinfo/djgpp/README
new file mode 100644
index 00000000000..064486f4322
--- /dev/null
+++ b/gnu/usr.bin/texinfo/djgpp/README
@@ -0,0 +1,422 @@
+Building and installing GNU Texinfo with DJGPP v2.x
+===================================================
+
+This directory holds files required for building Texinfo with DJGPP
+tools for MS-DOS and MS-Windows. If you got this file with a binary
+distribution, look for the "Installation" section below.
+
+
+1. Building Texinfo
+ ----------------
+
+ a. To compile Texinfo, you will need the following tools:
+
+ - basic DJGPP development environment: GCC, Binutils and djdev;
+ - a DJGPP port of GNU Make version 3.75 or later;
+ - a DJGPP port of Bash;
+ - a port of GNU Sed;
+ - ginstall and rm from the Fileutils package;
+ - DJGPP ports of Fileutils, Diffutils, and Grep (only if you
+ need to reconfigure the source distribution);
+ - etags (from the Emacs distribution) and mkid (from ID-utils)
+ if you need the TAGS and ID targets of the Makefile's.
+
+ All of the above are available from the DJGPP ftp sites on
+ SimTel.NET mirrors, in the pub/simtelnet/gnu/djgpp/v2gnu
+ directory.
+
+ b. From the root of your DJGPP installation, unzip the source package:
+
+ - if you are unpacking the official GNU source distribution:
+
+ tar -xvzf texinfo-X.YZ.tar.gz
+
+ or
+
+ djtar -x texinfo-X.YZ.tar.gz
+
+ where X.YZ is the version number. (Users of MS-DOS and
+ MS-Windows 3.X, which don't support long file names, will need
+ to rename the archive to something like texi-XYZ.tgz.)
+
+ - if you are unpacking a source distribution from a DJGPP ftp
+ site:
+
+ unzip txiXYZs
+
+ or
+
+ pkunzip -d txiXYZs
+
+ If you build Texinfo on Windows 9X, you are advised to use a
+ version of Unzip which supports long filenames, so that the
+ original long filenames of the source files will be preserved.
+ Otherwise, the build procedure will most probably fail.
+
+ Note: do NOT use an unzip program which supports long file names
+ on Windows NT, as DJGPP doesn't support long names there.
+
+ c. If the source distribution comes with a ready Makefile (this is
+ usually the case with archives downloaded from the DJGPP sites),
+ and all you need is to build Texinfo, you may skip the configure
+ step below and go directly to step e.
+
+ d. To build the official GNU distribution, or to configure Texinfo
+ for any environment but stock DJGPP v2.x, run djgpp\config.bat
+ first, like this:
+
+ SRCDIR\djgpp\config SRCDIR
+
+ Here SRCDIR is the directory where you unpacked the sources. If
+ you are configuring from the source directory itself, you may
+ omit the argument to the config.bat file. If you do supply the
+ argument, you MUST use forward slashes in it, or else the batch
+ file might fail.
+
+ config.bat sets some environment variables, then invokes the
+ configure script. The script will run for a few minutes and
+ create Makefile's in all the directories, and the config.h file.
+
+ e. Run `Make'. This builds the programs and the Info files.
+
+
+
+2. Installation
+ ------------
+
+ a. If you are installing the binary distribution, then go to your
+ main DJGPP directory and unzip the files. For instance, if your
+ DJGPP installation is rooted on C:\DJGPP, then type this (XYZ is
+ the version number):
+
+ cd c:\djgpp
+ unzip txiXYZb
+
+ or, if you prefer `pkunzip':
+
+ pkunzip -d txiXYZb
+
+ b. If you downloaded and built Texinfo from sources, install by
+ invoking Make:
+
+ make install
+
+ This requires a port of Unix-like program `install.exe'. It is
+ available from the DJGPP port of GNU Fileutils on SimTel.NET.
+
+ c. Info needs a file named DIR with the top-level menu of all the
+ Info files installed on your system. If you installed the DJGPP
+ development environment (djdevNN.zip), then you already have
+ this file in the info/ subdirectory of your DJGPP installation.
+ Otherwise, you will need to create it. A minimal DIR file is
+ available in this distribution, as a starting point. Copy it to
+ the directory where you install the Info files from this
+ distribution.
+
+ Even if you already have a DIR file, you should review it to
+ make sure it is consistent with the names of the Info file you
+ are installing. Here's how your Texinfo-related entries in DIR
+ should look like:
+
+ * Info: (info).
+ Documentation browsing system. This topic teaches you about
+ how to use the online help information.
+
+ * Info-Standalone: (info-stnd).
+ This topic helps you use the standalone Info-Program (info.exe)
+
+ * Texinfo: (texinfo).
+ With one source file, make either a printed manual
+ (through TeX) or an Info file (through makeinfo).
+ Full documentation in this menu item.
+
+ * install-info: (texinfo)Invoking install-info.
+ How to update info/dir entries when installing GNU packages.
+
+ * texi2dvi: (texinfo)Format with texi2dvi.
+ Printing Texinfo documentation with TeX.
+
+ * texindex: (texinfo)Format with tex/texindex.
+ Sorting Texinfo index files automatically.
+
+ * makeinfo: (texinfo)makeinfo options.
+ Translate Texinfo source into Info, plain ASCII, or HTML.
+
+
+ Note that the asterisk `*' should be flushed all the way to the
+ left, it is indented here just to make reading more convenient.
+
+ If your DIR file entries differ from these, I suggest to edit them
+ so they are as shown above. Otherwise, Info might not be able to
+ find some of the files. You HAVE been warned!
+
+ d. Optionally, set up environment variables for Info. These are:
+
+ * INFO_LINES -- screen size for Info.
+ * INFO_COLORS -- screen colors for Info.
+
+ (If you have DJGPP installed on your system, the file djgpp.env
+ which comes with it already has entries for Info, see the [info]
+ section there.)
+
+ INFO_LINES can be one of 25 (the default), 28, 35, 40, 43, or 50
+ (that's if you have a VGA; EGAs only support 25, 35 and 43 lines).
+ I recommend 40 if your monitor is 17" or larger, and at least 28
+ lines for smaller monitors (I work with 40 lines even on 14"
+ monitors).
+
+ INFO_COLORS should have the following syntax:
+
+ set INFO_COLORS=XX.YY
+
+ where XX is the text attribute for text displayed in the text
+ windows and the echo area, and YY is the text attribute for the
+ modeline (aka the status line). Each attribute is a numeric
+ value of a byte which describes the desired combination of
+ foreground and background colors. The individual bits in the
+ attribute byte are defined as follows:
+
+ bBBBFFFF
+
+ where `b' is the blink bit, `BBB' are the 3 bits for background
+ color and `FFFF' are the 4 bits for the foreground color. This is
+ the usual PC text attribute byte structure, and is further explained
+ in any standard reference on text-mode programming for the PC.
+
+ My favorite setting for INFO_COLORS is `0x1e.0x31'. This makes
+ Info use yellow foreground on blue background for the text and
+ blue foreground on cyan background for the modelines.
+
+ After you've played with these variables and have chosen the values
+ you like, it's a good idea to put them on the DJGPP.ENV file, in the
+ [info] section.
+
+ e. Beginning with version 3.6, GNU Info can read Unix man pages. If
+ you have a `man' clone on your system and would like to be able to
+ read man pages with Info, read the chapter ``Reading Man Pages''
+ below. One such clone is available as v2apps/manXYb.zip from
+ the DJGPP sites (XY is the version number).
+
+ f. This port supports compressed Info files, like what Info under Unix
+ gives you. For this to work, you will need to install a DOS port of
+ GNU `Gzip' package and to observe certain rules of file naming, so
+ that Info will find the compressed files working around the DOS 8.3
+ filename restriction. The chapter ``Compressed Info Files'' below
+ explains the details of this.
+
+ g. If you need to use the `print-node' command, read the chapter
+ ``Printing Nodes'' below.
+
+ h. That's it! You are now ready to use Info, Makeinfo, and Texindex.
+ To learn about them, type `Info' and press [Enter]. You will be
+ presented with the top-level menu of GNU/DJGPP hypertext
+ documentation. If you are unfamiliar with Info, press `?' to see
+ the available commands. Pressing `h' will cause Info to take you on
+ a guided tour through its features (recommended for first-time
+ users).
+
+ i. If you are used to Info ports of versions before 3.6, you should
+ know that the command bindings to PC-specific keys has changed: the
+ numeric keypad keys invoke the same commands as their extended
+ namesakes. That is, e.g., the key `PgUp' on the numeric keypad
+ invokes the same command as the grey `PgUp' key on the extended
+ keypad. This was done at DJ's request, because laptop machines
+ don't have extended keys. Commands to move between nodes
+ (previously bound to numeric keypad) are now bound to Ctrl-
+ varieties of numeric keypad keys (e.g., `next-node' is on
+ `Ctrl-PgDn', `prev-node' is on `Ctrl-PgUp', etc.). You can use
+ the `Alt-x describe-key' command to see which command is invoked
+ by a particular key.
+
+ j. There are several MSDOS-specific changes in Texinfo, relative to
+ previous Texinfo ports (for other changes, see the file NEWS):
+
+ * Full support for both forward and backslashes in all file
+ names. Previously, Info was sensitive to the style of
+ slashes in directories mentioned in the INFOPATH environment
+ variable.
+
+ * The default operation of the `print-node' command has been
+ changed so that it will automatically print to the local
+ printer device connected to the PRN port. (If your printer
+ is connected to another port, set the INFO_PRINT_COMMAND
+ environment variable like this:
+
+ set INFO_PRINT_COMMAND=>LPT2
+
+ In other words, if the value of INFO_PRINT_COMMAND begins
+ wih a `>' character, Info will write to the file or device
+ whose name follows the `>' character. (Don't leave any
+ blanks between `>' and the device name!).
+
+ Note that stock DOS shell won't let you use the `>'
+ character in environment variables set from the DOS prompt
+ or batch files, but you can set it in the [info] section of
+ your DJGPP.ENV file.
+
+ * The `set-screen-height' command now actually changes the
+ screen dimensions from within Info if you specify one of the
+ sizes supported by your video hardware.
+
+ * If you don't have a `man' clone installed, and you invoke
+ Info with a name of a document which Info cannot find, it
+ will no longer wait for 15 seconds.
+
+ * Several bugs in handling of man pages were corrected.
+
+ * Info opens the dribble and input files in BINARY mode. This
+ allows to record keystrokes and restore them in another Info
+ session, thus using dribble files as a startup or init file
+ which changes default behavior, binds keys, etc.
+
+ * Info recognizes a new DOS-specific command-line option `-b'
+ or `--speech-friendly'. This option causes Info to use DOS
+ I/O functions (`printf', `puts', etc.) instead of direct
+ screen writes, which is required to enable speech
+ synthesizer software (used by visually-impaired people) to
+ grab the output. When this option is given, the screen
+ colors defined by the `INFO_COLORS' environment variable and
+ the visible-bell feature will be disabled, because stdio
+ functions don't support neither color text nor inverting
+ screen colors. This improvement was suggested and
+ originally implemented by Hans-Bernhard Broeker
+ <Broeker@physik.rwth-aachen.de>.
+
+ * Makeinfo now generates full .info-NN filenames when long
+ filenames are supported (e.g. on Win9x) and short .iNN
+ filenames otherwise. When the Texinfo source or the
+ command-line parameter -o specify an output file with no
+ extension (like `texinfo'), and long filenames aren't
+ supported, Makeinfo will make sure the generated names will
+ be unique (it will create e.g. `texinf-1', `texin-10' etc.).
+
+ * The texi2dvi script is now fully compatible with
+ MS-DOS/MS-Windows and with the DJGPP port of TeX.
+
+
+3. Reading Man Pages
+ -----------------
+
+ Yes, Info can now read man pages! This port supports that feature,
+ but for it to work, you will have to make sure your `man' clone is
+ set up correctly:
+
+ a. You should have an executable file named `man.exe', `man.com'
+ etc. somewhere on your PATH.
+
+ b. When invoked with redirected stdout, that executable should
+ print the contents of the file it gets as its argument to stdout
+ and exit. If your man command calls some pager, that pager
+ should have this behavior (various ports of Unix command `more'
+ and the DJGPP port of GNU Less behave that way).
+
+ One `man' clone is available as v2apps/manNNb.zip from the DJGPP
+ sites on SimTel.NET.
+
+
+4. Compressed Info Files
+ ---------------------
+
+ Info allows you to hold your Info files in compressed form, to save
+ disk space. When a file Info wants cannot be found, it will
+ automatically try to find that file in compressed form. Info does
+ this by trying to find the original file with specific extensions.
+ Each extension tells Info which program should be called to
+ decompress the file.
+
+ This port supports compression by the GNU Gzip program. When Info
+ cannot find a file `foo', it will first try to find `foo.z' or
+ `foo.gz'. If this fails, and the file has an extension, the last
+ one or two characters of the extension are replaced by `z' and `gz'
+ respectively, and Info tries again. If it finds any of these, it
+ will call the `GUnzip' program to decompress the file, catch its
+ output and display it. (The original compressed file stays
+ intact.)
+
+ So, to use this feature, compress your files with Gzip and call the
+ compressed files using the following as guidelines:
+
+ foo --> foo.gz
+ foo.inf --> foo.igz
+ foo.i5 --> foo.i5z
+ foo.25 --> foo.25z
+
+ If you have a package whose Info docs are split into more than 9
+ sub-files and you need to compress those files, you will have to
+ rename the sub-files from `foo.iNN' to `foo.NN' so that there will
+ be place for the trailing `z' in the compressed names. Don't
+ forget to edit the indirect file table in the main Info file and
+ change the sub-file filenames there too!
+
+ An alternative for those packages which have more than 99 Info
+ sub-files is to generate them from the Texinfo sources and force
+ Makeinfo to produce files without the .iNN extensions, like this:
+
+ makeinfo -o foo foo.txi
+
+ This causes Makeinfo to generate file names like foo-1, foo-2,
+ etc., which leave more place for the numeric index. If necessary,
+ Makeinfo will automatically remove characters from the end of the
+ argument to `-o'. For example, "-o texinfo" produces files
+ texinf-1, ..., texin-10, ..., texi-100, etc. on platforms which
+ only support 8+3 file names.
+
+ Saying "@setfilename foo" near the beginning of the Texinfo source
+ file is another way of forcing Makeinfo to produce files without
+ the .iNN extensions.
+
+ Using Makeinfo to produce files whose names are "compression-ready"
+ is more convenient, since you don't need to edit the the indirect
+ file table to reflect the changes in file names.
+
+ On platforms which support long filenames, the usual Info behavior
+ of appending `.gz' or `.Z' to the original filename also works;
+ this is done *before* Info checks the above butchered names.
+
+ Special considerations apply if you are installing Info on dual
+ DOS/Windows 9X system, where you'd like Info to work with the same
+ files both in plain DOS and from the Windows DOS box. In this
+ case, you should make sure your compressed Info files follow the
+ 8+3 DOS naming conventions outlined above, even though Info
+ supports long file names on Windows 9X. Also, you need to turn off
+ the generation of numeric tails in short 8+3 aliases Windows
+ creates for long names (if you don't know how, the DJGPP FAQ list
+ explains it).
+
+ Please note: for the automatic decompression to work, Info must be
+ able to find the file it looks for with an extension which
+ indicates that the file is compressed. Do NOT call the compressed
+ files as the original uncompressed files were called, or Info
+ won't be able to find them! File names like bison-1, gcc.i10 or
+ make.info-3 have nothing in them to suggest that they are
+ compressed, so don't expect Info to uncompress them.
+
+
+5. Printing Nodes
+ --------------
+
+ Info has a `print-node' command. It works by piping the contents of
+ the current node through a program which is named by the environment
+ variable INFO_PRINT_COMMAND. That command should read its standard
+ input and write it to your printer. Find any such program, put its
+ name into the above environment variable, and you can print nodes from
+ within Info.
+
+ If the value of INFO_PRINT_COMMAND begins with a redirection
+ character `>', Info will write the contents of the node to the file
+ whose name follows the `>' character.
+
+ If INFO_PRINT_COMMAND is not defined, the DJGPP port will use
+ ">PRN" as the default, which causes it to print to the local printer
+ device, PRN.
+
+6. Bug Reports
+ -----------
+
+ If you see any bugs which seem specific to this DOS port, please tell
+ me about them.
+
+
+ Enjoy,
+
+ Eli Zaretskii <eliz@is.elta.co.il>
diff --git a/gnu/usr.bin/texinfo/djgpp/config.bat b/gnu/usr.bin/texinfo/djgpp/config.bat
new file mode 100644
index 00000000000..5b09e0f12a8
--- /dev/null
+++ b/gnu/usr.bin/texinfo/djgpp/config.bat
@@ -0,0 +1,88 @@
+@echo off
+echo Configuring GNU Texinfo for DJGPP v2.x...
+
+Rem The SmallEnv tests protect against fixed and too small size
+Rem of the environment in stock DOS shell.
+
+Rem Find out where the sources are
+set XSRC=.
+if not "%XSRC%" == "." goto SmallEnv
+if "%1" == "" goto InPlace
+set XSRC=%1
+if not "%XSRC%" == "%1" goto SmallEnv
+redir -e /dev/null update %XSRC%/configure.orig ./configure
+if not exist configure update %XSRC%/configure ./configure
+
+:InPlace
+Rem Update configuration files
+echo Updating configuration scripts...
+if not exist configure.orig update configure configure.orig
+sed -f %XSRC%/djgpp/config.sed configure.orig > configure
+if errorlevel 1 goto SedError
+
+Rem Make sure they have a config.site file
+set CONFIG_SITE=%XSRC%/djgpp/config.site
+if not "%CONFIG_SITE%" == "%XSRC%/djgpp/config.site" goto SmallEnv
+
+Rem Make sure crucial file names are not munged by unpacking
+test -f %XSRC%/intl/po2tbl.sed.in
+if not errorlevel 1 mv -f %XSRC%/intl/po2tbl.sed.in %XSRC%/intl/po2tblsed.in
+test -f %XSRC%/intl/po2tblsed.in
+if errorlevel 1 mv -f %XSRC%/intl/po2tbl.sed %XSRC%/intl/po2tblsed.in
+test -f %XSRC%/po/Makefile.in-in
+if errorlevel 1 mv -f %XSRC%/po/Makefile.in.in %XSRC%/po/Makefile.in-in
+if exist INSTALL ren INSTALL INSTALL.txt
+
+Rem Set HOSTNAME so it shows in config.status
+if not "%HOSTNAME%" == "" goto hostdone
+if "%windir%" == "" goto msdos
+set OS=MS-Windows
+if not "%OS%" == "MS-Windows" goto SmallEnv
+goto haveos
+:msdos
+set OS=MS-DOS
+if not "%OS%" == "MS-DOS" goto SmallEnv
+:haveos
+if not "%USERNAME%" == "" goto haveuname
+if not "%USER%" == "" goto haveuser
+echo No USERNAME and no USER found in the environment, using default values
+set HOSTNAME=Unknown PC
+if not "%HOSTNAME%" == "Unknown PC" goto SmallEnv
+:haveuser
+set HOSTNAME=%USER%'s PC
+if not "%HOSTNAME%" == "%USER%'s PC" goto SmallEnv
+goto userdone
+:haveuname
+set HOSTNAME=%USERNAME%'s PC
+if not "%HOSTNAME%" == "%USERNAME%'s PC" goto SmallEnv
+:userdone
+set HOSTNAME=%HOSTNAME%, %OS%
+if not "%HOSTNAME%" == "%HOSTNAME%, %OS%" goto SmallEnv
+:hostdone
+set OS=
+
+
+Rem install-sh is required by the configure script but clashes with the
+Rem various Makefile install-foo targets, so we MUST have it before the
+Rem script runs and rename it afterwards
+if not exist install-sh if exist install-sh.sh ren install-sh.sh install-sh
+echo Running the ./configure script...
+sh ./configure --src=%XSRC% --infodir=c:/djgpp/info --disable-nls
+if errorlevel 1 goto CfgError
+if not exist install-sh.sh if exist install-sh ren install-sh install-sh.sh
+echo Done.
+goto End
+
+:SedError
+echo ./configure script editing failed!
+goto End
+
+:CfgError
+echo ./configure script exited abnormally!
+goto End
+
+:SmallEnv
+echo Your environment size is too small. Enlarge it and run me again.
+echo Configuration NOT done!
+:End
+set XSRC=
diff --git a/gnu/usr.bin/texinfo/djgpp/config.sed b/gnu/usr.bin/texinfo/djgpp/config.sed
new file mode 100644
index 00000000000..bad8c8426df
--- /dev/null
+++ b/gnu/usr.bin/texinfo/djgpp/config.sed
@@ -0,0 +1,26 @@
+/for ac_dir in \$PATH; do/,/IFS="\$ac_save_[Ii][Ff][Ss]"/ {
+ s|test -f \$ac_dir/|test -x $ac_dir/|
+}
+
+/IFS="\${IFS=/,/IFS="\$ac_save_ifs"/ {
+ s|test -f \$ac_dir/|test -x $ac_dir/|
+}
+
+s|po2tbl\.sed\.in|po2tblsed.in|g
+
+/ac_given_INSTALL=/,/^CEOF/ {
+ /^s%@l@%/a\
+ /TEXINPUTS=/s,:,\\\\\\\\\\\\\\;,g\
+ /^terminal\\.o:/s,: ,: pcterm.c ,\
+ s,po2tbl\\.sed\\.in,po2tblsed.in,g\
+ s,Makefile\\.in\\.in,Makefile.in-in,g
+}
+
+/^CONFIG_FILES=/,/^EOF/ {
+ s|po/Makefile.in|po/Makefile.in:po/Makefile.in-in|
+}
+
+/\*) srcdir=/s,/\*,/*|[A-z]:/*,
+/\$]\*) INSTALL=/s,\[/\$\]\*,&|[A-z]:/*,
+/\$]\*) ac_rel_source=/s,\[/\$\]\*,&|[A-z]:/*,
+/ac_file_inputs=/s,\( -e "s%\^%\$ac_given_srcdir/%"\)\( -e "s%:% $ac_given_srcdir/%g"\),\2\1,
diff --git a/gnu/usr.bin/texinfo/djgpp/config.site b/gnu/usr.bin/texinfo/djgpp/config.site
new file mode 100644
index 00000000000..e2238ac4d0c
--- /dev/null
+++ b/gnu/usr.bin/texinfo/djgpp/config.site
@@ -0,0 +1,25 @@
+#! /bin/sh
+
+# This is the config.site file for configuring GNU packages
+# which are to be built with DJGPP tools.
+
+# These two variables are required, otherwise looking for
+# programs along the PATH will not work.
+PATH_SEPARATOR=:
+PATH_EXPAND=y
+
+# The root of the DJGPP tree serves as the default prefix
+test "x$prefix" = xNONE && prefix='${DJDIR}'
+
+# This is required for config.status script to be run, since
+# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh}
+CONFIG_SHELL=${CONFIG_SHELL='sh'}
+
+# These are set here so the generated Makefile's will be good
+# for every DJGPP installation, not only the one where the
+# package was configured.
+# $INSTALL must be an absolute path name, otherwise config.status
+# will try to prepend ./ and ../ to it when it goes into subdirs.
+INSTALL=${INSTALL='${DJDIR}/bin/ginstall -c'}
+RANLIB=${RANLIB='ranlib'}
+
diff --git a/gnu/usr.bin/texinfo/doc/README b/gnu/usr.bin/texinfo/doc/README
index fe8e65444f8..c10fad9797a 100644
--- a/gnu/usr.bin/texinfo/doc/README
+++ b/gnu/usr.bin/texinfo/doc/README
@@ -1,22 +1,30 @@
This directory contains documentation on the Texinfo system and the TeX
-sources needed to process Texinfo sources. (Use texi2dvi to run a
-Texinfo manual through TeX to produce a DVI file.)
+sources needed to process Texinfo sources. We recommend using the
+texi2dvi included in the distribution to run a Texinfo manual through
+TeX to produce a DVI file.
The .tex files are not installed automatically because TeX installations
vary so widely. Installing them in the wrong place would give a false
sense of security. So, you should simply cp *.tex to the appropriate
place. If your installation follows the TeX Directory Structure
-standard (http://www.tug.org/tds/), this will be the directory
+standard (http://tug.org/tds/), this will be the directory
<texmf>/tex/texinfo/ for texinfo.tex and <texmf>/tex/plain/dvips/ for
epsf.tex. If you use the default installation paths, <texmf> will be
-/usr/local/share/texmf. If you have teTeX, you can find <texmf> by
-running:
- texconfig confall | grep \^TEXMF=
-(The configure script tries to do this for you.)
+/usr/local/share/texmf. On systems with TeX preinstalled, as most
+GNU/Linux distributions offer, <texmf> will often be something like
+/usr/share/texmf.
+
+It is also possible to put these .tex files in a `local' place instead
+of overwriting existing ones, but it is more complicated. See your TeX
+documentation in general and the texmf.cnf file in particular for information.
+
+If you add files to your TeX installations, not just replace existing
+ones, you very likely have to update your ls-R file; do this with the
+mktexlsr command. In older versions, this was named MakeTeXls-R.
You can get the latest texinfo.tex from
-ftp://ftp.tug.org/tex/texinfo.tex
-ftp://ftp.cs.umb.edu/pub/tex/texinfo.tex
+ftp://ftp.gnu.org/gnu/texinfo.tex (and all GNU mirrors)
+ftp://tug.org/tex/texinfo.tex (and all CTAN mirrors)
or on the FSF machines in /home/gd/gnu/doc/texinfo.tex.
If you have problems with the version in this distribution, please check
for a newer version.
diff --git a/gnu/usr.bin/texinfo/doc/epsf.tex b/gnu/usr.bin/texinfo/doc/epsf.tex
index 4f9dded4fdd..7d4a628dd5e 100644
--- a/gnu/usr.bin/texinfo/doc/epsf.tex
+++ b/gnu/usr.bin/texinfo/doc/epsf.tex
@@ -321,24 +321,24 @@ TeX, i.e., somewhere in the TEXINPUTS (or equivalent) path.}%
\divide\epsftmp\pspoints
\ifnum\epsfrsize=0\relax
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
- llx=\epsfllx\space
- lly=\epsflly\space
- urx=\epsfurx\space
- ury=\epsfury\space
- rwi=\number\epsftmp
- \epsfclipstring
+ llx=\epsfllx\space
+ lly=\epsflly\space
+ urx=\epsfurx\space
+ ury=\epsfury\space
+ rwi=\number\epsftmp
+ \epsfclipstring
}%
\else
\epsfrsize=10\epsfysize
\divide\epsfrsize\pspoints
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
- llx=\epsfllx\space
- lly=\epsflly\space
- urx=\epsfurx\space
- ury=\epsfury\space
- rwi=\number\epsftmp
- rhi=\number\epsfrsize
- \epsfclipstring
+ llx=\epsfllx\space
+ lly=\epsflly\space
+ urx=\epsfurx\space
+ ury=\epsfury\space
+ rwi=\number\epsftmp
+ rhi=\number\epsfrsize
+ \epsfclipstring
}%
\fi
}%
@@ -427,27 +427,27 @@ TeX, i.e., somewhere in the TEXINPUTS (or equivalent) path.}%
\epsfxsize=\epsfsize{\epsftsize}{\epsfrsize}%
\ifnum \epsfxsize=0
\ifnum \epsfysize=0
- \epsfxsize=\epsftsize
+ \epsfxsize=\epsftsize
\epsfysize=\epsfrsize
- \epsfrsize=0pt
+ \epsfrsize=0pt
%
% We have a sticky problem here: TeX doesn't do floating point arithmetic!
% Our goal is to compute y = rx/t. The following loop does this reasonably
% fast, with an error of at most about 16 sp (about 1/4000 pt).
%
\else
- \epsftmp=\epsftsize \divide\epsftmp\epsfrsize
- \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp
- \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp
- \epsftmp=\epsfysize
- \loop \advance\epsftsize\epsftsize \divide\epsftmp 2
- \ifnum \epsftmp>0
- \ifnum \epsftsize<\epsfrsize
+ \epsftmp=\epsftsize \divide\epsftmp\epsfrsize
+ \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp
+ \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp
+ \epsftmp=\epsfysize
+ \loop \advance\epsftsize\epsftsize \divide\epsftmp 2
+ \ifnum \epsftmp>0
+ \ifnum \epsftsize<\epsfrsize
\else
- \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp
+ \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp
\fi
- \repeat
- \epsfrsize=0pt
+ \repeat
+ \epsfrsize=0pt
\fi
\else
\ifnum \epsfysize=0
@@ -457,9 +457,9 @@ TeX, i.e., somewhere in the TEXINPUTS (or equivalent) path.}%
\epsftmp=\epsfxsize
\loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2
\ifnum \epsftmp>0
- \ifnum \epsfrsize<\epsftsize
+ \ifnum \epsfrsize<\epsftsize
\else
- \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp
+ \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp
\fi
\repeat
\epsfrsize=0pt
diff --git a/gnu/usr.bin/texinfo/doc/help2man b/gnu/usr.bin/texinfo/doc/help2man
new file mode 100644
index 00000000000..d33f7cdf67f
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/help2man
@@ -0,0 +1,401 @@
+#!/usr/local/bin/perl -w
+
+# Generate a short man page from --help and --version output.
+# Copyright © 1997, 98, 99 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Written by Brendan O'Dea <bod@compusol.com.au>
+
+use 5.004;
+use strict;
+use Getopt::Long;
+use Text::Tabs qw(expand);
+use POSIX qw(strftime setlocale LC_TIME);
+
+my $this_program = 'help2man';
+my $this_version = '1.013';
+my $version_info = <<EOT;
+$this_program $this_version
+
+Copyright (C) 1997, 98, 99 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Written by Brendan O'Dea <bod\@compusol.com.au>
+EOT
+
+my $help_info = <<EOT;
+`$this_program' generates a man page out of `--help' and `--version' output.
+
+Usage: $this_program [OPTION]... EXECUTABLE
+
+ -n, --name=STRING use `STRING' as the description for the NAME paragraph
+ -s, --section=SECTION use `SECTION' as the section for the man page
+ -i, --include=FILE include material from `FILE'
+ -I, --opt-include=FILE include material from `FILE' if it exists
+ -o, --output=FILE send output to `FILE'
+ -N, --no-info suppress pointer to Texinfo manual
+ --help print this help, then exit
+ --version print $this_program program version number, then exit
+
+EXECUTABLE should accept `--help' and `--version' options.
+EOT
+
+my $section = 1;
+my ($include, $opt_name, $opt_include, $opt_output, $opt_no_info);
+
+# Parse options.
+Getopt::Long::config('bundling');
+GetOptions (
+ 'n|name=s' => \$opt_name,
+ 's|section=s' => \$section,
+ 'i|include=s' => \$include,
+ 'I|opt-include=s' => \$opt_include,
+ 'o|output=s' => \$opt_output,
+ 'N|no-info' => \$opt_no_info,
+ help => sub { print $help_info; exit },
+ version => sub { print $version_info; exit },
+) or die $help_info;
+
+die $help_info unless @ARGV == 1;
+
+my %include = ();
+my @include = (); # to retain order
+
+# Process include file (if given). Format is:
+#
+# [section name]
+# verbatim text
+
+if ($include or $opt_include)
+{
+ if (open INC, $include || $opt_include)
+ {
+ my $sect;
+
+ while (<INC>)
+ {
+ if (/^\[([^]]+)\]/)
+ {
+ $sect = uc $1;
+ $sect =~ s/^\s+//;
+ $sect =~ s/\s+$//;
+ next;
+ }
+
+ # Silently ignore anything before the first
+ # section--allows for comments and revision info.
+ next unless $sect;
+
+ push @include, $sect unless $include{$sect};
+ $include{$sect} ||= '';
+ $include{$sect} .= $_;
+ }
+
+ close INC;
+
+ die "$this_program: no valid information found in `$include'\n"
+ unless %include;
+
+ # Compress trailing blank lines.
+ for (keys %include)
+ {
+ $include{$_} =~ s/\n+$//;
+ $include{$_} .= "\n" unless /^NAME$/;
+ }
+ }
+ else
+ {
+ die "$this_program: can't open `$include' ($!)\n" if $include;
+ }
+}
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# Turn off localisation of date (for strftime)
+setlocale LC_TIME, 'C';
+
+# Expand tabs, strip trailing spaces and break into paragraphs
+sub paragraphs { split /\n\n+/, join '', expand @_ }
+
+# Grab help and version paragraphs from executable
+my @help = paragraphs `$ARGV[0] --help 2>/dev/null`
+ or die "$this_program: can't get `--help' info from $ARGV[0]\n";
+
+my @version = paragraphs `$ARGV[0] --version 2>/dev/null`
+ or die "$this_program: can't get `--version' info from $ARGV[0]\n";
+
+my $date = strftime "%B %Y", localtime;
+(my $program = $ARGV[0]) =~ s!.*/!!;
+my $package = $program;
+my $version;
+
+if ($opt_output)
+{
+ unlink $opt_output
+ or die "$this_program: can't unlink $opt_output ($!)\n"
+ if -e $opt_output;
+
+ open STDOUT, ">$opt_output"
+ or die "$this_program: can't create $opt_output ($!)\n";
+}
+
+# The first line of the --version information is assumed to be in one
+# of the following formats:
+#
+# <version>
+# <program> <version>
+# {GNU,Free} <program> <version>
+# <program> ({GNU,Free} <package>) <version>
+# <program> - {GNU,Free} <package> <version>
+#
+# and seperated from any copyright/author details by a blank line.
+
+$_ = shift @version;
+
+if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
+ /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
+{
+ $program = $1;
+ $package = $2;
+ $version = $3;
+}
+elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
+{
+ $program = $2;
+ $package = $1 ? "$1$2" : $2;
+ $version = $3;
+}
+else
+{
+ $version = $_;
+}
+
+$program =~ s!.*/!!;
+
+# no info for `info' itself
+$opt_no_info = 1 if $program eq 'info';
+
+# --name overrides --include contents
+$include{NAME} = "$program \\- $opt_name" if $opt_name;
+
+# Default (useless) NAME paragraph
+$include{NAME} ||= "$program \\- manual page for $program $version";
+
+# Man pages traditionally have the page title in caps.
+my $PROGRAM = uc $program;
+
+# Header.
+print <<EOT;
+.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
+.TH $PROGRAM "$section" "$date" "$package $version" FSF
+.SH NAME
+$include{NAME}
+EOT
+
+my $break;
+my $accumulate = 1;
+my @description = ();
+
+sub convert_option;
+
+# Output converted --help information.
+for (@help)
+{
+ chomp;
+
+ if (s/^Usage: +\S+ +(.*)\n?//)
+ {
+ # Turn the usage clause into a synopsis.
+ my $synopsis = '';
+
+ do {
+ my $syn = $1;
+ $syn =~ s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
+ $syn =~ s/^/\\fI/ unless $syn =~ s/^\\fR//;
+ $syn .= '\fR';
+ $syn =~ s/\\fI( *)\\fR/$1/g;
+
+ $synopsis .= ".br\n" unless $accumulate;
+ $synopsis .= ".B $program\n";
+ $synopsis .= "$syn\n";
+ $accumulate = 0;
+ } while s/^(?:Usage| *or): +\S+ +(.*)\n?//;
+
+ # Include file overrides SYNOPSIS.
+ print ".SH SYNOPSIS\n", $include{SYNOPSIS} || $synopsis;
+
+ # Dump any accumulated description text.
+ print ".SH DESCRIPTION\n";
+ print @description;
+
+ # Add additional description text from include file.
+ if ($include{DESCRIPTION})
+ {
+ print ".PP\n" unless $include{DESCRIPTION} =~ /^\..P/;
+ print $include{DESCRIPTION};
+ }
+
+ $break = 1;
+ next unless $_;
+ }
+
+ # Accumulate text if the synopsis has not been produced yet.
+ if ($accumulate)
+ {
+ push @description, ".PP\n" if @description;
+ push @description, "$_\n";
+ next;
+ }
+
+ # Convert some standard paragraph names
+ if (s/^(Options|Examples): *\n//)
+ {
+ print qq(.SH \U$1\n);
+ $break = '';
+ next unless length;
+ }
+
+ # Catch bug report text.
+ if (/^Report bugs |^Email bug reports to /)
+ {
+ print qq(.SH "REPORTING BUGS"\n$_\n);
+ $break = '';
+ next;
+ }
+
+ # Option subsections have second line indented.
+ if (s/^(\S.*)\n / /)
+ {
+ print qq(.SS "$1"\n);
+ $break = '';
+ }
+
+ my $output = '';
+ while (length)
+ {
+ my $indent = 0;
+
+ # Tagged paragraph
+ if (s/^( +(\S.*?) +)(\S.*)\n?//)
+ {
+ $indent = length $1;
+ $output .= ".TP\n$2\n$3\n";
+ $break = 1;
+ }
+
+ # Indented paragraph
+ elsif (s/^( +)(\S.*)\n?//)
+ {
+ $indent = length $1;
+ $output .= ".IP\n$2\n";
+ $break = 1;
+ }
+
+ # Left justified paragraph
+ else
+ {
+ s/(.*)\n?//;
+ $output .= ".PP\n" if $break;
+ $output .= "$1\n";
+ $break = 1;
+ }
+
+ # Continuations
+ $output .= "$1\n" while s/^ {$indent}(\S.*)\n?//;
+ }
+
+ $_ = $output;
+
+ # Escape backslashes.
+ s/\\/\\e/g;
+
+ # Convert options.
+ s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge;
+ print;
+}
+
+# Print any include items other than the ones we have already dealt
+# with.
+for (@include)
+{
+ print qq(.SH "$_"\n$include{$_})
+ unless /^(NAME|SYNOPSIS|DESCRIPTION|SEE ALSO)$/;
+}
+
+# Refer to the real documentation.
+if ($include{'SEE ALSO'} or !$opt_no_info)
+{
+ print qq(.SH "SEE ALSO"\n);
+ print $include{'SEE ALSO'}, ".PP\n" if $include{'SEE ALSO'};
+
+ print <<EOT unless $opt_no_info;
+The full documentation for
+.B $program
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B $program
+programs are properly installed at your site, the command
+.IP
+.B info $program
+.PP
+should give you access to the complete manual.
+EOT
+}
+
+# Output converted --version information.
+for (@version)
+{
+ chomp;
+
+ # Join hyphenated lines.
+ s/([A-Za-z])-\n */$1/g;
+
+ # Convert copyright symbol or (c) to nroff character.
+ s/Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/g;
+
+ # Insert appropriate headings for copyright and author.
+ if (/^Copyright \\/) { print ".SH COPYRIGHT\n" }
+ elsif (/^Written +by/) { print ".SH AUTHOR\n" }
+ else { print ".PP\n"; }
+
+ # Insert line breaks before additional copyright messages and the
+ # disclaimer.
+ s/(.)\n(Copyright |This is free software)/$1\n.br\n$2/g;
+
+ print "$_\n";
+}
+
+exit;
+
+# Convert option dashes to \- to stop nroff from hyphenating 'em, and
+# embolden. Option arguments get italicised.
+sub convert_option
+{
+ my $option = '\fB' . shift;
+
+ $option =~ s/-/\\-/g;
+ unless ($option =~ s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
+ {
+ $option =~ s/=(.)/\\fR=\\fI$1/;
+ $option =~ s/ (.)/ \\fI$1/;
+ $option .= '\fR';
+ }
+
+ $option;
+}
diff --git a/gnu/usr.bin/texinfo/doc/info.1 b/gnu/usr.bin/texinfo/doc/info.1
new file mode 100644
index 00000000000..f572a4f8003
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/info.1
@@ -0,0 +1,80 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.013.
+.TH INFO "1" "September 1999" "GNU texinfo 4.0" FSF
+.SH NAME
+info \- read Info documents
+.SH SYNOPSIS
+.B info
+[\fIOPTION\fR]... [\fIMENU-ITEM\fR...]
+.SH DESCRIPTION
+.PP
+Read documentation in Info format.
+.SH OPTIONS
+.TP
+\fB\-\-apropos\fR=\fISUBJECT\fR
+look up SUBJECT in all indices of all manuals.
+.TP
+\fB\-\-directory\fR=\fIDIR\fR
+add DIR to INFOPATH.
+.TP
+\fB\-\-dribble\fR=\fIFILENAME\fR
+remember user keystrokes in FILENAME.
+.TP
+\fB\-\-file\fR=\fIFILENAME\fR
+specify Info file to visit.
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-index\-search\fR=\fISTRING\fR
+go to node pointed by index entry STRING.
+.TP
+\fB\-\-node\fR=\fINODENAME\fR
+specify nodes in first visited Info file.
+.TP
+\fB\-\-output\fR=\fIFILENAME\fR
+output selected nodes to FILENAME.
+.TP
+\fB\-\-restore\fR=\fIFILENAME\fR
+read initial keystrokes from FILENAME.
+.TP
+\fB\-\-show\-options\fR, \fB\-\-usage\fR
+go to command-line options node.
+.TP
+\fB\-\-subnodes\fR
+recursively output menu items.
+.TP
+\fB\-\-vi\-keys\fR
+use vi-like and less-like key bindings.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.PP
+The first non-option argument, if present, is the menu entry to start from;
+it is searched for in all `dir' files along INFOPATH.
+If it is not present, info merges all `dir' files and shows the result.
+Any remaining arguments are treated as the names of menu
+items relative to the initial node visited.
+.SH EXAMPLES
+.TP
+info
+show top-level dir menu
+.TP
+info emacs
+start at emacs node from top-level dir
+.TP
+info emacs buffers
+start at buffers node within emacs manual
+.TP
+info \fB\-\-show\-options\fR emacs
+start at node with emacs' command line options
+.TP
+info \fB\-f\fR ./foo.info
+show file ./foo.info, not searching dir
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/gnu/usr.bin/texinfo/doc/info.5 b/gnu/usr.bin/texinfo/doc/info.5
new file mode 100644
index 00000000000..0e7eb1dc9cc
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/info.5
@@ -0,0 +1,62 @@
+.\" info(5)
+.\" $Id: info.5,v 1.1.1.1 2000/02/09 01:27:23 espie Exp $
+.\"
+.\" Copyright (C) 1998 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH INFO 5 "GNU Info" "FSF"
+.SH NAME
+info \- readable online documentation
+.SH DESCRIPTION
+The Info file format is an easily-parsable representation for online
+documents. It can be read by
+.I emacs(1)
+and
+.I info(1)
+among other programs.
+.PP
+Info files are usually created from
+.I texinfo(5)
+sources by
+.IR makeinfo(1) ,
+but can be created from scratch if so desired.
+.PP
+For a full description of the Texinfo language and associated tools,
+please see the Texinfo manual (written in Texinfo itself). Most likely,
+running this command from your shell:
+.RS
+.I info texinfo
+.RE
+or this key sequence from inside Emacs:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+will get you there.
+.SH AVAILABILITY
+ftp://ftp.gnu.org/pub/gnu/texinfo-<version>.tar.gz
+.br
+or any GNU mirror site.
+.SH "REPORTING BUGS"
+Please send bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH "SEE ALSO"
+info(1), install-info(1), makeinfo(1), texi2dvi(1),
+.br
+texindex(1).
+.br
+emacs(1), tex(1).
+.br
+texinfo(5).
diff --git a/gnu/usr.bin/texinfo/doc/install-info.1 b/gnu/usr.bin/texinfo/doc/install-info.1
new file mode 100644
index 00000000000..f2b8c2ace7a
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/install-info.1
@@ -0,0 +1,84 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.013.
+.TH INSTALL-INFO "1" "September 1999" "GNU texinfo 4.0" FSF
+.SH NAME
+install-info \- update info/dir entries
+.SH SYNOPSIS
+.B install-info
+[\fIOPTION\fR]... [\fIINFO-FILE \fR[\fIDIR-FILE\fR]]
+.SH DESCRIPTION
+.PP
+Install or delete dir entries from INFO-FILE in the Info directory file
+DIR-FILE.
+.SH OPTIONS
+.TP
+\fB\-\-delete\fR
+delete existing entries for INFO-FILE from DIR-FILE;
+.IP
+don't insert any new entries.
+.TP
+\fB\-\-dir\-file\fR=\fINAME\fR
+specify file name of Info directory file.
+.IP
+This is equivalent to using the DIR-FILE argument.
+.TP
+\fB\-\-entry\fR=\fITEXT\fR
+insert TEXT as an Info directory entry.
+.IP
+TEXT should have the form of an Info menu item line
+plus zero or more extra lines starting with whitespace.
+If you specify more than one entry, they are all added.
+If you don't specify any entries, they are determined
+from information in the Info file itself.
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-info\-file\fR=\fIFILE\fR
+specify Info file to install in the directory.
+.IP
+This is equivalent to using the INFO-FILE argument.
+.TP
+\fB\-\-info\-dir\fR=\fIDIR\fR
+same as \fB\-\-dir\-file\fR=\fIDIR\fR/dir.
+.TP
+\fB\-\-item\fR=\fITEXT\fR
+same as \fB\-\-entry\fR TEXT.
+.IP
+An Info directory entry is actually a menu item.
+.TP
+\fB\-\-quiet\fR
+suppress warnings.
+.TP
+\fB\-\-remove\fR
+same as \fB\-\-delete\fR.
+.TP
+\fB\-\-section\fR=\fISEC\fR
+put this file's entries in section SEC of the directory.
+.IP
+If you specify more than one section, all the entries
+are added in each of the sections.
+If you don't specify any sections, they are determined
+from information in the Info file itself.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH "SEE ALSO"
+The full documentation for
+.B install-info
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B install-info
+programs are properly installed at your site, the command
+.IP
+.B info install-info
+.PP
+should give you access to the complete manual.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/gnu/usr.bin/texinfo/doc/makeinfo.1 b/gnu/usr.bin/texinfo/doc/makeinfo.1
new file mode 100644
index 00000000000..62d22b831b0
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/makeinfo.1
@@ -0,0 +1,152 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.013.
+.TH MAKEINFO "1" "September 1999" "GNU texinfo 4.0" FSF
+.SH NAME
+makeinfo \- translate Texinfo documents
+.SH SYNOPSIS
+.B makeinfo
+[\fIOPTION\fR]...\fI TEXINFO-FILE\fR...
+.SH DESCRIPTION
+.PP
+Translate Texinfo source documentation to various other formats:
+Info files suitable for reading online with Emacs or standalone GNU Info
+(by default); plain text (with \fB\-\-no\-headers\fR); or HTML (with \fB\-\-html\fR).
+.SH OPTIONS
+.TP
+\fB\-\-commands\-in\-node\-names\fR
+allow @ commands in node names.
+.TP
+\fB\-D\fR VAR
+define a variable, as with @set.
+.TP
+\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
+output macro-expanded source to FILE.
+.TP
+\fB\-\-error\-limit\fR=\fINUM\fR
+quit after NUM errors (default 100).
+.TP
+\fB\-\-fill\-column\fR=\fINUM\fR
+break Info lines at NUM characters (default 72).
+.TP
+\fB\-\-footnote\-style\fR=\fISTYLE\fR
+output footnotes according to STYLE:
+.IP
+`separate' to place footnotes in their own node,
+`end' to place the footnotes at the end of the
+.IP
+node in which they are defined (the default).
+.TP
+\fB\-\-force\fR
+preserve output even if errors.
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-html\fR
+output HTML rather than Info format;
+.TP
+\fB\-I\fR DIR
+append DIR to the @include search path.
+.TP
+\fB\-\-ifhtml\fR
+process @ifhtml and @html text even when not
+.IP
+generating HTML.
+.TP
+\fB\-\-ifinfo\fR
+process @ifinfo text even when generating HTML.
+.TP
+\fB\-\-iftex\fR
+process @iftex and @tex text.
+.IP
+implies \fB\-\-no\-split\fR.
+.TP
+\fB\-\-no\-headers\fR
+suppress Info node separators and Node: lines and
+.IP
+write to standard output without \fB\-\-output\fR.
+.TP
+\fB\-\-no\-ifhtml\fR
+do not process @ifhtml and @html text.
+.TP
+\fB\-\-no\-ifinfo\fR
+do not process @ifinfo text.
+.TP
+\fB\-\-no\-iftex\fR
+do not process @iftex and @tex text.
+.TP
+\fB\-\-no\-split\fR
+suppress splitting of large Info output files or
+generation of one HTML file per node.
+.TP
+\fB\-\-no\-validate\fR
+suppress node cross-reference validation.
+.TP
+\fB\-\-no\-warn\fR
+suppress warnings (but not errors).
+.TP
+\fB\-\-number\-sections\fR
+include chapter, section, etc. numbers in output.
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+output to FILE, ignoring any @setfilename.
+.TP
+\fB\-P\fR DIR
+prepend DIR to the @include search path.
+.TP
+\fB\-\-paragraph\-indent\fR=\fIVAL\fR
+indent Info paragraphs by VAL spaces (default 3).
+.IP
+if VAL is `none', do not indent;
+if VAL is `asis', preserve existing indentation.
+.TP
+\fB\-\-reference\-limit\fR=\fINUM\fR
+warn about at most NUM references (default 1000).
+.TP
+\fB\-U\fR VAR
+undefine a variable, as with @clear.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.PP
+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 or plain text, \fB\-\-ifinfo\fR is on and the others are off.
+.SH EXAMPLES
+.TP
+makeinfo foo.texi
+write Info to foo's @setfilename
+.TP
+makeinfo \fB\-\-html\fR foo.texi
+write HTML to foo's @setfilename
+.TP
+makeinfo \fB\-\-no\-headers\fR \fB\-o\fR - foo.texi
+write plain text to standard output
+.TP
+makeinfo \fB\-\-number\-sections\fR foo.texi
+write Info with numbered sections
+.TP
+makeinfo \fB\-\-no\-split\fR foo.texi
+write one Info file however big
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH "SEE ALSO"
+The full documentation for
+.B makeinfo
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B makeinfo
+programs are properly installed at your site, the command
+.IP
+.B info makeinfo
+.PP
+should give you access to the complete manual.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/gnu/usr.bin/texinfo/doc/mdate-sh b/gnu/usr.bin/texinfo/doc/mdate-sh
new file mode 100644
index 00000000000..37171f21fbd
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/mdate-sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# Get the extended ls output of the file or directory.
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+ set - x`ls -L -l -d $1`
+else
+ set - x`ls -l -d $1`
+fi
+# The month is at least the fourth argument
+# (3 shifts here, the next inside the loop).
+shift
+shift
+shift
+
+# Find the month. Next argument is day, followed by the year or time.
+month=
+until test $month
+do
+ shift
+ case $1 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+ esac
+done
+
+day=$2
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+ *:*) set `date`; eval year=\$$#
+ case $2 in
+ Jan) nummonthtod=1;;
+ Feb) nummonthtod=2;;
+ Mar) nummonthtod=3;;
+ Apr) nummonthtod=4;;
+ May) nummonthtod=5;;
+ Jun) nummonthtod=6;;
+ Jul) nummonthtod=7;;
+ Aug) nummonthtod=8;;
+ Sep) nummonthtod=9;;
+ Oct) nummonthtod=10;;
+ Nov) nummonthtod=11;;
+ Dec) nummonthtod=12;;
+ esac
+ # For the first six month of the year the time notation can also
+ # be used for files modified in the last year.
+ if (expr $nummonth \> $nummonthtod) > /dev/null;
+ then
+ year=`expr $year - 1`
+ fi;;
+ *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
diff --git a/gnu/usr.bin/texinfo/doc/stamp-vti b/gnu/usr.bin/texinfo/doc/stamp-vti
new file mode 100644
index 00000000000..2d7c14922ab
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/stamp-vti
@@ -0,0 +1,3 @@
+@set UPDATED 28 September 1999
+@set EDITION 4.0
+@set VERSION 4.0
diff --git a/gnu/usr.bin/texinfo/doc/stamp-vti.1 b/gnu/usr.bin/texinfo/doc/stamp-vti.1
new file mode 100644
index 00000000000..6a12e306559
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/stamp-vti.1
@@ -0,0 +1,3 @@
+@set UPDATED 22 March 1999
+@set EDITION 3.12g
+@set VERSION 3.12g
diff --git a/gnu/usr.bin/texinfo/doc/texi2dvi.1 b/gnu/usr.bin/texinfo/doc/texi2dvi.1
new file mode 100644
index 00000000000..d9e98c4ca5f
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/texi2dvi.1
@@ -0,0 +1,84 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.013.
+.TH TEXI2DVI "1" "September 1999" "GNU Texinfo 4.0 0.43" FSF
+.SH NAME
+texi2dvi \- print Texinfo documents
+.SH SYNOPSIS
+.B texi2dvi
+[\fIOPTION\fR]...\fI FILE\fR...
+.SH DESCRIPTION
+.PP
+Run each Texinfo or LaTeX FILE through TeX in turn until all
+cross-references are resolved, building all indices. The directory
+containing each FILE is searched for included files. The suffix of FILE
+is used to determine its language (LaTeX or Texinfo).
+.PP
+Makeinfo is used to perform Texinfo macro expansion before running TeX
+when needed.
+.SH OPTIONS
+.TP
+-@
+Use @input instead of \einput; for preloaded Texinfo.
+.TP
+\fB\-b\fR, \fB\-\-batch\fR
+No interaction.
+.TP
+\fB\-c\fR, \fB\-\-clean\fR
+Remove all auxiliary files.
+.TP
+\fB\-D\fR, \fB\-\-debug\fR
+Turn on shell debugging (set \fB\-x\fR).
+.TP
+\fB\-e\fR, \fB\-\-expand\fR
+Force macro expansion using makeinfo.
+.TP
+\fB\-I\fR DIR
+Search DIR for Texinfo files.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display this help and exit successfully.
+.TP
+\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
+Specify the LANG of FILE: LaTeX or Texinfo.
+.TP
+\fB\-p\fR, \fB\-\-pdf\fR
+Use pdftex or pdflatex for processing.
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+No output unless errors (implies \fB\-\-batch\fR).
+.TP
+\fB\-s\fR, \fB\-\-silent\fR
+Same as \fB\-\-quiet\fR.
+.TP
+\fB\-t\fR, \fB\-\-texinfo\fR=\fICMD\fR
+Insert CMD after @setfilename in copy of input file.
+Multiple values accumulate.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Display version information and exit successfully.
+.TP
+\fB\-V\fR, \fB\-\-verbose\fR
+Report on what is done.
+.PP
+The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
+TEX (or PDFTEX), and TEXINDEX environment variables are used to run
+those commands, if they are set.
+.SH "REPORTING BUGS"
+Email bug reports to <bug-texinfo@gnu.org>,
+general questions and discussion to <help-texinfo@gnu.org>.
+.SH "SEE ALSO"
+The full documentation for
+.B texi2dvi
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B texi2dvi
+programs are properly installed at your site, the command
+.IP
+.B info texi2dvi
+.PP
+should give you access to the complete manual.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/gnu/usr.bin/texinfo/doc/texindex.1 b/gnu/usr.bin/texinfo/doc/texindex.1
new file mode 100644
index 00000000000..6708829704c
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/texindex.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.013.
+.TH TEXINDEX "1" "September 1999" "GNU texinfo 4.0" FSF
+.SH NAME
+texindex \- sort Texinfo index files
+.SH SYNOPSIS
+.B texindex
+[\fIOPTION\fR]...\fI FILE\fR...
+.SH DESCRIPTION
+.PP
+Generate a sorted index for each TeX output FILE.
+Usually FILE... is specified as `foo.??' for a document `foo.texi'.
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-k\fR, \fB\-\-keep\fR
+keep temporary files around after processing
+.TP
+\fB\-\-no\-keep\fR
+do not keep temporary files around after processing (default)
+.TP
+\fB\-o\fR, \fB\-\-output\fR FILE
+send output to FILE
+.TP
+\fB\-\-version\fR
+display version information and exit
+.SH "REPORTING BUGS"
+Email bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH "SEE ALSO"
+The full documentation for
+.B texindex
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B texindex
+programs are properly installed at your site, the command
+.IP
+.B info texindex
+.PP
+should give you access to the complete manual.
+.SH COPYRIGHT
+Copyright \(co 1999 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
diff --git a/gnu/usr.bin/texinfo/doc/texinfo.5 b/gnu/usr.bin/texinfo/doc/texinfo.5
new file mode 100644
index 00000000000..68504e38035
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/texinfo.5
@@ -0,0 +1,51 @@
+.\" texinfo(5)
+.\" $Id: texinfo.5,v 1.1.1.1 2000/02/09 01:27:23 espie Exp $
+.\"
+.\" Copyright (C) 1998, 99 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for modified
+.\" versions, except that this permission notice may be stated in a
+.\" translation approved by the Foundation.
+.\"
+.TH TEXINFO 5 "GNU Texinfo" "FSF"
+.SH NAME
+Texinfo \- software documentation system
+.SH DESCRIPTION
+Texinfo is a documentation system that uses a single source file to
+produce both online information and printed output. It is primarily
+designed for writing software manuals.
+.PP
+For a full description of the Texinfo language and associated tools,
+please see the Texinfo manual (written in Texinfo itself). Most likely,
+running this command from your shell:
+.RS
+.I info texinfo
+.RE
+or this key sequence from inside Emacs:
+.RS
+.I M-x info RET m texinfo RET
+.RE
+will get you there.
+.SH AVAILABILITY
+ftp://ftp.gnu.org/gnu/texinfo/
+.br
+or any GNU mirror site.
+.SH "REPORTING BUGS"
+Please send bug reports to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+.SH "SEE ALSO"
+info(1), install-info(1), makeinfo(1), texi2dvi(1), texindex(1).
+.br
+emacs(1), tex(1).
+.br
+info(5).
diff --git a/gnu/usr.bin/texinfo/doc/txi-cs.tex b/gnu/usr.bin/texinfo/doc/txi-cs.tex
new file mode 100644
index 00000000000..d1aa88d3f20
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-cs.tex
@@ -0,0 +1,72 @@
+% Czech translation for texinfo.tex (1999-01-24, GNU Texinfo 3.12c).
+%
+% Copyright (C) 1999 Vladimir Michl <Vladimir.Michl@mujweb.cz>
+%
+% 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+%
+% To: Karl Berry <karl@cs.umb.edu>
+%
+\gdef\putwordAppendix{Pøílohy}
+\gdef\putwordChapter{Kapitola}
+\gdef\putwordfile{soubor}
+\gdef\putwordIndexIsEmpty{(Rejstøík je prázdný)}
+\gdef\putwordIndexNonexistent{(Rejstøík neexistuje)}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{Metoda aktivní}
+\gdef\putwordNoTitle{Bez nadpisu}
+\gdef\putwordOf{}
+\gdef\putwordon{zapnuto}
+\gdef\putwordpage{stránka}
+\gdef\putwordsection{podkapitola}
+\gdef\putwordSection{Podkapitola}
+\gdef\putwordsee{vidìt}
+\gdef\putwordSee{Vidìt}
+\gdef\putwordShortTOC{Krátký obsah}
+\gdef\putwordTOC{Obsah}
+%
+\gdef\putwordMJan{ledna}
+\gdef\putwordMFeb{února}
+\gdef\putwordMMar{bøezna}
+\gdef\putwordMApr{dubna}
+\gdef\putwordMMai{kvìtna}
+\gdef\putwordMJun{èervna}
+\gdef\putwordMJul{èervence}
+\gdef\putwordMAug{srpna}
+\gdef\putwordMSep{záøí}
+\gdef\putwordMOct{øíjna}
+\gdef\putwordMNov{listopadu}
+\gdef\putwordMDec{prosince}
+%
+\gdef\putwordDefmac{Makro}
+\gdef\putwordDefspec{Speciální forma}
+\gdef\putwordDefivar{Instance promìnné}
+\gdef\putwordDefvar{Promìnná}
+\gdef\putwordDefopt{Volby}
+\gdef\putwordDeftypevar{Promìnná}
+\gdef\putwordDeffunc{Funkce}
+\gdef\putwordDeftypefun{Funkce}
+%
+% Redefine \today to produce Czech
+% preferred dates such as 28. januar 1999.
+%
+\gdef\today{%
+ \number\day.\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMai\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+%
diff --git a/gnu/usr.bin/texinfo/doc/txi-de.tex b/gnu/usr.bin/texinfo/doc/txi-de.tex
new file mode 100644
index 00000000000..4d5b1c63b5f
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-de.tex
@@ -0,0 +1,83 @@
+% txi-de.tex -- adaptation to German for texinfo.tex.
+% $Id: txi-de.tex,v 1.1.1.1 2000/02/09 01:27:22 espie Exp $
+%
+% Copyright (C) 1999 Free Software Foundation, Inc.
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%
+% Written by Karl Heinz Marbaise, 18. January 1999, <kama@hippo.fido.de>
+%%
+%% german translation of the used words.
+%% Don't use checking because if it is our turn they have
+%% been defined.
+\gdef\putwordAppendix{Anhang}
+\gdef\putwordChapter{Kapitel}
+\gdef\putwordfile{Datei}
+\gdef\putwordin{in}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{Methode von}
+\gdef\putwordon{auf}
+\gdef\putwordof{von}
+\gdef\putwordpage{Seite}
+\gdef\putwordsection{Abschnitt}
+\gdef\putwordSection{Abschnitt}
+\gdef\putwordsee{siehe}
+\gdef\putwordSee{Siehe}
+\gdef\putwordShortTOC{Kurzverzeichnis}
+\gdef\putwordTOC{Inhaltsverzeichnis}
+%%
+\gdef\putwordNoTitle{Kein Titel}
+%%
+%% New defintion for the output of months.
+\gdef\putwordMJan{Januar}
+\gdef\putwordMFeb{Februar}
+\gdef\putwordMMar{M\"arz}
+\gdef\putwordMApr{April}
+\gdef\putwordMMai{Mai}
+\gdef\putwordMJun{Juni}
+\gdef\putwordMJul{Juli}
+\gdef\putwordMAug{August}
+\gdef\putwordMSep{September}
+\gdef\putwordMOct{Oktober}
+\gdef\putwordMNov{November}
+\gdef\putwordMDec{Dezember}
+%%
+%% some hyphenation for german language. Might be changed.
+\hyphenation{An-hang}
+%%\hyphenation{mini-buf-fer mini-buf-fers}
+%%\hyphenation{eshell}
+%%\hyphenation{white-space}
+%%
+%% Index handling should also work correct in german
+\gdef\putwordIndexNonexistent{(Index ist nicht vorhanden)}
+\gdef\putwordIndexIsEmpty{(Der Index ist leer)}
+%%
+%% \defmac
+\gdef\putwordDefmac{Makro}
+%% \defspec
+\gdef\putwordDefspec{Spezial Form}
+%% \defivar
+\gdef\putwordDefivar{exemplar Variable}
+%% \defvar leave unchanged because no difference in
+%% writing but in phonectics.
+\gdef\putwordDefvar{Variable}
+%% \defopt
+\gdef\putwordDefopt{Benutzer Option}
+%% \deftypevar
+\gdef\putwordDeftypevar{Variable}
+%% \deffun
+\gdef\putwordDeffunc{Funktion}
+%% \deftypefun
+\gdef\putwordDeftypefun{Funktion}
diff --git a/gnu/usr.bin/texinfo/doc/txi-en.tex b/gnu/usr.bin/texinfo/doc/txi-en.tex
new file mode 100644
index 00000000000..f972a745317
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-en.tex
@@ -0,0 +1,71 @@
+% English non-translation for texinfo.tex. This is read when a source
+% document says @documentlanguage en (which might happen after another
+% @documentlanguage). The actual values are the same as defaults.
+% $Id: txi-en.tex,v 1.1.1.1 2000/02/09 01:27:22 espie Exp $
+%
+% Copyright (C) 1999 Free Software Foundation.
+%
+% 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.
+
+\gdef\putwordAppendix{Appendix}
+\gdef\putwordChapter{Chapter}
+\gdef\putwordfile{file}
+\gdef\putwordin{in}
+\gdef\putwordIndexIsEmpty{(Index is empty)}
+\gdef\putwordIndexNonexistent{(Index is nonexistent)}
+\gdef\putwordInfo{Info}
+\gdef\putwordInstanceVariableof{Instance Variable of}
+\gdef\putwordMethodon{Method on}
+\gdef\putwordNoTitle{No Title}
+\gdef\putwordof{of}
+\gdef\putwordon{on}
+\gdef\putwordpage{page}
+\gdef\putwordsection{section}
+\gdef\putwordSection{Section}
+\gdef\putwordsee{see}
+\gdef\putwordSee{See}
+\gdef\putwordShortTOC{Short Contents}
+\gdef\putwordTOC{Table of Contents}
+%
+\gdef\putwordMJan{January}
+\gdef\putwordMFeb{February}
+\gdef\putwordMMar{March}
+\gdef\putwordMApr{April}
+\gdef\putwordMMay{May}
+\gdef\putwordMJun{June}
+\gdef\putwordMJul{July}
+\gdef\putwordMAug{August}
+\gdef\putwordMSep{September}
+\gdef\putwordMOct{October}
+\gdef\putwordMNov{November}
+\gdef\putwordMDec{December}
+%
+\gdef\putwordDefmac{Macro}
+\gdef\putwordDefspec{Special Form}
+\gdef\putwordDefvar{Variable}
+\gdef\putwordDefopt{User Option}
+\gdef\putwordDeftypevar{Variable}
+\gdef\putwordDeffunc{Function}
+\gdef\putwordDeftypefun{Function}
+
+% Produces Day Month Year style of output.
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
diff --git a/gnu/usr.bin/texinfo/doc/txi-es.tex b/gnu/usr.bin/texinfo/doc/txi-es.tex
new file mode 100644
index 00000000000..496bd2586ea
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-es.tex
@@ -0,0 +1,60 @@
+% txi-es.tex -- TeX macros to handle Spanish language documents.
+%
+% Copyright (C) 1999 by Adrian Perez Jorge
+%
+% This txi-es.tex file is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2, or (at
+% your option) any later version.
+%
+% This txi-es.tex file 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.
+%
+
+%
+% Set up fixed words for Spanish.
+%
+
+\gdef\putwordAppendix{Ap\'endice}
+\gdef\putwordChapter{Cap\'{\char16{}}tulo}
+\gdef\putwordfile{archivo}
+\gdef\putwordIndexIsEmpty{(El \'Indice est\'a vac\'{\char16{}}o)}
+\gdef\putwordIndexNonexistent{(No existe el \'Indice)}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{M\'etodo de}
+\gdef\putwordNoTitle{Sin T\'{\char{16}}tulo}
+\gdef\putwordof{de}
+\gdef\putwordon{de}
+\gdef\putwordpage{p\'agina}
+\gdef\putwordsection{secci\'on}
+\gdef\putwordSection{Secci\'on}
+\gdef\putwordsee{v\'ease}
+\gdef\putwordSee{V\'ease}
+\gdef\putwordShortTOC{Resumen del Contenido}
+\gdef\putwordTOC{\'Indice General}
+%
+\gdef\putwordMJan{enero}
+\gdef\putwordMFeb{febrero}
+\gdef\putwordMMar{marzo}
+\gdef\putwordMApr{abril}
+\gdef\putwordMMay{mayo}
+\gdef\putwordMJun{junio}
+\gdef\putwordMJul{julio}
+\gdef\putwordMAug{agosto}
+\gdef\putwordMSep{septiembre}
+\gdef\putwordMOct{octubre}
+\gdef\putwordMNov{noviembre}
+\gdef\putwordMDec{diciembre}
+%
+\gdef\putwordDefmac{Macro}
+\gdef\putwordDefspec{Forma Especial}
+\gdef\putwordDefivar{Variable de Instancia}
+\gdef\putwordDefvar{Variable}
+\gdef\putwordDefopt{Opci\'on de Usuario}
+\gdef\putwordDeftypevar{Variable}
+\gdef\putwordDeffunc{Funci\'on}
+\gdef\putwordDeftypefun{Funci\'on}
+
+\endinput
diff --git a/gnu/usr.bin/texinfo/doc/txi-nl.tex b/gnu/usr.bin/texinfo/doc/txi-nl.tex
new file mode 100644
index 00000000000..65b9d05ff73
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-nl.tex
@@ -0,0 +1,70 @@
+% Dutch translation for texinfo.tex.
+% $Id: txi-nl.tex,v 1.1.1.1 2000/02/09 01:27:22 espie Exp $
+%
+% Copyright (C) 1999 Free Software Foundation.
+%
+% 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.
+
+% Set up fixed words if not already set.
+\gdef\putwordAppendix{Appendix}
+\gdef\putwordChapter{Hoofdstuk}
+\gdef\putwordfile{bestand}
+\gdef\putwordin{in}
+\gdef\putwordIndexIsEmpty{(Index is leeg)}
+\gdef\putwordIndexNonexistent{(Index bestaat niet)}
+\gdef\putwordInfo{Info}
+\gdef\putwordInstanceVariableof{Instantie Variabele van}
+\gdef\putwordMethodon{Methode van}
+\gdef\putwordNoTitle{Geen titel}
+\gdef\putwordof{van}
+\gdef\putwordon{op}
+\gdef\putwordpage{pagina}
+\gdef\putwordsection{sectie}
+\gdef\putwordSection{Sectie}
+\gdef\putwordsee{zie}
+\gdef\putwordSee{Zie}
+\gdef\putwordShortTOC{Korte inhoudsopgave}
+\gdef\putwordTOC{Inhoudsopgave}
+%
+\gdef\putwordMJan{Januari}
+\gdef\putwordMFeb{Februari}
+\gdef\putwordMMar{Maart}
+\gdef\putwordMApr{April}
+\gdef\putwordMMay{Mei}
+\gdef\putwordMJun{Juni}
+\gdef\putwordMJul{Juli}
+\gdef\putwordMAug{Augustus}
+\gdef\putwordMSep{September}
+\gdef\putwordMOct{Oktober}
+\gdef\putwordMNov{November}
+\gdef\putwordMDec{December}
+%
+\gdef\putwordDefmac{Macro}
+\gdef\putwordDefspec{Speciale Vorm}
+\gdef\putwordDefvar{Variabele}
+\gdef\putwordDefopt{Gebruikers optie}
+\gdef\putwordDeftypevar{Variabele}
+\gdef\putwordDeffunc{Functie}
+\gdef\putwordDeftypefun{Functie}
+
+% Produces Day Month Year style of output.
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
diff --git a/gnu/usr.bin/texinfo/doc/txi-no.tex b/gnu/usr.bin/texinfo/doc/txi-no.tex
new file mode 100644
index 00000000000..899d42cf2a2
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-no.tex
@@ -0,0 +1,72 @@
+% Norwegian translation for texinfo.tex (1999-02-09, GNU Texinfo 3.12d).
+% Enables the use of words like Kapittel instead of Chapter, etc.
+%
+% Copyright (C) 1999 Trond Endrestøl <endrestol@hotmail.com>
+%
+% 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.
+%
+\gdef\putwordAppendix{Vedlegg}
+\gdef\putwordChapter{Kapittel}
+\gdef\putwordfile{fil}
+\gdef\putwordIndexIsEmpty{(Indeks er tom)}
+\gdef\putwordIndexNonexistent{(Indeks eksisterer ikke)}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{Metode p\aa}
+\gdef\putwordNoTitle{Ingen tittel}
+\gdef\putwordof{av}
+\gdef\putwordon{p\aa}
+\gdef\putwordpage{side}
+\gdef\putwordsection{avsnitt}
+\gdef\putwordSection{Avsnitt}
+\gdef\putwordsee{se}
+\gdef\putwordSee{Se}
+\gdef\putwordShortTOC{Kort innholdsfortegnelse}
+\gdef\putwordTOC{Innholdsfortegnelse}
+%
+\gdef\putwordMJan{januar}
+\gdef\putwordMFeb{februar}
+\gdef\putwordMMar{mars}
+\gdef\putwordMApr{april}
+\gdef\putwordMMay{mai}
+\gdef\putwordMJun{juni}
+\gdef\putwordMJul{juli}
+\gdef\putwordMAug{august}
+\gdef\putwordMSep{september}
+\gdef\putwordMOct{oktober}
+\gdef\putwordMNov{november}
+\gdef\putwordMDec{desember}
+%
+\gdef\putwordDefmac{Makro}
+\gdef\putwordDefspec{Spesiell form}
+\gdef\putwordDefivar{Forekomstvariabel}
+\gdef\putwordDefvar{Variabel}
+\gdef\putwordDefopt{Brukervalg}
+\gdef\putwordDeftypevar{Variabel}
+\gdef\putwordDeffunc{Funksjon}
+\gdef\putwordDeftypefun{Funksjon}
+%
+% Redefine \today to produce Norwegian
+% preferred dates such as 28. januar 1999.
+%
+\gdef\today{%
+ \number\day.\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+%
diff --git a/gnu/usr.bin/texinfo/doc/txi-pt.tex b/gnu/usr.bin/texinfo/doc/txi-pt.tex
new file mode 100644
index 00000000000..4f4530b3df5
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/txi-pt.tex
@@ -0,0 +1,73 @@
+% txi-pt.tex -- adaptation to Portuguese for texinfo.tex.
+%
+% Copyright (C) 1999 Free Software Foundation, Inc.
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+%
+% Written by Lalo Martins <lalo@webcom.com> at 05 August 1999
+%%
+%% Portuguese translation of the used words.
+\gdef\putwordAppendix{Ap\^endice}
+\gdef\putwordChapter{Cap\'\ptexi tulo}
+\gdef\putwordfile{Data}
+\gdef\putwordin{em}
+\gdef\putwordInfo{Info}
+\gdef\putwordMethodon{M\'etodo de}
+\gdef\putwordon{em}
+\gdef\putwordof{de}
+\gdef\putwordpage{P\'agina}
+\gdef\putwordsection{se\,c\~ao}
+\gdef\putwordSection{Se\,c\~ao}
+\gdef\putwordsee{veja}
+\gdef\putwordSee{Veja}
+\gdef\putwordShortTOC{Breve Sum\'ario}
+\gdef\putwordTOC{Sum\'ario}
+%%
+\gdef\putwordNoTitle{Sem T\'\ptexi tulo}
+%%
+%% New defintion for the output of months.
+\gdef\putwordMJan{Janeiro}
+\gdef\putwordMFeb{Fevereiro}
+\gdef\putwordMMar{Mar\,co}
+\gdef\putwordMApr{Abril}
+\gdef\putwordMMai{Maio}
+\gdef\putwordMJun{Junho}
+\gdef\putwordMJul{Julho}
+\gdef\putwordMAug{Agosto}
+\gdef\putwordMSep{Setembro}
+\gdef\putwordMOct{Outubro}
+\gdef\putwordMNov{Novembro}
+\gdef\putwordMDec{Dezembro}
+%%
+%% Index handling should also work correct in german
+\gdef\putwordIndexNonexistent{(\'Indice inexistente)}
+\gdef\putwordIndexIsEmpty{(\'Indice vazio)}
+%%
+%% \defmac
+\gdef\putwordDefmac{Macro}
+%% \defspec
+\gdef\putwordDefspec{Forma Especial}
+%% \defivar
+\gdef\putwordDefivar{Vari\'avel de Inst\^ancia}
+%% \defvar
+\gdef\putwordDefvar{Vari\'avel}
+%% \defopt
+\gdef\putwordDefopt{Op\,c\~ao de Usu\'ario}
+%% \deftypevar
+\gdef\putwordDeftypevar{Vari\'avel}
+%% \deffun
+\gdef\putwordDeffunc{Fun\,c\~ao}
+%% \deftypefun
+\gdef\putwordDeftypefun{Fun\,c\~ao}
diff --git a/gnu/usr.bin/texinfo/doc/version.texi b/gnu/usr.bin/texinfo/doc/version.texi
new file mode 100644
index 00000000000..2d7c14922ab
--- /dev/null
+++ b/gnu/usr.bin/texinfo/doc/version.texi
@@ -0,0 +1,3 @@
+@set UPDATED 28 September 1999
+@set EDITION 4.0
+@set VERSION 4.0
diff --git a/gnu/usr.bin/texinfo/info/README b/gnu/usr.bin/texinfo/info/README
index 7e1ab327b99..5cc0791c06b 100644
--- a/gnu/usr.bin/texinfo/info/README
+++ b/gnu/usr.bin/texinfo/info/README
@@ -14,11 +14,6 @@ the advantages of smaller size, ease of portability, and a built in library
which can be used in other programs (to get or display documentation from
Info files, for example).
-I eagerly await responses to this newer version of Info; comments on its
-portability, ease of use and user interface, code quality, and general
-usefulness are all of interest to me, and I will appreciate any comments
-that you would care to make.
-
A full listing of the commands available in Info can be gotten by typing
`?' while within an Info window. This produces a node in a window which
can be viewed just like any Info node.
diff --git a/gnu/usr.bin/texinfo/info/dribble.c b/gnu/usr.bin/texinfo/info/dribble.c
index d1d58486560..c4b5b9fd3f6 100644
--- a/gnu/usr.bin/texinfo/info/dribble.c
+++ b/gnu/usr.bin/texinfo/info/dribble.c
@@ -1,9 +1,6 @@
-/* dribble.c -- Dribble files for Info. */
+/* dribble.c -- dribble files for Info.
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 98 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
@@ -37,7 +34,8 @@ open_dribble_file (name)
/* Perhaps close existing dribble file. */
close_dribble_file ();
- info_dribble_file = fopen (name, "w");
+ /* Keystrokes can be non-printable characters, so we need binary I/O. */
+ info_dribble_file = fopen (name, FOPEN_WBIN);
#if defined (HAVE_SETVBUF)
if (info_dribble_file)
diff --git a/gnu/usr.bin/texinfo/info/info-utils.c b/gnu/usr.bin/texinfo/info/info-utils.c
index d9ab9a0634b..18eebe777ec 100644
--- a/gnu/usr.bin/texinfo/info/info-utils.c
+++ b/gnu/usr.bin/texinfo/info/info-utils.c
@@ -1,9 +1,7 @@
-/* info-utils.c -- Useful functions for manipulating Info file quirks. */
+/* info-utils.c -- miscellanous.
+ $Id: info-utils.c,v 1.1.1.3 2000/02/09 01:24:44 espie Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 98 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
@@ -29,7 +27,7 @@
/* When non-zero, various display and input functions handle ISO Latin
character sets correctly. */
-int ISO_Latin_p = 0;
+int ISO_Latin_p = 1;
/* Variable which holds the most recent filename parsed as a result of
calling info_parse_xxx (). */
@@ -300,8 +298,8 @@ info_references_internal (label, binding)
return (refs);
}
-/* Get the entry associated with LABEL in MENU. Return a pointer to the
- REFERENCE if found, or NULL. */
+/* Get the entry associated with LABEL in REFERENCES. Return a pointer
+ to the ENTRY if found, or NULL. */
REFERENCE *
info_get_labeled_reference (label, references)
char *label;
@@ -444,19 +442,10 @@ printed_representation (character, hpos)
int hpos;
{
register int i = 0;
- int printable_limit;
-
- if (ISO_Latin_p)
- printable_limit = 160;
- else
- printable_limit = 127;
-
- if (character == '\177')
- {
- the_rep[i++] = '^';
- the_rep[i++] = '?';
- }
- else if (iscntrl (character))
+ int printable_limit = ISO_Latin_p ? 255 : 127;
+
+ /* Show CTRL-x as ^X. */
+ if (iscntrl (character) && character < 127)
{
switch (character)
{
@@ -480,17 +469,23 @@ printed_representation (character, hpos)
the_rep[i++] = (character | 0x40);
}
}
+ /* Show META-x as 0370. */
else if (character > printable_limit)
{
sprintf (the_rep + i, "\\%0o", character);
i = strlen (the_rep);
}
+ else if (character == DEL)
+ {
+ the_rep[i++] = '^';
+ the_rep[i++] = '?';
+ }
else
the_rep[i++] = character;
- the_rep[i] = '\0';
+ the_rep[i] = 0;
- return (the_rep);
+ return the_rep;
}
@@ -604,14 +599,13 @@ char *
filename_non_directory (pathname)
char *pathname;
{
- char *filename;
+ register char *filename = pathname + strlen (pathname);
- filename = (char *) strrchr (pathname, '/');
+ if (HAVE_DRIVE (pathname))
+ pathname += 2;
- if (filename)
- filename++;
- else
- filename = pathname;
+ while (filename > pathname && !IS_SLASH (filename[-1]))
+ filename--;
return (filename);
}
@@ -663,3 +657,17 @@ get_internal_info_window (name)
return (win);
}
+
+/* Return a window displaying the node NODE. */
+WINDOW *
+get_window_of_node (node)
+ NODE *node;
+{
+ WINDOW *win = (WINDOW *)NULL;
+
+ for (win = windows; win; win = win->next)
+ if (win->node == node)
+ break;
+
+ return (win);
+}
diff --git a/gnu/usr.bin/texinfo/info/nodes.c b/gnu/usr.bin/texinfo/info/nodes.c
index f2737e7b354..e90fd2eda07 100644
--- a/gnu/usr.bin/texinfo/info/nodes.c
+++ b/gnu/usr.bin/texinfo/info/nodes.c
@@ -1,9 +1,7 @@
-/* nodes.c -- How to get an Info file and node. */
+/* nodes.c -- how to get an Info file and node.
+ $Id: nodes.c,v 1.1.1.3 2000/02/09 01:24:52 espie Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 98, 99 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
@@ -32,12 +30,6 @@
# include "man.h"
#endif /* HANDLE_MAN_PAGES */
-/* **************************************************************** */
-/* */
-/* Functions Static to this File */
-/* */
-/* **************************************************************** */
-
static void forget_info_file (), remember_info_file ();
static void free_file_buffer_tags (), free_info_tag ();
static void get_nodes_of_tags_table (), get_nodes_of_info_file ();
@@ -50,8 +42,7 @@ static NODE *info_node_of_file_buffer_tags ();
static long get_node_length ();
/* Magic number that RMS used to decide how much a tags table pointer could
- be off by. I feel that it should be much smaller, like on the order of
- 4. */
+ be off by. I feel that it should be much smaller, like 4. */
#define DEFAULT_INFO_FUDGE 1000
/* Passed to *_internal functions. INFO_GET_TAGS says to do what is
@@ -59,46 +50,36 @@ static long get_node_length ();
#define INFO_NO_TAGS 0
#define INFO_GET_TAGS 1
-/* **************************************************************** */
-/* */
-/* Global Variables */
-/* */
-/* **************************************************************** */
+/* Global variables. */
/* When non-zero, this is a string describing the recent file error. */
-char *info_recent_file_error = (char *)NULL;
+char *info_recent_file_error = NULL;
/* The list of already loaded nodes. */
-FILE_BUFFER **info_loaded_files = (FILE_BUFFER **)NULL;
+FILE_BUFFER **info_loaded_files = NULL;
/* The number of slots currently allocated to LOADED_FILES. */
int info_loaded_files_slots = 0;
-/* **************************************************************** */
-/* */
-/* Public Functions for Node Manipulation */
-/* */
-/* **************************************************************** */
+/* Public functions for node manipulation. */
-/* Used to build "dir" menu from "localdir" files found in INFOPATH. */
+/* Used to build `dir' menu from `localdir' files found in INFOPATH. */
extern void maybe_build_dir_node ();
/* Return a pointer to a NODE structure for the Info node (FILENAME)NODENAME.
- FILENAME can be passed as NULL, in which case the filename of "dir" is used.
- NODENAME can be passed as NULL, in which case the nodename of "Top" is used.
- If the node cannot be found, return a NULL pointer. */
+ If FILENAME is NULL, `dir' is used.
+ IF NODENAME is NULL, `Top' is used.
+ If the node cannot be found, return NULL. */
NODE *
info_get_node (filename, nodename)
char *filename, *nodename;
{
- FILE_BUFFER *file_buffer;
NODE *node;
+ FILE_BUFFER *file_buffer = NULL;
- file_buffer = (FILE_BUFFER *)NULL;
- info_recent_file_error = (char *)NULL;
-
+ info_recent_file_error = NULL;
info_parse_node (nodename, DONT_SKIP_NEWLINES);
- nodename = (char *)NULL;
+ nodename = NULL;
if (info_parsed_filename)
filename = info_parsed_filename;
@@ -112,23 +93,23 @@ info_get_node (filename, nodename)
/* If the file to be looked up is "dir", build the contents from all of
the "dir"s and "localdir"s found in INFOPATH. */
- if (strcasecmp (filename, "dir") == 0)
+ if (is_dir_name (filename))
maybe_build_dir_node (filename);
- /* Find the correct info file. */
+ /* Find the correct info file, or give up. */
file_buffer = info_find_file (filename);
-
if (!file_buffer)
{
if (filesys_error_number)
info_recent_file_error =
filesys_error_string (filename, filesys_error_number);
- return ((NODE *)NULL);
+ return NULL;
}
+ /* Look for the node. */
node = info_get_node_of_file_buffer (nodename, file_buffer);
- /* If the node looked for was "Top", try again looking for the node under
- a slightly different name. */
+
+ /* If the node not found was "Top", try again with different case. */
if (!node && (nodename == NULL || strcasecmp (nodename, "Top") == 0))
{
node = info_get_node_of_file_buffer ("Top", file_buffer);
@@ -137,7 +118,8 @@ info_get_node (filename, nodename)
if (!node)
node = info_get_node_of_file_buffer ("TOP", file_buffer);
}
- return (node);
+
+ return node;
}
/* Return a pointer to a NODE structure for the Info node NODENAME in
@@ -149,12 +131,12 @@ info_get_node_of_file_buffer (nodename, file_buffer)
char *nodename;
FILE_BUFFER *file_buffer;
{
- NODE *node = (NODE *)NULL;
+ NODE *node = NULL;
/* If we are unable to find the file, we have to give up. There isn't
anything else we can do. */
if (!file_buffer)
- return ((NODE *)NULL);
+ return NULL;
/* If the file buffer was gc'ed, reload the contents now. */
if (!file_buffer->contents)
@@ -171,11 +153,12 @@ info_get_node_of_file_buffer (nodename, file_buffer)
{
node = (NODE *)xmalloc (sizeof (NODE));
node->filename = file_buffer->fullpath;
- node->parent = (char *)NULL;
+ node->parent = NULL;
node->nodename = xstrdup ("*");
node->contents = file_buffer->contents;
node->nodelen = file_buffer->filesize;
node->flags = 0;
+ node->display_pos = 0;
}
#if defined (HANDLE_MAN_PAGES)
/* If the file buffer is the magic one associated with manpages, call
@@ -195,7 +178,7 @@ info_get_node_of_file_buffer (nodename, file_buffer)
}
/* Return the results of our node search. */
- return (node);
+ return node;
}
/* Locate the file named by FILENAME, and return the information structure
@@ -207,7 +190,7 @@ FILE_BUFFER *
info_find_file (filename)
char *filename;
{
- return (info_find_file_internal (filename, INFO_GET_TAGS));
+ return info_find_file_internal (filename, INFO_GET_TAGS);
}
/* Load the info file FILENAME, remembering information about it in a
@@ -216,15 +199,11 @@ FILE_BUFFER *
info_load_file (filename)
char *filename;
{
- return (info_load_file_internal (filename, INFO_GET_TAGS));
+ return info_load_file_internal (filename, INFO_GET_TAGS);
}
-/* **************************************************************** */
-/* */
-/* Private Functions Implementation */
-/* */
-/* **************************************************************** */
+/* Private functions implementation. */
/* The workhorse for info_find_file (). Non-zero 2nd argument says to
try to build a tags table (or otherwise glean the nodes) for this
@@ -236,30 +215,30 @@ info_find_file_internal (filename, get_tags)
char *filename;
int get_tags;
{
- register int i;
- register FILE_BUFFER *file_buffer;
+ int i;
+ FILE_BUFFER *file_buffer;
/* First try to find the file in our list of already loaded files. */
if (info_loaded_files)
{
for (i = 0; (file_buffer = info_loaded_files[i]); i++)
- if ((strcmp (filename, file_buffer->filename) == 0) ||
- (strcmp (filename, file_buffer->fullpath) == 0) ||
- ((*filename != '/') &&
- strcmp (filename,
- filename_non_directory (file_buffer->fullpath)) == 0))
+ if ((FILENAME_CMP (filename, file_buffer->filename) == 0) ||
+ (FILENAME_CMP (filename, file_buffer->fullpath) == 0) ||
+ (!IS_ABSOLUTE (filename) &&
+ FILENAME_CMP (filename,
+ filename_non_directory (file_buffer->fullpath)) == 0))
{
struct stat new_info, *old_info;
/* This file is loaded. If the filename that we want is
specifically "dir", then simply return the file buffer. */
- if (strcasecmp (filename_non_directory (filename), "dir") == 0)
- return (file_buffer);
+ if (is_dir_name (filename_non_directory (filename)))
+ return file_buffer;
#if defined (HANDLE_MAN_PAGES)
/* Do the same for the magic MANPAGE file. */
if (file_buffer->flags & N_IsManPage)
- return (file_buffer);
+ return file_buffer;
#endif /* HANDLE_MAN_PAGES */
/* The file appears to be already loaded, and it is not "dir".
@@ -268,7 +247,7 @@ info_find_file_internal (filename, get_tags)
if (stat (file_buffer->fullpath, &new_info) == -1)
{
filesys_error_number = errno;
- return ((FILE_BUFFER *)NULL);
+ return NULL;
}
old_info = &file_buffer->finfo;
@@ -288,10 +267,18 @@ info_find_file_internal (filename, get_tags)
for this file, and there isn't one here, build the nodes
for this file_buffer. In any case, return the file_buffer
object. */
+ if (!file_buffer->contents)
+ {
+ /* The file's contents have been gc'ed. Reload it. */
+ info_reload_file_buffer_contents (file_buffer);
+ if (!file_buffer->contents)
+ return NULL;
+ }
+
if (get_tags && !file_buffer->tags)
build_tags_and_nodes (file_buffer);
- return (file_buffer);
+ return file_buffer;
}
}
}
@@ -310,7 +297,7 @@ info_find_file_internal (filename, get_tags)
if (file_buffer)
remember_info_file (file_buffer);
- return (file_buffer);
+ return file_buffer;
}
/* The workhorse function for info_load_file (). Non-zero second argument
@@ -325,8 +312,8 @@ info_load_file_internal (filename, get_tags)
char *fullpath, *contents;
long filesize;
struct stat finfo;
- int retcode;
- FILE_BUFFER *file_buffer = (FILE_BUFFER *)NULL;
+ int retcode, compressed;
+ FILE_BUFFER *file_buffer = NULL;
/* Get the full pathname of this file, as known by the info system.
That is to say, search along INFOPATH and expand tildes, etc. */
@@ -338,18 +325,16 @@ info_load_file_internal (filename, get_tags)
/* If the file referenced by the name returned from info_find_fullpath ()
doesn't exist, then try again with the last part of the filename
appearing in lowercase. */
+ /* This is probably not needed at all on those systems which define
+ FILENAME_CMP to be strcasecmp. But let's do it anyway, lest some
+ network redirector supports case sensitivity. */
if (retcode < 0)
{
char *lowered_name;
char *basename;
lowered_name = xstrdup (filename);
- basename = (char *) strrchr (lowered_name, '/');
-
- if (basename)
- basename++;
- else
- basename = lowered_name;
+ basename = filename_non_directory (lowered_name);
while (*basename)
{
@@ -369,14 +354,14 @@ info_load_file_internal (filename, get_tags)
if (retcode < 0)
{
filesys_error_number = errno;
- return ((FILE_BUFFER *)NULL);
+ return NULL;
}
/* Otherwise, try to load the file. */
- contents = filesys_read_info_file (fullpath, &filesize, &finfo);
+ contents = filesys_read_info_file (fullpath, &filesize, &finfo, &compressed);
if (!contents)
- return ((FILE_BUFFER *)NULL);
+ return NULL;
/* The file was found, and can be read. Allocate FILE_BUFFER and fill
in the various members. */
@@ -386,16 +371,16 @@ info_load_file_internal (filename, get_tags)
file_buffer->finfo = finfo;
file_buffer->filesize = filesize;
file_buffer->contents = contents;
- if (file_buffer->filesize != file_buffer->finfo.st_size)
+ if (compressed)
file_buffer->flags |= N_IsCompressed;
/* If requested, build the tags and nodes for this file buffer. */
if (get_tags)
build_tags_and_nodes (file_buffer);
- return (file_buffer);
+ return file_buffer;
}
-
+
/* Grovel FILE_BUFFER->contents finding tags and nodes, and filling in the
various slots. This can also be used to rebuild a tag or node table. */
void
@@ -527,6 +512,7 @@ get_nodes_of_info_file (file_buffer)
int start, end;
char *nodeline;
TAG *entry;
+ int anchor = 0;
/* Skip past the characters just found. */
binding.start = nodestart;
@@ -537,6 +523,13 @@ get_nodes_of_info_file (file_buffer)
/* Find "Node:" */
start = string_in_line (INFO_NODE_LABEL, nodeline);
+ /* No Node:. Maybe it's a Ref:. */
+ if (start == -1)
+ {
+ start = string_in_line (INFO_REF_LABEL, nodeline);
+ if (start != -1)
+ anchor = 1;
+ }
/* If not there, this is not the start of a node. */
if (start == -1)
@@ -550,21 +543,24 @@ get_nodes_of_info_file (file_buffer)
skip_node_characters (nodeline + start, DONT_SKIP_NEWLINES);
/* Okay, we have isolated the node name, and we know where the
- node starts. Remember this information in a NODE structure. */
- entry = (TAG *)xmalloc (sizeof (TAG));
- entry->nodename = (char *)xmalloc (1 + (end - start));
+ node starts. Remember this information. */
+ entry = xmalloc (sizeof (TAG));
+ entry->nodename = xmalloc (1 + (end - start));
strncpy (entry->nodename, nodeline + start, end - start);
- entry->nodename[end - start] = '\0';
+ entry->nodename[end - start] = 0;
entry->nodestart = nodestart;
- {
- SEARCH_BINDING node_body;
+ if (anchor)
+ entry->nodelen = 0;
+ else
+ {
+ SEARCH_BINDING node_body;
- node_body.buffer = binding.buffer + binding.start;
- node_body.start = 0;
- node_body.end = binding.end - binding.start;
- node_body.flags = S_FoldCase;
- entry->nodelen = get_node_length (&node_body);
- }
+ node_body.buffer = binding.buffer + binding.start;
+ node_body.start = 0;
+ node_body.end = binding.end - binding.start;
+ node_body.flags = S_FoldCase;
+ entry->nodelen = get_node_length (&node_body);
+ }
entry->filename = file_buffer->fullpath;
@@ -579,17 +575,16 @@ static long
get_node_length (binding)
SEARCH_BINDING *binding;
{
- register int i;
+ int i;
char *body;
- /* From the Info-RFC file:
- [A node] ends with either a ^_, a ^L, or the end of file. */
+ /* [A node] ends with either a ^_, a ^L, or end of file. */
for (i = binding->start, body = binding->buffer; i < binding->end; i++)
{
if (body[i] == INFO_FF || body[i] == INFO_COOKIE)
break;
}
- return ((long) i - binding->start);
+ return i - binding->start;
}
/* Build and save the array of nodes in FILE_BUFFER by searching through the
@@ -599,9 +594,10 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
FILE_BUFFER *file_buffer;
SEARCH_BINDING *buffer_binding;
{
- int offset, tags_index = 0;
+ int name_offset;
SEARCH_BINDING *search;
long position;
+ int tags_index = 0;
search = copy_binding (buffer_binding);
@@ -624,6 +620,8 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
{
TAG *entry;
char *nodedef;
+ unsigned p;
+ int anchor = 0;
/* Prepare to skip this line. */
search->start = position;
@@ -634,36 +632,45 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
continue;
/* Find the label preceding the node name. */
- offset =
+ name_offset =
string_in_line (INFO_NODE_LABEL, search->buffer + search->start);
+ /* If no node label, maybe it's an anchor. */
+ if (name_offset == -1)
+ {
+ name_offset = string_in_line (INFO_REF_LABEL,
+ search->buffer + search->start);
+ if (name_offset != -1)
+ anchor = 1;
+ }
+
/* If not there, not a defining line, so we must be out of the
- tags table. */
- if (offset == -1)
+ tags table. */
+ if (name_offset == -1)
break;
- /* Point to the beginning of the node definition. */
- search->start += offset;
+ entry = xmalloc (sizeof (TAG));
+
+ /* Find the beginning of the node definition. */
+ search->start += name_offset;
nodedef = search->buffer + search->start;
nodedef += skip_whitespace (nodedef);
- /* Move past the node's name. */
- for (offset = 0;
- (nodedef[offset]) && (nodedef[offset] != INFO_TAGSEP);
- offset++);
-
- if (nodedef[offset] != INFO_TAGSEP)
+ /* Move past the node's name in this tag to the TAGSEP character. */
+ for (p = 0; nodedef[p] && nodedef[p] != INFO_TAGSEP; p++)
+ ;
+ if (nodedef[p] != INFO_TAGSEP)
continue;
- entry = (TAG *)xmalloc (sizeof (TAG));
- entry->nodename = (char *)xmalloc (1 + offset);
- strncpy (entry->nodename, nodedef, offset);
- entry->nodename[offset] = '\0';
- offset++;
- entry->nodestart = (long) atol (nodedef + offset);
+ entry->nodename = xmalloc (p + 1);
+ strncpy (entry->nodename, nodedef, p);
+ entry->nodename[p] = 0;
+ p++;
+ entry->nodestart = atol (nodedef + p);
- /* We don't know the length of this node yet. */
- entry->nodelen = -1;
+ /* If a node, we don't know the length yet, but if it's an
+ anchor, the length is 0. */
+ entry->nodelen = anchor ? 0 : -1;
/* The filename of this node is currently known as the same as the
name of this file. */
@@ -677,7 +684,7 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
free (search);
}
-/* A structure used only in get_tags_of_indirect_tags_table () to hold onto
+/* A structure used only in `get_tags_of_indirect_tags_table' to hold onto
an intermediate value. */
typedef struct {
char *filename;
@@ -692,8 +699,8 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
FILE_BUFFER *file_buffer;
SEARCH_BINDING *indirect_binding, *tags_binding;
{
- register int i;
- SUBFILE **subfiles = (SUBFILE **)NULL;
+ int i;
+ SUBFILE **subfiles = NULL;
int subfiles_index = 0, subfiles_slots = 0;
TAG *entry;
@@ -723,7 +730,7 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
subfile = (SUBFILE *)xmalloc (sizeof (SUBFILE));
subfile->filename = (char *)xmalloc (colon);
strncpy (subfile->filename, line, colon - 1);
- subfile->filename[colon - 1] = '\0';
+ subfile->filename[colon - 1] = 0;
subfile->first_byte = (long) atol (line + colon);
add_pointer_to_array
@@ -742,7 +749,7 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
}
else
{
- register int tags_index;
+ int tags_index;
long header_length;
SEARCH_BINDING binding;
@@ -762,14 +769,21 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
/* Build the file buffer's list of subfiles. */
{
- char *containing_dir, *temp;
+ char *containing_dir = xstrdup (file_buffer->fullpath);
+ char *temp = filename_non_directory (containing_dir);
int len_containing_dir;
- containing_dir = xstrdup (file_buffer->fullpath);
- temp = (char *) strrchr (containing_dir, '/');
-
- if (temp)
- *temp = '\0';
+ if (temp > containing_dir)
+ {
+ if (HAVE_DRIVE (file_buffer->fullpath) &&
+ temp == containing_dir + 2)
+ {
+ /* Avoid converting "d:foo" into "d:/foo" below. */
+ *temp = '.';
+ temp += 2;
+ }
+ temp[-1] = 0;
+ }
len_containing_dir = strlen (containing_dir);
@@ -789,7 +803,7 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
file_buffer->subfiles[i] = fullpath;
}
- file_buffer->subfiles[i] = (char *)NULL;
+ file_buffer->subfiles[i] = NULL;
free (containing_dir);
}
@@ -814,7 +828,7 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
free (subfiles[i]);
free (file_buffer->subfiles[i]);
}
- file_buffer->subfiles = (char **)NULL;
+ file_buffer->subfiles = NULL;
free_file_buffer_tags (file_buffer);
return;
}
@@ -825,9 +839,8 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
preceding this one is the one containing the node. */
entry->filename = file_buffer->subfiles[i - 1];
- entry->nodestart -= subfiles[i -1]->first_byte;
+ entry->nodestart -= subfiles[i - 1]->first_byte;
entry->nodestart += header_length;
- entry->nodelen = -1;
}
/* We have successfully built the tags table. Remember that it
@@ -845,18 +858,89 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
free (subfiles);
}
+
+/* Return the node that contains TAG in FILE_BUFFER, else
+ (pathologically) NULL. Called from info_node_of_file_buffer_tags. */
+static NODE *
+find_node_of_anchor (file_buffer, tag)
+ FILE_BUFFER *file_buffer;
+ TAG *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;
+ }
+
+ /* 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. */
+ for (node_pos = anchor_pos - 1;
+ 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];
+
+ /* 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'
+ in the `File:' line (a newline, the CTRL-_, and another
+ newline). The nodestart for anchors is the actual position.
+ But we offset by only 2, rather than 3, because if an anchor is
+ at the beginning of a paragraph, it's nicer for it to end up on
+ the beginning of the first line of the paragraph rather than
+ the blank line before it. (makeinfo has no way of knowing that
+ a paragraph is going to start, so we can't fix it there.) */
+ node->display_pos = file_buffer->tags[anchor_pos]->nodestart
+ - (node_tag->nodestart + 2);
+
+ /* Otherwise an anchor at the end of a node ends up displaying at
+ the end of the last line of the node (way over on the right of
+ 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;
+}
+
+
/* Return the node from FILE_BUFFER which matches NODENAME by searching
- the tags table in FILE_BUFFER. If the node could not be found, return
- a NULL pointer. */
+ the tags table in FILE_BUFFER, or NULL. */
static NODE *
info_node_of_file_buffer_tags (file_buffer, nodename)
FILE_BUFFER *file_buffer;
char *nodename;
{
- register int i;
TAG *tag;
+ int i;
- 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;
@@ -864,27 +948,26 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
subfile = info_find_file_internal (tag->filename, INFO_NO_TAGS);
if (!subfile)
- return ((NODE *)NULL);
+ return NULL;
if (!subfile->contents)
{
info_reload_file_buffer_contents (subfile);
if (!subfile->contents)
- return ((NODE *)NULL);
+ return NULL;
}
/* If we were able to find this file and load it, then return
the node within it. */
{
- NODE *node;
-
- node = (NODE *)xmalloc (sizeof (NODE));
- node->filename = (subfile->fullpath);
- node->nodename = tag->nodename;
- node->contents = subfile->contents + tag->nodestart;
- node->flags = 0;
- node->parent = (char *)NULL;
+ NODE *node = xmalloc (sizeof (NODE));
+ node->filename = subfile->fullpath;
+ node->parent = NULL;
+ node->nodename = tag->nodename;
+ node->contents = subfile->contents + tag->nodestart;
+ node->display_pos = 0;
+ node->flags = 0;
if (file_buffer->flags & N_HasTagsTable)
{
@@ -923,14 +1006,14 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
max = subfile->filesize - tag->nodestart;
/* NODE_SEP gets the address of the separator which defines
- this node, or (char *)NULL if the node wasn't found.
+ this node, or NULL if the node wasn't found.
NODE->contents is side-effected to point to right after
the separator. */
node_sep = adjust_nodestart (node, min, max);
- if (node_sep == (char *)NULL)
+ if (node_sep == NULL)
{
free (node);
- return ((NODE *)NULL);
+ return NULL;
}
/* Readjust tag->nodestart. */
tag->nodestart = node_sep - subfile->contents;
@@ -943,46 +1026,49 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
node_body.end = buff_end - node_body.buffer;
node_body.flags = 0;
tag->nodelen = get_node_length (&node_body);
+ node->nodelen = tag->nodelen;
}
+
+ else if (tag->nodelen == 0) /* anchor, return containing node */
+ {
+ free (node);
+ node = find_node_of_anchor (file_buffer, tag);
+ }
+
else
{
/* Since we know the length of this node, we have already
adjusted tag->nodestart to point to the exact start of
it. Simply skip the node separator. */
node->contents += skip_node_separator (node->contents);
+ node->nodelen = tag->nodelen;
}
- node->nodelen = tag->nodelen;
- return (node);
+ return node;
}
}
/* There was a tag table for this file, and the node wasn't found.
Return NULL, since this file doesn't contain the desired node. */
- return ((NODE *)NULL);
+ return NULL;
}
-/* **************************************************************** */
-/* */
-/* Managing file_buffers, nodes, and tags. */
-/* */
-/* **************************************************************** */
+/* Managing file_buffers, nodes, and tags. */
/* Create a new, empty file buffer. */
FILE_BUFFER *
make_file_buffer ()
{
- FILE_BUFFER *file_buffer;
+ FILE_BUFFER *file_buffer = xmalloc (sizeof (FILE_BUFFER));
- file_buffer = (FILE_BUFFER *)xmalloc (sizeof (FILE_BUFFER));
- file_buffer->filename = file_buffer->fullpath = (char *)NULL;
- file_buffer->contents = (char *)NULL;
- file_buffer->tags = (TAG **)NULL;
- file_buffer->subfiles = (char **)NULL;
+ file_buffer->filename = file_buffer->fullpath = NULL;
+ file_buffer->contents = NULL;
+ file_buffer->tags = NULL;
+ file_buffer->subfiles = NULL;
file_buffer->tags_slots = 0;
file_buffer->flags = 0;
- return (file_buffer);
+ return file_buffer;
}
/* Add FILE_BUFFER to our list of already loaded info files. */
@@ -1004,15 +1090,15 @@ static void
forget_info_file (filename)
char *filename;
{
- register int i;
+ int i;
FILE_BUFFER *file_buffer;
if (!info_loaded_files)
return;
- for (i = 0; (file_buffer = info_loaded_files[i]); i++)
- if ((strcmp (filename, file_buffer->filename) == 0) ||
- (strcmp (filename, file_buffer->fullpath) == 0))
+ 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)
{
free (file_buffer->filename);
free (file_buffer->fullpath);
@@ -1020,13 +1106,17 @@ forget_info_file (filename)
if (file_buffer->contents)
free (file_buffer->contents);
- /* Note that 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 () also kills the subfiles list, since
+ the subfiles list is only of use in conjunction with tags. */
free_file_buffer_tags (file_buffer);
- while ((info_loaded_files[i] = info_loaded_files[++i]))
- ;
+ /* Move rest of list down. */
+ while (info_loaded_files[i + 1])
+ {
+ info_loaded_files[i] = info_loaded_files[i + 1];
+ i++;
+ }
+ info_loaded_files[i] = 0;
break;
}
@@ -1037,17 +1127,17 @@ static void
free_file_buffer_tags (file_buffer)
FILE_BUFFER *file_buffer;
{
- register int i;
+ int i;
if (file_buffer->tags)
{
- register TAG *tag;
+ TAG *tag;
for (i = 0; (tag = file_buffer->tags[i]); i++)
free_info_tag (tag);
free (file_buffer->tags);
- file_buffer->tags = (TAG **)NULL;
+ file_buffer->tags = NULL;
file_buffer->tags_slots = 0;
}
@@ -1057,7 +1147,7 @@ free_file_buffer_tags (file_buffer)
free (file_buffer->subfiles[i]);
free (file_buffer->subfiles);
- file_buffer->subfiles = (char **)NULL;
+ file_buffer->subfiles = NULL;
}
}
@@ -1084,6 +1174,7 @@ static void
info_reload_file_buffer_contents (fb)
FILE_BUFFER *fb;
{
+ int is_compressed;
#if defined (HANDLE_MAN_PAGES)
/* If this is the magic manpage node, don't try to reload, just give up. */
@@ -1095,8 +1186,9 @@ info_reload_file_buffer_contents (fb)
/* Let the filesystem do all the work for us. */
fb->contents =
- filesys_read_info_file (fb->fullpath, &(fb->filesize), &(fb->finfo));
- if (fb->filesize != (long) (fb->finfo.st_size))
+ filesys_read_info_file (fb->fullpath, &(fb->filesize), &(fb->finfo),
+ &is_compressed);
+ if (is_compressed)
fb->flags |= N_IsCompressed;
}
@@ -1157,7 +1249,7 @@ adjust_nodestart (node, min, max)
(strncmp (node->nodename, nodedef, offset) == 0))
{
node->contents = nodestart;
- return (node_body.buffer + position);
+ return node_body.buffer + position;
}
}
}
@@ -1173,7 +1265,7 @@ adjust_nodestart (node, min, max)
/* If the node couldn't be found, we lose big. */
if (position == -1)
- return ((char *)NULL);
+ return NULL;
/* Otherwise, the node was found, but the tags table could need updating
(if we used a tag to get here, that is). Set the flag in NODE->flags. */
@@ -1181,5 +1273,5 @@ adjust_nodestart (node, min, max)
node->contents += skip_node_separator (node->contents);
if (node->flags & N_HasTagsTable)
node->flags |= N_UpdateTags;
- return (node_body.buffer + position);
+ return node_body.buffer + position;
}
diff --git a/gnu/usr.bin/texinfo/info/pcterm.c b/gnu/usr.bin/texinfo/info/pcterm.c
new file mode 100644
index 00000000000..a7aa4f3704b
--- /dev/null
+++ b/gnu/usr.bin/texinfo/info/pcterm.c
@@ -0,0 +1,747 @@
+/* pc_term.c -- How to handle the PC terminal for Info under MS-DOS/MS-Windows.
+ $Id: pcterm.c,v 1.1.1.1 2000/02/09 01:25:07 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+/* WARNING WARNING WARNING!!!
+ This probably won't work as is with anything but DJGPP! However, Borland
+ should come close, and other PC compilers will need minor modifications. */
+
+/* intl/libintl.h defines a macro `gettext' which
+ conflicts with conio.h header. */
+#ifdef gettext
+# undef gettext
+# define gettext _gettext
+#endif
+
+#include <pc.h>
+#include <keys.h>
+#include <conio.h>
+
+#include "variables.h"
+
+extern int speech_friendly; /* defined in info.c */
+
+#ifdef max
+# undef max
+#endif
+#ifdef min
+# undef min
+#endif
+#define max(x,y) ((x)>(y) ? (x) : (y))
+#define min(x,y) ((x)<(y) ? (x) : (y))
+
+/* **************************************************************** */
+/* */
+/* PC Terminal Output Functions */
+/* */
+/* **************************************************************** */
+
+static struct text_info outside_info; /* holds screen params outside Info */
+static unsigned char norm_attr, inv_attr;
+
+static unsigned const char * find_sequence (int);
+
+/* Turn on reverse video. */
+static void
+pc_begin_inverse (void)
+{
+ textattr (inv_attr);
+}
+
+/* Turn off reverse video. */
+static void
+pc_end_inverse (void)
+{
+ textattr (norm_attr);
+}
+
+/* Move the cursor up one line. */
+static void
+pc_up_line (void)
+{
+ int x, y;
+ ScreenGetCursor (&y, &x);
+ ScreenSetCursor (max (y-1, 0), x);
+}
+
+/* Move the cursor down one line. */
+static void
+pc_down_line (void)
+{
+ int x, y;
+ ScreenGetCursor (&y, &x);
+ ScreenSetCursor (min (screenheight-1, y+1), x);
+}
+
+/* Clear the entire terminal screen. */
+static void
+pc_clear_screen (void)
+{
+ ScreenClear ();
+}
+
+/* Clear from the current position of the cursor to the end of the line. */
+static void
+pc_clear_to_eol (void)
+{
+ clreol (); /* perhaps to be replaced by a loop */
+}
+
+/* Set the global variables SCREENWIDTH and SCREENHEIGHT. */
+static void
+pc_get_screen_size(void)
+{
+ /* Current screen dimensions are the default. */
+ if (!outside_info.screenheight) /* paranoia */
+ gettextinfo (&outside_info);
+ screenwidth = outside_info.screenwidth;
+ screenheight = outside_info.screenheight;
+
+ /* Environment variable "LINES" overrides the default. */
+ if (getenv ("LINES") != NULL)
+ screenheight = atoi (getenv ("LINES"));
+
+ /* Environment variable "INFO_LINES" overrides "LINES". */
+ if (getenv ("INFO_LINES") != NULL)
+ screenheight = atoi (getenv ("INFO_LINES"));
+}
+
+/* Move the cursor to the terminal location of X and Y. */
+static void
+pc_goto_xy (x, y)
+ int x, y;
+{
+ ScreenSetCursor (y, x); /* yes, pc.h says ScreenSetCursor (row, column) !! */
+}
+
+/* Print STRING to the terminal at the current position. */
+static void
+pc_put_text (string)
+ char *string;
+{
+ if (speech_friendly)
+ fputs (string, stdout);
+ else
+ cputs (string);
+}
+
+/* Ring the terminal bell. The bell is rung visibly if the terminal is
+ capable of doing that, and if terminal_use_visible_bell_p is non-zero. */
+static void
+pc_ring_bell(void)
+{
+ if (terminal_has_visible_bell_p && terminal_use_visible_bell_p)
+ ScreenVisualBell ();
+ else
+ {
+ printf ("%c",'\a');
+ fflush (stdout);
+ }
+}
+
+/* Print NCHARS from STRING to the terminal at the current position. */
+static void
+pc_write_chars (string, nchars)
+ char *string;
+ int nchars;
+{
+ if (!nchars)
+ return;
+
+ if (speech_friendly)
+ printf ("%.*s",nchars, string);
+ else
+ cprintf ("%..*s",nchars, string);
+}
+
+/* Scroll an area of the terminal from START to (and excluding) END,
+ AMOUNT lines. If AMOUNT is negative, the lines are scrolled
+ towards the top of the screen, else they are scrolled towards the
+ bottom of the screen. The lines of the old region which do not
+ overlap the new region are cleared, to mimic terminal operation. */
+static void
+pc_scroll_terminal (start, end, amount)
+ int start, end, amount;
+{
+ int line_to_clear = amount > 0 ? start : end + amount;
+
+ /* Move the text. Note that `movetext' expects 1-based coordinates. */
+ movetext (1, start + 1, ScreenCols (), end, 1, start + amount + 1);
+
+ /* Now clear the lines which were left unoccupied. */
+ if (amount < 0)
+ amount = -amount;
+ while (amount--)
+ {
+ ScreenSetCursor (line_to_clear++, 0);
+ clreol ();
+ }
+}
+
+/* Put the screen in the video mode and colors which Info will use.
+ Prepare to start using the terminal to read characters singly. */
+static void
+pc_prep_terminal (void)
+{
+ int tty;
+
+ /* Do not set screen height if we already have it, because
+ doing so erases the screen. */
+ if (screenheight != ScreenRows ())
+ _set_screen_lines (screenheight);
+
+ /* Don't fail if they asked for screen dimensions that their
+ hardware cannot support. */
+ screenheight = ScreenRows ();
+ screenwidth = ScreenCols ();
+
+ /* Try setting the colors user asked for. */
+ textattr (norm_attr);
+ ScreenClear ();
+
+ /* Switch console reads to binary mode. */
+ tty = fileno (stdin);
+#ifdef __DJGPP__
+ setmode (tty, O_BINARY);
+ __djgpp_set_ctrl_c (1); /* re-enable SIGINT generation by Ctrl-C */
+#endif
+}
+
+/* Restore the tty settings back to what they were before we started using
+ this terminal. */
+static void
+pc_unprep_terminal (void)
+{
+ int tty;
+
+ textattr (outside_info.normattr);
+
+ /* Do not set screen height if we already have it, because
+ doing so erases the screen. */
+ if (outside_info.screenheight != ScreenRows ())
+ {
+ _set_screen_lines (outside_info.screenheight);
+ textmode (LASTMODE);
+ }
+ else
+ pc_clear_to_eol (); /* for text attributes to really take effect */
+
+ /* Switch back to text mode on stdin. */
+ tty = fileno (stdin);
+#ifdef __DJGPP__
+ setmode (tty, O_TEXT);
+#endif
+}
+
+/* Initialize the terminal which is known as TERMINAL_NAME. If this
+ terminal doesn't have cursor addressability, `terminal_is_dumb_p'
+ becomes nonzero. The variables SCREENHEIGHT and SCREENWIDTH are set
+ to the dimensions that this terminal actually has. The variable
+ TERMINAL_HAS_META_P becomes nonzero if this terminal supports a Meta
+ key. Finally, the terminal screen is cleared. */
+static void
+pc_initialize_terminal (term_name)
+ char *term_name;
+{
+ char *info_colors;
+
+ if (!term_name)
+ {
+ term_name = getenv ("TERM");
+ if (!term_name)
+ term_name = "pc-dos"; /* ``what's in a name?'' */
+ }
+
+ /* Get current video information, to be restored later. */
+ if (outside_info.screenwidth == 0)
+ gettextinfo (&outside_info);
+
+ /* Current screen colors are the default. */
+ norm_attr = outside_info.normattr;
+ inv_attr = (((outside_info.normattr & 7) << 4) |
+ ((outside_info.normattr & 0x7f) >> 4));
+
+ /* Does the user want non-default colors? */
+ info_colors = getenv ("INFO_COLORS");
+ if ((info_colors != (char *)0) && !speech_friendly)
+ {
+ /* Decode a color from a string descriptor.
+ The descriptor string is a sequence of color specifiers separated
+ by a non-numeric character. Each color specifier should represent
+ a small integer which fits into an unsigned char, and can be given
+ in any base supported by strtoul. Examples of valid descriptors:
+
+ "10 31"
+ "0x13/0x45"
+ "007.077"
+
+ The separator between two color specifiers can be any character which
+ cannot be used in a printed representation of an integer number. */
+ char *endp;
+ unsigned long color_desc = strtoul (info_colors, &endp, 0);
+
+ if (color_desc <= UCHAR_MAX)
+ {
+ norm_attr = (unsigned char)color_desc;
+ color_desc = strtoul (endp + 1, &endp, 0);
+ if (color_desc <= UCHAR_MAX)
+ inv_attr = (unsigned char)color_desc;
+ }
+ }
+
+ /* We can scroll. */
+ terminal_can_scroll = 1;
+
+ /* We know how to produce a visible bell, if somebody's looking... */
+ if (!speech_friendly)
+ terminal_has_visible_bell_p = 1;
+
+ /* We have a Meta key. */
+ terminal_has_meta_p = 1;
+
+ /* We are *certainly* NOT dumb! */
+ terminal_is_dumb_p = 0;
+
+ pc_get_screen_size ();
+
+ /* Store the arrow keys. */
+ term_ku = (char *)find_sequence (K_Up);
+ term_kd = (char *)find_sequence (K_Down);
+ term_kr = (char *)find_sequence (K_Right);
+ term_kl = (char *)find_sequence (K_Left);
+
+ term_kP = (char *)find_sequence (K_PageUp);
+ term_kN = (char *)find_sequence (K_PageDown);
+
+ /* Set all the hooks to our PC-specific functions. */
+ terminal_begin_inverse_hook = pc_begin_inverse;
+ terminal_end_inverse_hook = pc_end_inverse;
+ terminal_prep_terminal_hook = pc_prep_terminal;
+ terminal_unprep_terminal_hook = pc_unprep_terminal;
+ terminal_up_line_hook = pc_up_line;
+ terminal_down_line_hook = pc_down_line;
+ terminal_clear_screen_hook = pc_clear_screen;
+ terminal_clear_to_eol_hook = pc_clear_to_eol;
+ terminal_get_screen_size_hook = pc_get_screen_size;
+ terminal_goto_xy_hook = pc_goto_xy;
+ terminal_put_text_hook = pc_put_text;
+ terminal_ring_bell_hook = pc_ring_bell;
+ terminal_write_chars_hook = pc_write_chars;
+ terminal_scroll_terminal_hook = pc_scroll_terminal;
+}
+
+/* **************************************************************** */
+/* */
+/* How to Read Characters From the PC Terminal */
+/* */
+/* **************************************************************** */
+
+/* This will most certainly work ONLY with DJGPP. */
+#ifdef __DJGPP__
+
+#include <errno.h>
+#include <sys/fsext.h>
+#include <dpmi.h>
+
+/* Translation table for some special keys.
+ Arrow keys which are standard on other keyboards are translated into
+ standard ESC-sequences, in case somebody rebinds the simple keys
+ (like C-f, C-b, C-n, etc.).
+
+ The strange "\033\061" prefix in some keys is a numeric argument of
+ one, which means ``do the next command once''. It is here so that
+ when the according PC key is pressed in the middle of an incremental
+ search, Info doesn't see just an ASCII character like `n' or `B',
+ and doesn't add it to the search string; instead, it will exit the
+ incremental search and then perform the command. */
+static struct
+{
+ int inkey;
+ unsigned char const * const sequence;
+} DJGPP_keytab[] = { /* these are for moving between nodes... */
+ {K_Control_PageDown, "\033\061n"},
+ {K_Control_PageUp, "\033\061p"},
+ {K_Control_Up, "\033\061u"},
+ {K_Control_Down, "\033\061m"},
+ {K_Control_Center, "\033\061l"},
+
+ {K_Home, "\001"}, /* ...and these are for moving IN a node */
+ {K_End, "\005"}, /* they're Numeric-Keypad-Keys, so */
+ {K_Left, "\033[D"}, /* NUMLOCK should be off !! */
+ {K_Right, "\033[C"},
+ {K_Down, "\033[B"},
+ {K_Up, "\033[A"},
+ {K_PageDown, "\033[G"},
+ {K_PageUp, "\033[I"},
+ {K_Control_Left, "\033b"},
+ {K_Control_Right, "\033f"},
+ {K_Control_Home, "\033<"},
+ {K_Control_End, "\033>"},
+
+ {K_EHome, "\001"}, /* these are also for moving IN a node */
+ {K_EEnd, "\005"}, /* they're the "extended" (Grey) keys */
+ {K_ELeft, "\033[D"},
+ {K_ERight, "\033[C"},
+ {K_EDown, "\033[B"},
+ {K_EUp, "\033[A"},
+ {K_EPageDown, "\033[G"},
+ {K_EPageUp, "\033[I"},
+ {K_Control_ELeft, "\033b"},
+ {K_Control_ERight, "\033f"},
+ {K_Control_EHome, "\033<"},
+ {K_Control_EEnd, "\033>"},
+
+ {K_BackTab, "\033\011"},
+ {K_F1, "\10"}, /* YEAH, gimme that good old F-one-thing */
+ {K_Delete, "\177"}, /* to make Kp-Del be DEL (0x7f) */
+ {K_EDelete, "\177"}, /* to make Delete be DEL (0x7f) */
+
+ /* These are here to map more Alt-X keys to ESC X sequences. */
+ {K_Alt_Q, "\033q"},
+ {K_Alt_W, "\033w"},
+ {K_Alt_E, "\033e"},
+ {K_Alt_R, "\033r"},
+ {K_Alt_T, "\033t"},
+ {K_Alt_Y, "\033y"},
+ {K_Alt_U, "\033u"},
+ {K_Alt_I, "\033i"},
+ {K_Alt_O, "\033o"},
+ {K_Alt_P, "\033p"},
+ {K_Alt_LBracket, "\033["},
+ {K_Alt_RBracket, "\033]"},
+ {K_Alt_Return, "\033\015"},
+ {K_Alt_A, "\033a"},
+ {K_Alt_S, "\033s"},
+ {K_Alt_D, "\033d"},
+ {K_Alt_F, "\033f"},
+ {K_Alt_G, "\033g"},
+ {K_Alt_H, "\033h"},
+ {K_Alt_J, "\033j"},
+ {K_Alt_K, "\033k"},
+ {K_Alt_L, "\033l"},
+ {K_Alt_Semicolon, "\033;"},
+ {K_Alt_Quote, "\033'"},
+ {K_Alt_Backquote, "\033`"},
+ {K_Alt_Backslash, "\033\\"},
+ {K_Alt_Z, "\033z"},
+ {K_Alt_X, "\033x"},
+ {K_Alt_C, "\033c"},
+ {K_Alt_V, "\033v"},
+ {K_Alt_B, "\033b"},
+ {K_Alt_N, "\033n"},
+ {K_Alt_M, "\033m"},
+ {K_Alt_Comma, "\033<"}, /* our reader cannot distinguish between */
+ {K_Alt_Period, "\033>"}, /* Alt-. and Alt->, so we cheat a little */
+ {K_Alt_Slash, "\033?"}, /* ditto, to get Alt-? */
+ {K_Alt_Backspace, "\033\177"}, /* M-DEL, to delete word backwards */
+ {K_Alt_1, "\033\061"},
+ {K_Alt_2, "\033\062"},
+ {K_Alt_3, "\033\063"},
+ {K_Alt_4, "\033\064"},
+ {K_Alt_5, "\033\065"},
+ {K_Alt_6, "\033\066"},
+ {K_Alt_7, "\033\067"},
+ {K_Alt_8, "\033\070"},
+ {K_Alt_9, "\033\071"},
+ {K_Alt_0, "\033\060"},
+ {K_Alt_Dash, "\033\055"},
+ {K_Alt_EPageUp, "\033\033[I"},
+ {K_Alt_EPageDown, "\033\033[G"},
+ {K_Alt_Equals, "\033\075"},
+ {K_Alt_EDelete, "\033\177"},
+ {K_Alt_Tab, "\033\011"},
+ {0, 0}
+};
+
+/* Given a key, return the sequence of characters which
+ our keyboard driver generates. */
+static unsigned const char *
+find_sequence (int key)
+{
+ int i;
+
+ for (i = 0; DJGPP_keytab[i].inkey; i++)
+ if (key == DJGPP_keytab[i].inkey)
+ return DJGPP_keytab[i].sequence;
+
+ return (unsigned const char *)NULL;
+}
+
+/* Return zero if a key is pending in the
+ keyboard buffer, non-zero otherwise. */
+static int
+kbd_buffer_empty (void)
+{
+ __dpmi_regs r;
+ int retval;
+
+ r.h.ah = 0x11; /* Get enhanced keyboard status */
+ __dpmi_int (0x16, &r);
+
+ /* If the keyboard buffer is empty, the Zero Flag will be set. */
+ return (r.x.flags & 0x40) == 0x40;
+}
+
+/* The buffered characters pending to be read.
+ Actually, Info usually reads a single character, but when we
+ translate a key into a sequence of characters, we keep them here. */
+static unsigned char buffered[512];
+
+/* Index of the next buffered character to be returned. */
+static int buf_idx;
+
+/* Return the number of characters waiting to be read. */
+long
+pc_term_chars_avail (void)
+{
+ if (buf_idx >= sizeof (buffered)) /* paranoia */
+ {
+ buf_idx = 0;
+ buffered[buf_idx] = '\0';
+ return 0;
+ }
+ else
+ return (long)strlen (buffered + buf_idx);
+}
+
+/* Our special terminal keyboard reader. It will be called by
+ low-level libc functions when the application calls `read' or
+ the ANSI-standard stream-oriented read functions. If the
+ caller wants to read the terminal, we redirect the call to
+ the BIOS keyboard functions, since that lets us recognize more
+ keys than DOS does. */
+static int
+keyboard_read (__FSEXT_Fnumber func, int *retval, va_list rest_args)
+{
+ /* When we are called, REST_ARGS are: file_descriptor, buf, nbytes. */
+ unsigned char *buf;
+ size_t nbytes, nread = 0;
+ int fd = va_arg (rest_args, int);
+
+ /* Is this call for us? */
+ if (func != __FSEXT_read || !isatty (fd))
+ return 0; /* and the usual DOS call will be issued */
+
+ buf = va_arg (rest_args, unsigned char *);
+ nbytes = va_arg (rest_args, size_t);
+
+ if (!buf)
+ {
+ errno = EINVAL;
+ *retval = -1;
+ return 1;
+ }
+ if (!nbytes)
+ {
+ *retval = 0;
+ return 1;
+ }
+
+ /* Loop here until enough bytes has been read. */
+ do
+ {
+ int key;
+
+ /* If any ``buffered characters'' are left, return as much
+ of them as the caller wanted. */
+ while (buffered[buf_idx] && nbytes)
+ {
+ *buf++ = buffered[buf_idx++];
+ nread++;
+ nbytes--;
+ }
+
+ if (nbytes <= 0)
+ break;
+
+ /* Wait for another key.
+ We do that in a busy-waiting loop so we don't get parked
+ inside a BIOS call, which will effectively disable signals.
+ While we wait for them to type something, we repeatedly
+ release the rest of our time slice, so that other programs
+ in a multitasking environment, such as Windows, get more cycles. */
+ while (kbd_buffer_empty ())
+ __dpmi_yield ();
+
+ key = getxkey ();
+
+ /* Translate the key if necessary.
+ Untranslated non-ASCII keys are silently ignored. */
+ if ((key & 0x300) != 0)
+ {
+ unsigned char const * key_sequence = find_sequence (key);
+
+ if (key_sequence != NULL)
+ {
+ strcpy (buffered, key_sequence);
+ buf_idx = 0;
+ }
+ }
+ else if (key == K_Control_Z)
+ raise (SIGUSR1); /* we don't have SIGTSTP, so simulate it */
+ else if (key <= 0xff)
+ {
+ *buf++ = key;
+ nbytes--;
+ nread++;
+ }
+ }
+ while (nbytes > 0);
+
+ *retval = nread;
+ return 1; /* meaning that we handled the call */
+}
+
+/* Install our keyboard handler.
+ This is called by the startup code before `main'. */
+static void __attribute__((constructor))
+install_keyboard_handler (void)
+{
+ __FSEXT_set_function (fileno (stdin), keyboard_read);
+
+ /* We need to set this single hook here; the rest
+ will be set by pc_initialize_terminal when it is called. */
+ terminal_initialize_terminal_hook = pc_initialize_terminal;
+}
+
+#endif /* __DJGPP__ */
+
+/* **************************************************************** */
+/* */
+/* Emulation of SIGTSTP on Ctrl-Z */
+/* */
+/* **************************************************************** */
+
+#include <limits.h>
+#include "signals.h"
+#include "session.h"
+
+#ifndef PATH_MAX
+# define PATH_MAX 512
+#endif
+
+/* Effectively disable signals which aren't defined
+ (assuming no signal can ever be zero).
+ SIGINT is ANSI, so we expect it to be always defined. */
+#ifndef SIGUSR1
+# define SIGUSR1 0
+#endif
+#ifndef SIGQUIT
+# define SIGQUIT 0
+#endif
+
+int
+kill (pid_t pid, int sig)
+{
+ static char interrupted_msg[] = "Interrupted\r\n";
+ static char stopped_msg[] = "Stopped. Type \"exit RET\" to return.\r\n";
+ char cwd[PATH_MAX + 1];
+
+ if (pid == getpid ()
+ || pid == 0
+ || pid == -1
+ || pid == -getpid ())
+ {
+ switch (sig)
+ {
+ RETSIGTYPE (*old_INT)(int), (*old_QUIT)(int);
+
+ case SIGINT:
+#ifdef __DJGPP__
+ /* If SIGINT was generated by a readable key, we want to remove
+ it from the PC keyboard buffer, so that DOS and other
+ programs never see it. DJGPP signal-handling mechanism
+ doesn't remove the INT key from the keyboard buffer. */
+ if (!kbd_buffer_empty ())
+ getxkey ();
+#endif
+ pc_write_chars (interrupted_msg, sizeof (interrupted_msg) - 1);
+ xexit (1);
+ case SIGUSR1:
+ /* Simulate SIGTSTP by invoking a subsidiary shell. */
+ pc_goto_xy (0, outside_info.screenheight - 1);
+ pc_clear_to_eol ();
+ pc_write_chars (stopped_msg, sizeof (stopped_msg) - 1);
+
+ /* The child shell can change the working directory, so
+ we need to save and restore it, since it is global. */
+ if (!getcwd (cwd, PATH_MAX)) /* should never happen */
+ cwd[0] = '\0';
+
+ /* We don't want to get fatal signals while the subshell runs. */
+ old_INT = signal (SIGINT, SIG_IGN);
+ old_QUIT = signal (SIGQUIT, SIG_IGN);
+ system ("");
+ if (*cwd)
+ chdir (cwd);
+ signal (SIGINT, old_INT);
+ signal (SIGQUIT, old_QUIT);
+ break;
+ default:
+ if (sig)
+ raise (sig);
+ break;
+ }
+ return 0;
+ }
+ else
+ return -1;
+}
+
+/* These should never be called, but they make the linker happy. */
+
+void tputs (char *a, int b, int (*c)())
+{
+ perror ("tputs");
+}
+
+char* tgoto (char*a, int b, int c)
+{
+ perror ("tgoto"); return 0; /* here and below, added dummy retvals */
+}
+
+int tgetnum (char*a)
+{
+ perror ("tgetnum"); return 0;
+}
+
+int tgetflag (char*a)
+{
+ perror ("tgetflag"); return 0;
+}
+
+char* tgetstr (char *a, char **b)
+{
+ perror ("tgetstr"); return 0;
+}
+
+int tgetent (char*a, char*b)
+{
+ perror ("tgetent"); return 0;
+}
+
+int tcgetattr(int fildes, struct termios *termios_p)
+{
+ perror ("tcgetattr"); return 0;
+}
+
+int tcsetattr(int fd, int opt_actions, const struct termios *termios_p)
+{
+ perror ("tcsetattr"); return 0;
+}
diff --git a/gnu/usr.bin/texinfo/info/search.c b/gnu/usr.bin/texinfo/info/search.c
index 0e8e619256a..89720f410cf 100644
--- a/gnu/usr.bin/texinfo/info/search.c
+++ b/gnu/usr.bin/texinfo/info/search.c
@@ -1,9 +1,7 @@
-/* search.c -- How to search large bodies of text. */
+/* search.c -- searching large bodies of text.
+ $Id: search.c,v 1.1.1.3 2000/02/09 01:24:52 espie Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 97, 98 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
@@ -198,7 +196,7 @@ search_backward (input_string, binding)
{
c = *(buff - i);
- if (c != string[i] && (alternate && c != alternate[i]))
+ if (c != string[i] && (!alternate || c != alternate[i]))
break;
}
@@ -292,7 +290,7 @@ skip_whitespace_and_newlines (string)
{
register int i;
- for (i = 0; string && (whitespace (string[i]) || string[i] == '\n'); i++);
+ for (i = 0; string && whitespace_or_newline (string[i]); i++);
return (i);
}
diff --git a/gnu/usr.bin/texinfo/info/session.h b/gnu/usr.bin/texinfo/info/session.h
index f1e5b23be8a..09aca7e4fe8 100644
--- a/gnu/usr.bin/texinfo/info/session.h
+++ b/gnu/usr.bin/texinfo/info/session.h
@@ -1,9 +1,7 @@
-/* session.h -- Functions found in session.c. */
+/* session.h -- Functions found in session.c.
+ $Id: session.h,v 1.1.1.3 2000/02/09 01:24:59 espie Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 98, 99 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,7 +19,7 @@
Written by Brian Fox (bfox@ai.mit.edu). */
-#if !defined (SESSION_H)
+#ifndef SESSION_H
#define SESSION_H
#include "info.h"
@@ -76,6 +74,7 @@ extern void info_select_reference ();
extern int info_any_buffered_input_p ();
extern void print_node ();
extern void dump_node_to_file (), dump_nodes_to_file ();
+extern char *program_name_from_file_name ();
/* Do the physical deletion of WINDOW, and forget this window and
associated nodes. */
@@ -110,6 +109,8 @@ extern void info_move_to_prev_xref (), info_move_to_next_xref ();
extern void info_scroll_forward (), info_scroll_backward ();
extern void info_redraw_display (), info_toggle_wrap ();
extern void info_move_to_window_line ();
+extern void info_up_line (), info_down_line ();
+extern void info_scroll_half_screen_down (), info_scroll_half_screen_up ();
/* Manipulating multiple windows. */
extern void info_split_window (), info_delete_window ();
@@ -123,6 +124,8 @@ extern void info_last_node (), info_first_node (), info_history_node ();
extern void info_goto_node (), info_top_node (), info_dir_node ();
extern void info_global_next_node (), info_global_prev_node ();
extern void info_kill_node (), info_view_file ();
+extern void info_menu_sequence ();
+extern NODE *info_follow_menus (/* initial_node, menus, errstr, errarg */);
/* Selecting cross references. */
extern void info_menu_digit (), info_menu_item (), info_xref_item ();
@@ -136,6 +139,8 @@ extern void info_initialize_numeric_arg (), info_numeric_arg_digit_loop ();
/* Searching commands. */
extern void info_search (), isearch_forward (), isearch_backward ();
+extern void info_search_case_sensitively (), info_search_backward ();
+extern void info_search_next (), info_search_previous ();
/* Dumping and printing nodes. */
extern void info_print_node ();
@@ -143,4 +148,4 @@ extern void info_print_node ();
/* Miscellaneous commands. */
extern void info_abort_key (), info_quit (), info_do_lowercase_version ();
-#endif /* SESSION_H */
+#endif /* not SESSION_H */
diff --git a/gnu/usr.bin/texinfo/info/signals.c b/gnu/usr.bin/texinfo/info/signals.c
index b93a585f567..0fd9fc0c63a 100644
--- a/gnu/usr.bin/texinfo/info/signals.c
+++ b/gnu/usr.bin/texinfo/info/signals.c
@@ -1,9 +1,7 @@
-/* signals.c -- Install and maintain Info signal handlers. */
+/* signals.c -- install and maintain Info signal handlers.
+ $Id: signals.c,v 1.1.1.3 2000/02/09 01:25:00 espie Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1993, 94, 95, 98 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
@@ -30,6 +28,9 @@
/* */
/* **************************************************************** */
+/* Non-zero when our signal handler has been called to handle SIGWINCH. */
+static int in_sigwinch = 0;
+
#if !defined (HAVE_SIGPROCMASK) && defined (HAVE_SIGSETMASK)
/* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */
static void
@@ -66,7 +67,7 @@ typedef RETSIGTYPE signal_handler ();
static RETSIGTYPE info_signal_handler ();
static signal_handler *old_TSTP, *old_TTOU, *old_TTIN;
-static signal_handler *old_WINCH, *old_INT;
+static signal_handler *old_WINCH, *old_INT, *old_USR1;
void
initialize_info_signal_handler ()
@@ -84,6 +85,11 @@ initialize_info_signal_handler ()
#if defined (SIGINT)
old_INT = (signal_handler *) signal (SIGINT, info_signal_handler);
#endif
+
+#if defined (SIGUSR1)
+ /* Used by DJGPP to simulate SIGTSTP on Ctrl-Z. */
+ old_USR1 = (signal_handler *) signal (SIGUSR1, info_signal_handler);
+#endif
}
static void
@@ -97,6 +103,19 @@ redisplay_after_signal ()
fflush (stdout);
}
+static void
+reset_info_window_sizes ()
+{
+ terminal_goto_xy (0, 0);
+ fflush (stdout);
+ terminal_unprep_terminal ();
+ terminal_get_screen_size ();
+ terminal_prep_terminal ();
+ display_initialize_display (screenwidth, screenheight);
+ window_new_screen_size (screenwidth, screenheight, NULL);
+ redisplay_after_signal ();
+}
+
static RETSIGTYPE
info_signal_handler (sig)
int sig;
@@ -145,28 +164,43 @@ info_signal_handler (sig)
}
break;
-#if defined (SIGWINCH)
+#if defined (SIGWINCH) || defined (SIGUSR1)
+#ifdef SIGWINCH
case SIGWINCH:
+#endif
+#ifdef SIGUSR1
+ case SIGUSR1:
+#endif
{
- /* Turn off terminal IO, tell our parent that the window has changed,
- then reinitialize the terminal and rebuild our windows. */
- old_signal_handler = &old_WINCH;
- terminal_goto_xy (0, 0);
- fflush (stdout);
- terminal_unprep_terminal ();
- signal (sig, *old_signal_handler);
- UNBLOCK_SIGNAL (sig);
- kill (getpid (), sig);
-
- /* After our old signal handler returns... */
- terminal_get_screen_size ();
- terminal_prep_terminal ();
- display_initialize_display (screenwidth, screenheight);
- window_new_screen_size (screenwidth, screenheight, (VFunction *)NULL);
- *old_signal_handler = (signal_handler *) signal (sig, info_signal_handler);
- redisplay_after_signal ();
+ if (!in_sigwinch) {
+ in_sigwinch++;
+
+ /* Turn off terminal IO, tell our parent that the window has changed,
+ then reinitialize the terminal and rebuild our windows. */
+#ifdef SIGWINCH
+ if (sig == SIGWINCH)
+ old_signal_handler = &old_WINCH;
+#endif
+#ifdef SIGUSR1
+ if (sig == SIGUSR1)
+ old_signal_handler = &old_USR1;
+#endif
+ terminal_goto_xy (0, 0);
+ fflush (stdout);
+ terminal_unprep_terminal ();
+ signal (sig, *old_signal_handler);
+ UNBLOCK_SIGNAL (sig);
+ kill (getpid (), sig);
+
+ /* After our old signal handler returns... */
+ *old_signal_handler
+ = (signal_handler *) signal (sig, info_signal_handler);
+ terminal_prep_terminal ();
+ reset_info_window_sizes ();
+ in_sigwinch--;
+ }
}
break;
-#endif /* SIGWINCH */
+#endif /* SIGWINCH || SIGUSR1 */
}
}
diff --git a/gnu/usr.bin/texinfo/install-sh b/gnu/usr.bin/texinfo/install-sh
index 2c212ccf4ae..ebc66913e94 100644
--- a/gnu/usr.bin/texinfo/install-sh
+++ b/gnu/usr.bin/texinfo/install-sh
@@ -20,8 +20,8 @@
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
# set DOITPROG to echo to test this script
diff --git a/gnu/usr.bin/texinfo/intl/ChangeLog b/gnu/usr.bin/texinfo/intl/ChangeLog
index ecff6f6b2cd..198950159da 100644
--- a/gnu/usr.bin/texinfo/intl/ChangeLog
+++ b/gnu/usr.bin/texinfo/intl/ChangeLog
@@ -1,3 +1,67 @@
+1998-04-29 Ulrich Drepper <drepper@cygnus.com>
+
+ * intl/localealias.c (read_alias_file): Use unsigned char for
+ local variables. Remove unused variable tp.
+ * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
+ for type of codeset. For loosing Solaris systems.
+ * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
+ * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
+ len if not needed.
+ Patches by Jim Meyering.
+
+1998-04-28 Ulrich Drepper <drepper@cygnus.com>
+
+ * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
+ mmap is not supported.
+
+ * hash-string.h: Don't include <values.h>.
+
+1998-04-27 Ulrich Drepper <drepper@cygnus.com>
+
+ * textdomain.c: Use strdup is available.
+
+ * localealias.c: Define HAVE_MEMPCPY so that we can use this
+ function. Define and use semapahores to protect modfication of
+ global objects when compiling for glibc. Add code to allow
+ freeing alias table.
+
+ * l10nflist.c: Don't assume stpcpy not being a macro.
+
+ * gettextP.h: Define internal_function macri if not already done.
+ Use glibc byte-swap macros instead of defining SWAP when compiled
+ for glibc.
+ (struct loaded_domain): Add elements to allow unloading.
+
+ * Makefile.in (distclean): Don't remove libintl.h here.
+
+ * bindtextdomain.c: Carry over changes from glibc. Use strdup if
+ available.
+
+ * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal
+ functions. Add memory freeing code for glibc.
+
+ * dgettext.c: Update copyright.
+
+ * explodename.c: Include stdlib.h and string.h only if they exist.
+ Use strings.h eventually.
+
+ * finddomain.c: Mark internal functions. Use strdup if available.
+ Add memory freeing code for glibc.
+
+1997-10-10 20:00 Ulrich Drepper <drepper@cygnus.com>
+
+ * libgettext.h: Fix dummy textdomain and bindtextdomain macros.
+ They should return reasonable values.
+ Reported by Tom Tromey <tromey@cygnus.com>.
+
+1997-09-16 03:33 Ulrich Drepper <drepper@cygnus.com>
+
+ * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
+ * intlh.inst.in: Likewise.
+ Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
+
+ * libintl.glibc: Update from current glibc version.
+
1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
* intlh.inst.in: Reformat copyright.
diff --git a/gnu/usr.bin/texinfo/intl/Makefile.in b/gnu/usr.bin/texinfo/intl/Makefile.in
index a41fb5796b0..970253a111a 100644
--- a/gnu/usr.bin/texinfo/intl/Makefile.in
+++ b/gnu/usr.bin/texinfo/intl/Makefile.in
@@ -143,10 +143,12 @@ install-data: all
installcheck:
uninstall:
- dists="$(DISTFILES.common)"; \
- for file in $$dists; do \
- rm -f $(gettextsrcdir)/$$file; \
- done
+ if test "$(PACKAGE)" = "gettext"; then \
+ dists="$(DISTFILES.common)"; \
+ for file in $$dists; do \
+ rm -f $(gettextsrcdir)/$$file; \
+ done; \
+ fi
info dvi:
@@ -171,7 +173,7 @@ mostlyclean:
clean: mostlyclean
distclean: clean
- rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h
+ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
diff --git a/gnu/usr.bin/texinfo/intl/VERSION b/gnu/usr.bin/texinfo/intl/VERSION
index d31950a61d6..ee66b0612bc 100644
--- a/gnu/usr.bin/texinfo/intl/VERSION
+++ b/gnu/usr.bin/texinfo/intl/VERSION
@@ -1 +1 @@
-GNU gettext library from gettext-0.10.32
+GNU gettext library from gettext-0.10.35
diff --git a/gnu/usr.bin/texinfo/intl/bindtextdom.c b/gnu/usr.bin/texinfo/intl/bindtextdom.c
index 9fcb8d9f29b..d9c3f349e04 100644
--- a/gnu/usr.bin/texinfo/intl/bindtextdom.c
+++ b/gnu/usr.bin/texinfo/intl/bindtextdom.c
@@ -1,5 +1,5 @@
/* Implementation of the bindtextdomain(3) function
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -61,7 +61,9 @@ extern struct binding *_nl_domain_bindings;
prefix. So we have to make a difference here. */
#ifdef _LIBC
# define BINDTEXTDOMAIN __bindtextdomain
-# define strdup(str) __strdup (str)
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
#else
# define BINDTEXTDOMAIN bindtextdomain__
#endif
@@ -133,7 +135,9 @@ BINDTEXTDOMAIN (domainname, dirname)
else
{
/* We have to create a new binding. */
+#if !defined _LIBC && !defined HAVE_STRDUP
size_t len;
+#endif
struct binding *new_binding =
(struct binding *) malloc (sizeof (*new_binding));
diff --git a/gnu/usr.bin/texinfo/intl/dcgettext.c b/gnu/usr.bin/texinfo/intl/dcgettext.c
index a316bfd1086..c4c7a2c7d14 100644
--- a/gnu/usr.bin/texinfo/intl/dcgettext.c
+++ b/gnu/usr.bin/texinfo/intl/dcgettext.c
@@ -1,5 +1,5 @@
-/* Implementation of the dcgettext(3) function
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Implementation of the dcgettext(3) function.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -91,7 +91,9 @@ void free ();
because some ANSI C functions will require linking with this object
file and the name space must not be polluted. */
# define getcwd __getcwd
-# define stpcpy __stpcpy
+# ifndef stpcpy
+# define stpcpy __stpcpy
+# endif
#else
# if !defined HAVE_GETCWD
char *getwd ();
@@ -162,10 +164,11 @@ struct binding *_nl_domain_bindings;
/* Prototypes for local functions. */
static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
- const char *msgid));
-static const char *category_to_name PARAMS ((int category));
+ const char *msgid)) internal_function;
+static const char *category_to_name PARAMS ((int category)) internal_function;
static const char *guess_category_value PARAMS ((int category,
- const char *categoryname));
+ const char *categoryname))
+ internal_function;
/* For those loosing systems which don't have `alloca' we have to add
@@ -388,6 +391,7 @@ weak_alias (__dcgettext, dcgettext);
static char *
+internal_function
find_msg (domain_file, msgid)
struct loaded_l10nfile *domain_file;
const char *msgid;
@@ -476,6 +480,7 @@ find_msg (domain_file, msgid)
/* Return string representation of locale CATEGORY. */
static const char *
+internal_function
category_to_name (category)
int category;
{
@@ -535,6 +540,7 @@ category_to_name (category)
/* Guess value of current locale from value of the environment variables. */
static const char *
+internal_function
guess_category_value (category, categoryname)
int category;
const char *categoryname;
@@ -591,3 +597,28 @@ stpcpy (dest, src)
return dest - 1;
}
#endif
+
+
+#ifdef _LIBC
+/* If we want to free all resources we have to do some work at
+ program's end. */
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ struct binding *runp;
+
+ for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
+ {
+ free (runp->domainname);
+ if (runp->dirname != _nl_default_dirname)
+ /* Yes, this is a pointer comparison. */
+ free (runp->dirname);
+ }
+
+ if (_nl_current_default_domain != _nl_default_default_domain)
+ /* Yes, again a pointer comparison. */
+ free ((char *) _nl_current_default_domain);
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
diff --git a/gnu/usr.bin/texinfo/intl/dgettext.c b/gnu/usr.bin/texinfo/intl/dgettext.c
index 2fde6770f79..0510c2b071f 100644
--- a/gnu/usr.bin/texinfo/intl/dgettext.c
+++ b/gnu/usr.bin/texinfo/intl/dgettext.c
@@ -1,19 +1,19 @@
-/* dgettext.c -- implementation of the dgettext(3) function
- Copyright (C) 1995 Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* Implementation of the dgettext(3) function
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
diff --git a/gnu/usr.bin/texinfo/intl/explodename.c b/gnu/usr.bin/texinfo/intl/explodename.c
index 37c46e9d7b8..8066dc29962 100644
--- a/gnu/usr.bin/texinfo/intl/explodename.c
+++ b/gnu/usr.bin/texinfo/intl/explodename.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify
@@ -19,8 +19,15 @@
# include <config.h>
#endif
-#include <stdlib.h>
-#include <string.h>
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
#include <sys/types.h>
#include "loadinfo.h"
diff --git a/gnu/usr.bin/texinfo/intl/finddomain.c b/gnu/usr.bin/texinfo/intl/finddomain.c
index ec85d4de4d1..81ea29bf4e4 100644
--- a/gnu/usr.bin/texinfo/intl/finddomain.c
+++ b/gnu/usr.bin/texinfo/intl/finddomain.c
@@ -1,5 +1,5 @@
/* Handle list of needed message catalogs
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify
@@ -70,6 +70,7 @@ static struct loaded_l10nfile *_nl_loaded_domains;
the DOMAINNAME and CATEGORY parameters with respect to the currently
established bindings. */
struct loaded_l10nfile *
+internal_function
_nl_find_domain (dirname, locale, domainname)
const char *dirname;
char *locale;
@@ -95,9 +96,9 @@ _nl_find_domain (dirname, locale, domainname)
language[_territory][+audience][+special][,[sponsor][_revision]]
- Beside the first all of them are allowed to be missing. If the
- full specified locale is not found, the less specific one are
- looked for. The various part will be stripped of according to
+ Beside the first part all of them are allowed to be missing. If
+ the full specified locale is not found, the less specific one are
+ looked for. The various parts will be stripped off according to
the following order:
(1) revision
(2) sponsor
@@ -142,12 +143,18 @@ _nl_find_domain (dirname, locale, domainname)
alias_value = _nl_expand_alias (locale);
if (alias_value != NULL)
{
+#if defined _LIBC || defined HAVE_STRDUP
+ locale = strdup (alias_value);
+ if (locale == NULL)
+ return NULL;
+#else
size_t len = strlen (alias_value) + 1;
locale = (char *) malloc (len);
if (locale == NULL)
return NULL;
memcpy (locale, alias_value, len);
+#endif
}
/* Now we determine the single parts of the locale name. First
@@ -187,3 +194,23 @@ _nl_find_domain (dirname, locale, domainname)
return retval;
}
+
+
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ struct loaded_l10nfile *runp = _nl_loaded_domains;
+
+ while (runp != NULL)
+ {
+ struct loaded_l10nfile *here = runp;
+ if (runp->data != NULL)
+ _nl_unload_domain ((struct loaded_domain *) runp->data);
+ runp = runp->next;
+ free (here);
+ }
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
diff --git a/gnu/usr.bin/texinfo/intl/gettext.c b/gnu/usr.bin/texinfo/intl/gettext.c
index 1336d21e7c9..d929f98d68a 100644
--- a/gnu/usr.bin/texinfo/intl/gettext.c
+++ b/gnu/usr.bin/texinfo/intl/gettext.c
@@ -1,4 +1,4 @@
-/* Implementation of gettext(3) function
+/* Implementation of gettext(3) function.
Copyright (C) 1995, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
diff --git a/gnu/usr.bin/texinfo/intl/gettextP.h b/gnu/usr.bin/texinfo/intl/gettextP.h
index bb8d55235ad..00c52031972 100644
--- a/gnu/usr.bin/texinfo/intl/gettextP.h
+++ b/gnu/usr.bin/texinfo/intl/gettextP.h
@@ -1,5 +1,6 @@
/* Header describing internals of gettext library
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
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
@@ -30,11 +31,19 @@
# endif
#endif
+#ifndef internal_function
+# define internal_function
+#endif
+
#ifndef W
# define W(flag, data) ((flag) ? SWAP (data) : (data))
#endif
+#ifdef _LIBC
+# include <byteswap.h>
+# define SWAP(i) bswap_32 (i)
+#else
static nls_uint32 SWAP PARAMS ((nls_uint32 i));
static inline nls_uint32
@@ -43,11 +52,14 @@ SWAP (i)
{
return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
}
+#endif
struct loaded_domain
{
const char *data;
+ int use_mmap;
+ size_t mmap_size;
int must_swap;
nls_uint32 nstrings;
struct string_desc *orig_tab;
@@ -65,8 +77,12 @@ struct binding
struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
char *__locale,
- const char *__domainname));
-void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain));
+ const char *__domainname))
+ internal_function;
+void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
+ internal_function;
+void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
+ internal_function;
/* @@ begin of epilog @@ */
diff --git a/gnu/usr.bin/texinfo/intl/hash-string.h b/gnu/usr.bin/texinfo/intl/hash-string.h
index e66e8417a97..cacb38e479f 100644
--- a/gnu/usr.bin/texinfo/intl/hash-string.h
+++ b/gnu/usr.bin/texinfo/intl/hash-string.h
@@ -16,10 +16,6 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifdef HAVE_VALUES_H
-# include <values.h>
-#endif
-
/* @@ end of prolog @@ */
#ifndef PARAMS
diff --git a/gnu/usr.bin/texinfo/intl/l10nflist.c b/gnu/usr.bin/texinfo/intl/l10nflist.c
index 4e2bc130950..9c7dc18360f 100644
--- a/gnu/usr.bin/texinfo/intl/l10nflist.c
+++ b/gnu/usr.bin/texinfo/intl/l10nflist.c
@@ -1,6 +1,6 @@
/* Handle list of needed message catalogs
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
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
@@ -65,7 +65,9 @@
/* Rename the non ANSI C functions. This is required by the standard
because some ANSI C functions will require linking with this object
file and the name space must not be polluted. */
-# define stpcpy(dest, src) __stpcpy(dest, src)
+# ifndef stpcpy
+# define stpcpy(dest, src) __stpcpy(dest, src)
+# endif
#else
# ifndef HAVE_STPCPY
static char *stpcpy PARAMS ((char *dest, const char *src));
@@ -350,7 +352,7 @@ _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
names. */
const char *
_nl_normalize_codeset (codeset, name_len)
- const char *codeset;
+ const unsigned char *codeset;
size_t name_len;
{
int len = 0;
diff --git a/gnu/usr.bin/texinfo/intl/loadinfo.h b/gnu/usr.bin/texinfo/intl/loadinfo.h
index c67c2eb2e8e..f4ebf6d8112 100644
--- a/gnu/usr.bin/texinfo/intl/loadinfo.h
+++ b/gnu/usr.bin/texinfo/intl/loadinfo.h
@@ -1,3 +1,21 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
#ifndef PARAMS
# if __STDC__
# define PARAMS(args) args
@@ -32,7 +50,7 @@ struct loaded_l10nfile
};
-extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
+extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
size_t name_len));
extern struct loaded_l10nfile *
diff --git a/gnu/usr.bin/texinfo/intl/loadmsgcat.c b/gnu/usr.bin/texinfo/intl/loadmsgcat.c
index 73e90a9190f..515892dfb86 100644
--- a/gnu/usr.bin/texinfo/intl/loadmsgcat.c
+++ b/gnu/usr.bin/texinfo/intl/loadmsgcat.c
@@ -1,5 +1,5 @@
-/* Load needed message catalogs
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Load needed message catalogs.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,6 @@
/* Rename the non ISO C functions. This is required by the standard
because some ISO C functions will require linking with this object
file and the name space must not be polluted. */
-# define fstat __fstat
# define open __open
# define close __close
# define read __read
@@ -61,10 +60,12 @@ int _nl_msg_cat_cntr = 0;
/* Load the message catalogs specified by FILENAME. If it is no valid
message catalog do nothing. */
void
+internal_function
_nl_load_domain (domain_file)
struct loaded_l10nfile *domain_file;
{
int fd;
+ size_t size;
struct stat st;
struct mo_file_header *data = (struct mo_file_header *) -1;
#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
@@ -90,7 +91,8 @@ _nl_load_domain (domain_file)
/* We must know about the size of the file. */
if (fstat (fd, &st) != 0
- && st.st_size < (off_t) sizeof (struct mo_file_header))
+ || (size = (size_t) st.st_size) != st.st_size
+ || size < sizeof (struct mo_file_header))
{
/* Something went wrong. */
close (fd);
@@ -101,7 +103,7 @@ _nl_load_domain (domain_file)
|| defined _LIBC
/* Now we are ready to load the file. If mmap() is available we try
this first. If not available or it failed we try to load it. */
- data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ,
+ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
MAP_PRIVATE, fd, 0);
if (data != (struct mo_file_header *) -1)
@@ -116,14 +118,14 @@ _nl_load_domain (domain_file)
it manually. */
if (data == (struct mo_file_header *) -1)
{
- off_t to_read;
+ size_t to_read;
char *read_ptr;
- data = (struct mo_file_header *) malloc (st.st_size);
+ data = (struct mo_file_header *) malloc (size);
if (data == NULL)
return;
- to_read = st.st_size;
+ to_read = size;
read_ptr = (char *) data;
do
{
@@ -150,7 +152,7 @@ _nl_load_domain (domain_file)
#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
|| defined _LIBC
if (use_mmap)
- munmap ((caddr_t) data, st.st_size);
+ munmap ((caddr_t) data, size);
else
#endif
free (data);
@@ -164,6 +166,11 @@ _nl_load_domain (domain_file)
domain = (struct loaded_domain *) domain_file->data;
domain->data = (char *) data;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ domain->use_mmap = use_mmap;
+#endif
+ domain->mmap_size = size;
domain->must_swap = data->magic != _MAGIC;
/* Fill in the information about the available tables. */
@@ -184,7 +191,7 @@ _nl_load_domain (domain_file)
#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
|| defined _LIBC
if (use_mmap)
- munmap ((caddr_t) data, st.st_size);
+ munmap ((caddr_t) data, size);
else
#endif
free (data);
@@ -197,3 +204,19 @@ _nl_load_domain (domain_file)
translations invalid. */
++_nl_msg_cat_cntr;
}
+
+
+#ifdef _LIBC
+void
+internal_function
+_nl_unload_domain (domain)
+ struct loaded_domain *domain;
+{
+ if (domain->use_mmap)
+ munmap ((caddr_t) domain->data, domain->mmap_size);
+ else
+ free ((void *) domain->data);
+
+ free (domain);
+}
+#endif
diff --git a/gnu/usr.bin/texinfo/intl/localealias.c b/gnu/usr.bin/texinfo/intl/localealias.c
index 00d91941b9b..bca555a610f 100644
--- a/gnu/usr.bin/texinfo/intl/localealias.c
+++ b/gnu/usr.bin/texinfo/intl/localealias.c
@@ -1,5 +1,5 @@
-/* Handle aliases for locale names
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Handle aliases for locale names.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify
@@ -79,6 +79,14 @@ void free ();
because some ANSI C functions will require linking with this object
file and the name space must not be polluted. */
# define strcasecmp __strcasecmp
+
+# define mempcpy __mempcpy
+# define HAVE_MEMPCPY 1
+
+/* We need locking here since we can be called from different places. */
+# include <bits/libc-lock.h>
+
+__libc_lock_define_initialized (static, lock);
#endif
@@ -125,13 +133,17 @@ struct alias_map
};
+static char *string_space = NULL;
+static size_t string_space_act = 0;
+static size_t string_space_max = 0;
static struct alias_map *map;
static size_t nmap = 0;
static size_t maxmap = 0;
/* Prototypes for local functions. */
-static size_t read_alias_file PARAMS ((const char *fname, int fname_len));
+static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
+ internal_function;
static void extend_alias_table PARAMS ((void));
static int alias_compare PARAMS ((const struct alias_map *map1,
const struct alias_map *map2));
@@ -143,8 +155,13 @@ _nl_expand_alias (name)
{
static const char *locale_alias_path = LOCALE_ALIAS_PATH;
struct alias_map *retval;
+ const char *result = NULL;
size_t added;
+#ifdef _LIBC
+ __libc_lock_lock (lock);
+#endif
+
do
{
struct alias_map item;
@@ -162,7 +179,10 @@ _nl_expand_alias (name)
/* We really found an alias. Return the value. */
if (retval != NULL)
- return retval->value;
+ {
+ result = retval->value;
+ break;
+ }
/* Perhaps we can find another alias file. */
added = 0;
@@ -183,11 +203,16 @@ _nl_expand_alias (name)
}
while (added != 0);
- return NULL;
+#ifdef _LIBC
+ __libc_lock_unlock (lock);
+#endif
+
+ return result;
}
static size_t
+internal_function
read_alias_file (fname, fname_len)
const char *fname;
int fname_len;
@@ -202,8 +227,13 @@ read_alias_file (fname, fname_len)
full_fname = (char *) alloca (fname_len + sizeof aliasfile);
ADD_BLOCK (block_list, full_fname);
+#ifdef HAVE_MEMPCPY
+ mempcpy (mempcpy (full_fname, fname, fname_len),
+ aliasfile, sizeof aliasfile);
+#else
memcpy (full_fname, fname, fname_len);
memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+#endif
fp = fopen (full_fname, "r");
if (fp == NULL)
@@ -220,15 +250,28 @@ read_alias_file (fname, fname_len)
b) these fields must be usable as file names and so must not
be that long
*/
- char buf[BUFSIZ];
- char *alias;
- char *value;
- char *cp;
+ unsigned char buf[BUFSIZ];
+ unsigned char *alias;
+ unsigned char *value;
+ unsigned char *cp;
- if (fgets (buf, BUFSIZ, fp) == NULL)
+ if (fgets (buf, sizeof buf, fp) == NULL)
/* EOF reached. */
break;
+ /* Possibly not the whole line fits into the buffer. Ignore
+ the rest of the line. */
+ if (strchr (buf, '\n') == NULL)
+ {
+ char altbuf[BUFSIZ];
+ do
+ if (fgets (altbuf, sizeof altbuf, fp) == NULL)
+ /* Make sure the inner loop will be left. The outer loop
+ will exit at the `feof' test. */
+ break;
+ while (strchr (altbuf, '\n') == NULL);
+ }
+
cp = buf;
/* Ignore leading white space. */
while (isspace (cp[0]))
@@ -250,8 +293,8 @@ read_alias_file (fname, fname_len)
if (cp[0] != '\0')
{
- char *tp;
- size_t len;
+ size_t alias_len;
+ size_t value_len;
value = cp++;
while (cp[0] != '\0' && !isspace (cp[0]))
@@ -271,42 +314,37 @@ read_alias_file (fname, fname_len)
if (nmap >= maxmap)
extend_alias_table ();
- /* We cannot depend on strdup available in the libc. Sigh! */
- len = strlen (alias) + 1;
- tp = (char *) malloc (len);
- if (tp == NULL)
- {
- FREE_BLOCKS (block_list);
- return added;
- }
- memcpy (tp, alias, len);
- map[nmap].alias = tp;
+ alias_len = strlen (alias) + 1;
+ value_len = strlen (value) + 1;
- len = strlen (value) + 1;
- tp = (char *) malloc (len);
- if (tp == NULL)
+ if (string_space_act + alias_len + value_len > string_space_max)
{
- FREE_BLOCKS (block_list);
- return added;
+ /* Increase size of memory pool. */
+ size_t new_size = (string_space_max
+ + (alias_len + value_len > 1024
+ ? alias_len + value_len : 1024));
+ char *new_pool = (char *) realloc (string_space, new_size);
+ if (new_pool == NULL)
+ {
+ FREE_BLOCKS (block_list);
+ return added;
+ }
+ string_space = new_pool;
+ string_space_max = new_size;
}
- memcpy (tp, value, len);
- map[nmap].value = tp;
+
+ map[nmap].alias = memcpy (&string_space[string_space_act],
+ alias, alias_len);
+ string_space_act += alias_len;
+
+ map[nmap].value = memcpy (&string_space[string_space_act],
+ value, value_len);
+ string_space_act += value_len;
++nmap;
++added;
}
}
-
- /* Possibly not the whole line fits into the buffer. Ignore
- the rest of the line. */
- while (strchr (cp, '\n') == NULL)
- {
- cp = buf;
- if (fgets (buf, BUFSIZ, fp) == NULL)
- /* Make sure the inner loop will be left. The outer loop
- will exit at the `feof' test. */
- *cp = '\n';
- }
}
/* Should we test for ferror()? I think we have to silently ignore
@@ -329,22 +367,30 @@ extend_alias_table ()
struct alias_map *new_map;
new_size = maxmap == 0 ? 100 : 2 * maxmap;
- new_map = (struct alias_map *) malloc (new_size
- * sizeof (struct alias_map));
+ new_map = (struct alias_map *) realloc (map, (new_size
+ * sizeof (struct alias_map)));
if (new_map == NULL)
/* Simply don't extend: we don't have any more core. */
return;
- memcpy (new_map, map, nmap * sizeof (struct alias_map));
-
- if (maxmap != 0)
- free (map);
-
map = new_map;
maxmap = new_size;
}
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ if (string_space != NULL)
+ free (string_space);
+ if (map != NULL)
+ free (map);
+}
+text_set_element (__libc_subfreeres, free_mem);
+#endif
+
+
static int
alias_compare (map1, map2)
const struct alias_map *map1;
diff --git a/gnu/usr.bin/texinfo/intl/textdomain.c b/gnu/usr.bin/texinfo/intl/textdomain.c
index 55d93406a8a..88557460f3b 100644
--- a/gnu/usr.bin/texinfo/intl/textdomain.c
+++ b/gnu/usr.bin/texinfo/intl/textdomain.c
@@ -1,5 +1,5 @@
-/* Implementation of the textdomain(3) function
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Implementation of the textdomain(3) function.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify
@@ -54,7 +54,9 @@ extern const char *_nl_current_default_domain;
prefix. So we have to make a difference here. */
#ifdef _LIBC
# define TEXTDOMAIN __textdomain
-# define strdup(str) __strdup (str)
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
#else
# define TEXTDOMAIN textdomain__
#endif
diff --git a/gnu/usr.bin/texinfo/lib/getopt.c b/gnu/usr.bin/texinfo/lib/getopt.c
index fc87ce67d69..03effcbdb3e 100644
--- a/gnu/usr.bin/texinfo/lib/getopt.c
+++ b/gnu/usr.bin/texinfo/lib/getopt.c
@@ -1,13 +1,13 @@
/* Getopt for GNU.
NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
+ "Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
+ Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+ Bugs can be reported to bug-glibc@gnu.org.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -27,19 +27,19 @@
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
#ifndef _NO_PROTO
-#define _NO_PROTO
+# define _NO_PROTO
#endif
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
-#if !defined (__STDC__) || !__STDC__
+#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
+# ifndef const
+# define const
+# endif
#endif
#include <stdio.h>
@@ -53,11 +53,11 @@
it is simpler to just do this in the source for each such file. */
#define GETOPT_INTERFACE_VERSION 2
-#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
-#include <gnu-versions.h>
-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#define ELIDE_CODE
-#endif
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+# define ELIDE_CODE
+# endif
#endif
#ifndef ELIDE_CODE
@@ -68,26 +68,26 @@
#ifdef __GNU_LIBRARY__
/* Don't include stdlib.h for non-GNU C libraries because some of them
contain conflicting prototypes for getopt. */
-#include <stdlib.h>
-#include <unistd.h>
+# include <stdlib.h>
+# include <unistd.h>
#endif /* GNU C library. */
#ifdef VMS
-#include <unixlib.h>
-#if HAVE_STRING_H - 0
-#include <string.h>
-#endif
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+# include <string.h>
+# endif
#endif
#ifndef _
/* This is for other GNU distributions with internationalized messages.
When compiling libc, the _ macro is predefined. */
-#ifdef HAVE_LIBINTL_H
-# include <libintl.h>
-# define _(msgid) gettext (msgid)
-#else
-# define _(msgid) (msgid)
-#endif
+# ifdef HAVE_LIBINTL_H
+# include <libintl.h>
+# define _(msgid) gettext (msgid)
+# else
+# define _(msgid) (msgid)
+# endif
#endif
/* This version of `getopt' appears to the caller like standard Unix `getopt'
@@ -197,14 +197,22 @@ static char *posixly_correct;
because there are many ways it can cause trouble.
On some systems, it contains special magic macros that don't work
in GCC. */
-#include <string.h>
-#define my_index strchr
+# include <string.h>
+# define my_index strchr
#else
+# if HAVE_STRING_H
+# include <string.h>
+# else
+# include <strings.h>
+# endif
+
/* Avoid depending on library functions or files
whose names are inconsistent. */
-char *getenv ();
+#ifndef getenv
+extern char *getenv ();
+#endif
static char *
my_index (str, chr)
@@ -225,11 +233,11 @@ my_index (str, chr)
#ifdef __GNUC__
/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
That was relevant to code that was here before. */
-#if !defined (__STDC__) || !__STDC__
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
/* gcc with -traditional declares the built-in strlen to return int,
and has done so at least since version 2.4.5. -- rms. */
extern int strlen (const char *);
-#endif /* not __STDC__ */
+# endif /* not __STDC__ */
#endif /* __GNUC__ */
#endif /* not __GNU_LIBRARY__ */
@@ -292,7 +300,7 @@ text_set_element (__libc_subinit, store_args_and_env);
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
static void exchange (char **);
#endif
@@ -378,7 +386,7 @@ exchange (argv)
/* Initialize the internal data when the first call is made. */
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
static const char *_getopt_initialize (int, char *const *, const char *);
#endif
static const char *
@@ -527,11 +535,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
from the shell indicating it is not an option. The later information
is only used when the used in the GNU libc. */
#ifdef _LIBC
-#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
+ || (optind < nonoption_flags_len \
+ && __getopt_nonoption_flags[optind] == '1'))
#else
-#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
#endif
if (nextchar == NULL || *nextchar == '\0')
diff --git a/gnu/usr.bin/texinfo/lib/getopt.h b/gnu/usr.bin/texinfo/lib/getopt.h
index c4adc30bbba..fb30719a860 100644
--- a/gnu/usr.bin/texinfo/lib/getopt.h
+++ b/gnu/usr.bin/texinfo/lib/getopt.h
@@ -2,7 +2,7 @@
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+ Bugs can be reported to bug-glibc@gnu.org.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
diff --git a/gnu/usr.bin/texinfo/lib/getopt1.c b/gnu/usr.bin/texinfo/lib/getopt1.c
index af8e6819657..ff257374c33 100644
--- a/gnu/usr.bin/texinfo/lib/getopt1.c
+++ b/gnu/usr.bin/texinfo/lib/getopt1.c
@@ -1,8 +1,9 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+ Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+ Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+ Bugs can be reported to bug-glibc@gnu.org.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -25,7 +26,7 @@
#include "getopt.h"
-#if !defined (__STDC__) || !__STDC__
+#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
#ifndef const
@@ -44,7 +45,7 @@
it is simpler to just do this in the source for each such file. */
#define GETOPT_INTERFACE_VERSION 2
-#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
#include <gnu-versions.h>
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
#define ELIDE_CODE
diff --git a/gnu/usr.bin/texinfo/lib/strcasecmp.c b/gnu/usr.bin/texinfo/lib/strcasecmp.c
new file mode 100644
index 00000000000..366bcf2e9c2
--- /dev/null
+++ b/gnu/usr.bin/texinfo/lib/strcasecmp.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <ctype.h>
+
+/* Compare S1 and S2, ignoring case, returning less than, equal to or
+ greater than zero if S1 is lexiographically less than,
+ equal to or greater than S2. */
+int
+strcasecmp (s1, s2)
+ const char *s1;
+ const char *s2;
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ c1 = tolower (*p1++);
+ c2 = tolower (*p2++);
+ if (c1 == '\0')
+ break;
+ }
+ while (c1 == c2);
+
+ return c1 - c2;
+}
diff --git a/gnu/usr.bin/texinfo/lib/strncasecmp.c b/gnu/usr.bin/texinfo/lib/strncasecmp.c
new file mode 100644
index 00000000000..2476fad55ee
--- /dev/null
+++ b/gnu/usr.bin/texinfo/lib/strncasecmp.c
@@ -0,0 +1,48 @@
+/* strncase.c -- compare at most N characters of two strings without
+ taking care for the case
+Copyright (C) 1992 Free Software Foundation.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include <string.h>
+#include <ctype.h>
+
+/* Compare no more than N characters of S1 and S2,
+ ignoring case, returning less than, equal to or
+ greater than zero if S1 is lexicographically less
+ than, equal to or greater than S2. */
+int
+strncasecmp (s1, s2, n)
+ const char *s1;
+ const char *s2;
+ size_t n;
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2 || n == 0)
+ return 0;
+
+ do
+ {
+ c1 = tolower (*p1++);
+ c2 = tolower (*p2++);
+ if (c1 == '\0' || c1 != c2)
+ return c1 - c2;
+ } while (--n > 0);
+
+ return c1 - c2;
+}
diff --git a/gnu/usr.bin/texinfo/lib/substring.c b/gnu/usr.bin/texinfo/lib/substring.c
new file mode 100644
index 00000000000..64772334de5
--- /dev/null
+++ b/gnu/usr.bin/texinfo/lib/substring.c
@@ -0,0 +1,37 @@
+/* substring.c -- extract substring.
+ $Id: substring.c,v 1.1.1.1 2000/02/09 01:24:23 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+
+char *
+substring (start, end)
+ char *start;
+ char *end;
+{
+ char *result = xmalloc (end - start + 1);
+ char *scan_result = result;
+ char *scan = start;
+
+ while (scan < end)
+ *scan_result++ = *scan++;
+
+ *scan_result = 0;
+ return result;
+}
+
diff --git a/gnu/usr.bin/texinfo/lib/xexit.c b/gnu/usr.bin/texinfo/lib/xexit.c
new file mode 100644
index 00000000000..a9376f57cfa
--- /dev/null
+++ b/gnu/usr.bin/texinfo/lib/xexit.c
@@ -0,0 +1,86 @@
+/* xexit.c -- exit with attention to return values and closing stdout.
+ $Id: xexit.c,v 1.1.1.1 2000/02/09 01:24:24 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+
+/* SunOS 4.1.1 gets STDC_HEADERS defined, but it doesn't provide
+ EXIT_FAILURE. So far no system has defined one of EXIT_FAILURE and
+ EXIT_SUCCESS without the other. */
+#ifdef EXIT_SUCCESS
+ /* The following test is to work around the gross typo in
+ systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
+ is defined to 0, not 1. */
+# if !EXIT_FAILURE
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+# endif
+#else /* not EXIT_SUCCESS */
+# ifdef VMS /* these values suppress some messages; from gnuplot */
+# define EXIT_SUCCESS 1
+# define EXIT_FAILURE 0x10000002
+# else /* not VMS */
+# define EXIT_SUCCESS 0
+# define EXIT_FAILURE 1
+# endif /* not VMS */
+#endif /* not EXIT_SUCCESS */
+
+
+/* Flush stdout first, exit if failure. 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");
+ exit_status = 1;
+ }
+ else if (fflush (stdout) != 0)
+ {
+ fprintf (stderr, "fflush error on stdout");
+ exit_status = 1;
+ }
+
+ exit_status = exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+
+ exit (exit_status);
+}
+
+
+/* Why do we care about stdout you may ask? Here's why, from Jim
+ Meyering in the lib/closeout.c file. */
+
+/* If a program writes *anything* to stdout, that program should close
+ stdout and make sure that the close succeeds. Otherwise, suppose that
+ you go to the extreme of checking the return status of every function
+ that does an explicit write to stdout. The last printf can succeed in
+ writing to the internal stream buffer, and yet the fclose(stdout) could
+ still fail (due e.g., to a disk full error) when it tries to write
+ out that buffered data. Thus, you would be left with an incomplete
+ output file and the offending program would exit successfully.
+
+ Besides, it's wasteful to check the return value from every call
+ that writes to stdout -- just let the internal stream state record
+ the failure. That's what the ferror test is checking below.
+
+ It's important to detect such failures and exit nonzero because many
+ tools (most notably `make' and other build-management systems) depend
+ on being able to detect failure in other tools via their exit status. */
diff --git a/gnu/usr.bin/texinfo/makeinfo/README b/gnu/usr.bin/texinfo/makeinfo/README
index 2bfe6e1cbeb..a6f97ebed4c 100644
--- a/gnu/usr.bin/texinfo/makeinfo/README
+++ b/gnu/usr.bin/texinfo/makeinfo/README
@@ -1,8 +1,8 @@
makeinfo is a standalone program to convert Texinfo source into Info
files readable with standalone info or M-x info in Emacs.
-makeinfo can also output plain ASCII. Work to support HTML and Troff
-output is almost complete.
+makeinfo can also output plain ASCII (with --no-headers)
+or HTML (with --html).
The Emacs function M-x texinfo-format-buffer does more or less the same
job, but makeinfo is faster and gives better error messages.
diff --git a/gnu/usr.bin/texinfo/makeinfo/cmds.c b/gnu/usr.bin/texinfo/makeinfo/cmds.c
new file mode 100644
index 00000000000..740007bc8cf
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/cmds.c
@@ -0,0 +1,1121 @@
+/* cmds.c -- Texinfo commands.
+ $Id: cmds.c,v 1.1 2000/02/09 01:25:09 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "defun.h"
+#include "files.h"
+#include "footnote.h"
+#include "insertion.h"
+#include "lang.h"
+#include "macro.h"
+#include "makeinfo.h"
+#include "node.h"
+#include "sectioning.h"
+#include "toc.h"
+
+#ifdef TM_IN_SYS_TIME
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+
+
+void insert_self (), insert_space (), cm_ignore_line (), cm_ignore_arg ();
+
+void
+ cm_TeX (), cm_acronym (), cm_asterisk (), cm_b (), cm_bullet (), cm_cite (),
+ cm_code (), cm_copyright (), cm_ctrl (), cm_dfn (), cm_dircategory (),
+ cm_direntry (), cm_dmn (), cm_dots (), cm_emph (), cm_enddots (), cm_i (),
+ cm_image (), cm_kbd (), cm_key (), cm_no_op (),
+ cm_novalidate (), cm_not_fixed_width (), cm_r (),
+ cm_strong (), cm_var (), cm_sc (), cm_w (), cm_email (), cm_url ();
+
+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_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 (),
+ cm_tindex (), cm_synindex (), cm_printindex (), cm_minus (),
+ cm_example (), cm_smallexample (), cm_smalllisp (), cm_lisp (),
+ cm_format (), cm_smallformat (), cm_exdent (), cm_defindex (),
+ cm_defcodeindex (), cm_result (), cm_expansion (), cm_equiv (),
+ cm_print (), cm_error (), cm_point (), cm_today (), cm_flushleft (),
+ cm_flushright (), cm_finalout (), cm_cartouche (), cm_detailmenu (),
+ cm_multitable (), cm_settitle (), cm_titlefont (), cm_tt ();
+
+/* Conditionals. */
+void cm_set (), cm_clear (), cm_ifset (), cm_ifclear ();
+void cm_value (), cm_ifeq ();
+
+/* Options. */
+static void cm_paragraphindent (), cm_exampleindent ();
+
+/* Internals. */
+static void cm_obsolete ();
+
+/* A random string. */
+static const char small_tag[] = "small";
+
+/* The dispatch table. */
+COMMAND command_table[] = {
+ { "\t", insert_space, NO_BRACE_ARGS },
+ { "\n", insert_space, NO_BRACE_ARGS },
+ { " ", insert_self, NO_BRACE_ARGS },
+ { "!", insert_self, NO_BRACE_ARGS },
+ { "\"", cm_accent_umlaut, MAYBE_BRACE_ARGS },
+ { "'", cm_accent_acute, MAYBE_BRACE_ARGS },
+ { "*", cm_asterisk, NO_BRACE_ARGS },
+ { ",", cm_accent_cedilla, MAYBE_BRACE_ARGS },
+ { "-", cm_no_op, NO_BRACE_ARGS },
+ { ".", insert_self, NO_BRACE_ARGS },
+ { ":", cm_no_op, NO_BRACE_ARGS },
+ { "=", cm_accent, MAYBE_BRACE_ARGS },
+ { "?", insert_self, NO_BRACE_ARGS },
+ { "@", insert_self, NO_BRACE_ARGS },
+ { "^", cm_accent_hat, MAYBE_BRACE_ARGS },
+ { "`", cm_accent_grave, MAYBE_BRACE_ARGS },
+ { "{", insert_self, NO_BRACE_ARGS },
+ { "|", cm_no_op, NO_BRACE_ARGS },
+ { "}", insert_self, NO_BRACE_ARGS },
+ { "~", cm_accent_tilde, MAYBE_BRACE_ARGS },
+ { "AA", cm_special_char, BRACE_ARGS },
+ { "AE", cm_special_char, BRACE_ARGS },
+ { "H", cm_accent, MAYBE_BRACE_ARGS },
+ { "L", cm_special_char, BRACE_ARGS },
+ { "O", cm_special_char, BRACE_ARGS },
+ { "OE", cm_special_char, BRACE_ARGS },
+ { "TeX", cm_TeX, BRACE_ARGS },
+ { "aa", cm_special_char, BRACE_ARGS },
+ { "acronym", cm_acronym, BRACE_ARGS },
+ { "ae", cm_special_char, BRACE_ARGS },
+ { "afourpaper", cm_ignore_line, NO_BRACE_ARGS },
+ { "alias", cm_alias, NO_BRACE_ARGS },
+ { "anchor", cm_anchor, BRACE_ARGS },
+ { "appendix", cm_appendix, NO_BRACE_ARGS },
+ { "appendixsection", cm_appendixsec, NO_BRACE_ARGS },
+ { "appendixsec", cm_appendixsec, NO_BRACE_ARGS },
+ { "appendixsubsec", cm_appendixsubsec, NO_BRACE_ARGS },
+ { "appendixsubsubsec", cm_appendixsubsubsec, NO_BRACE_ARGS },
+ { "asis", cm_no_op, BRACE_ARGS },
+ { "b", cm_b, BRACE_ARGS },
+ { "bullet", cm_bullet, BRACE_ARGS },
+ { "bye", cm_bye, NO_BRACE_ARGS },
+ { "c", cm_ignore_line, NO_BRACE_ARGS },
+ { "cartouche", cm_cartouche, NO_BRACE_ARGS },
+ { "center", cm_center, NO_BRACE_ARGS },
+ { "centerchap", cm_unnumbered, NO_BRACE_ARGS },
+ { "chapheading", cm_chapheading, NO_BRACE_ARGS },
+ { "chapter", cm_chapter, NO_BRACE_ARGS },
+ { "cindex", cm_cindex, NO_BRACE_ARGS },
+ { "cite", cm_cite, BRACE_ARGS },
+ { "clear", cm_clear, NO_BRACE_ARGS },
+ { "code", cm_code, BRACE_ARGS },
+ { "command", cm_code, BRACE_ARGS },
+ { "comment", cm_ignore_line, NO_BRACE_ARGS },
+ { "contents", cm_contents, NO_BRACE_ARGS },
+ { "copyright", cm_copyright, BRACE_ARGS },
+ { "ctrl", cm_obsolete, BRACE_ARGS },
+ { "defcodeindex", cm_defcodeindex, NO_BRACE_ARGS },
+ { "defcv", cm_defun, NO_BRACE_ARGS },
+ { "defcvx", cm_defun, NO_BRACE_ARGS },
+ { "deffn", cm_defun, NO_BRACE_ARGS },
+ { "deffnx", cm_defun, NO_BRACE_ARGS },
+ { "defindex", cm_defindex, NO_BRACE_ARGS },
+ { "definfoenclose", cm_definfoenclose, NO_BRACE_ARGS },
+ { "defivar", cm_defun, NO_BRACE_ARGS },
+ { "defivarx", cm_defun, NO_BRACE_ARGS },
+ { "defmac", cm_defun, NO_BRACE_ARGS },
+ { "defmacx", cm_defun, NO_BRACE_ARGS },
+ { "defmethod", cm_defun, NO_BRACE_ARGS },
+ { "defmethodx", cm_defun, NO_BRACE_ARGS },
+ { "defop", cm_defun, NO_BRACE_ARGS },
+ { "defopt", cm_defun, NO_BRACE_ARGS },
+ { "defoptx", cm_defun, NO_BRACE_ARGS },
+ { "defopx", cm_defun, NO_BRACE_ARGS },
+ { "defspec", cm_defun, NO_BRACE_ARGS },
+ { "defspecx", cm_defun, NO_BRACE_ARGS },
+ { "deftp", cm_defun, NO_BRACE_ARGS },
+ { "deftpx", cm_defun, NO_BRACE_ARGS },
+ { "deftypefn", cm_defun, NO_BRACE_ARGS },
+ { "deftypefnx", cm_defun, NO_BRACE_ARGS },
+ { "deftypefun", cm_defun, NO_BRACE_ARGS },
+ { "deftypefunx", cm_defun, NO_BRACE_ARGS },
+ { "deftypeivar", cm_defun, NO_BRACE_ARGS },
+ { "deftypeivarx", cm_defun, NO_BRACE_ARGS },
+ { "deftypemethod", cm_defun, NO_BRACE_ARGS },
+ { "deftypemethodx", cm_defun, NO_BRACE_ARGS },
+ { "deftypeop", cm_defun, NO_BRACE_ARGS },
+ { "deftypeopx", cm_defun, NO_BRACE_ARGS },
+ { "deftypevar", cm_defun, NO_BRACE_ARGS },
+ { "deftypevarx", cm_defun, NO_BRACE_ARGS },
+ { "deftypevr", cm_defun, NO_BRACE_ARGS },
+ { "deftypevrx", cm_defun, NO_BRACE_ARGS },
+ { "defun", cm_defun, NO_BRACE_ARGS },
+ { "defunx", cm_defun, NO_BRACE_ARGS },
+ { "defvar", cm_defun, NO_BRACE_ARGS },
+ { "defvarx", cm_defun, NO_BRACE_ARGS },
+ { "defvr", cm_defun, NO_BRACE_ARGS },
+ { "defvrx", cm_defun, NO_BRACE_ARGS },
+ { "detailmenu", cm_detailmenu, NO_BRACE_ARGS },
+ { "dfn", cm_dfn, BRACE_ARGS },
+ { "dircategory", cm_dircategory, NO_BRACE_ARGS },
+ { "direntry", cm_direntry, NO_BRACE_ARGS },
+ { "display", cm_display, NO_BRACE_ARGS },
+ { "dmn", cm_no_op, BRACE_ARGS },
+ { "documentencoding", cm_documentencoding, NO_BRACE_ARGS },
+ { "documentlanguage", cm_documentlanguage, NO_BRACE_ARGS },
+ { "dotaccent", cm_accent, MAYBE_BRACE_ARGS },
+ { "dotless", cm_dotless, BRACE_ARGS },
+ { "dots", cm_dots, BRACE_ARGS },
+ { "email", cm_email, BRACE_ARGS },
+ { "emph", cm_emph, BRACE_ARGS },
+ { "end", cm_end, NO_BRACE_ARGS },
+ { "enddots", cm_enddots, BRACE_ARGS },
+ { "enumerate", cm_enumerate, NO_BRACE_ARGS },
+ { "env", cm_code, BRACE_ARGS },
+ { "equiv", cm_equiv, BRACE_ARGS },
+ { "error", cm_error, BRACE_ARGS },
+ { "example", cm_example, NO_BRACE_ARGS },
+ { "exampleindent", cm_exampleindent, NO_BRACE_ARGS },
+ { "exclamdown", cm_special_char, BRACE_ARGS },
+ { "exdent", cm_exdent, NO_BRACE_ARGS },
+ { "expansion", cm_expansion, BRACE_ARGS },
+ { "file", cm_code, BRACE_ARGS },
+ { "finalout", cm_no_op, NO_BRACE_ARGS },
+ { "findex", cm_findex, NO_BRACE_ARGS },
+ { "flushleft", cm_flushleft, NO_BRACE_ARGS },
+ { "flushright", cm_flushright, NO_BRACE_ARGS },
+ { "footnote", cm_footnote, NO_BRACE_ARGS}, /* self-arg eater */
+ { "footnotestyle", cm_footnotestyle, NO_BRACE_ARGS },
+ { "format", cm_format, NO_BRACE_ARGS },
+ { "ftable", cm_ftable, NO_BRACE_ARGS },
+ { "group", cm_group, NO_BRACE_ARGS },
+ { "heading", cm_heading, NO_BRACE_ARGS },
+ { "headings", cm_ignore_line, NO_BRACE_ARGS },
+ { "html", cm_html, NO_BRACE_ARGS },
+ { "hyphenation", cm_ignore_arg, BRACE_ARGS },
+ { "i", cm_i, BRACE_ARGS },
+ { "ifclear", cm_ifclear, NO_BRACE_ARGS },
+ { "ifeq", cm_ifeq, NO_BRACE_ARGS },
+ { "ifhtml", cm_ifhtml, NO_BRACE_ARGS },
+ { "ifinfo", cm_ifinfo, NO_BRACE_ARGS },
+ { "ifnothtml", cm_ifnothtml, NO_BRACE_ARGS },
+ { "ifnotinfo", cm_ifnotinfo, NO_BRACE_ARGS },
+ { "ifnottex", cm_ifnottex, NO_BRACE_ARGS },
+ { "ifset", cm_ifset, NO_BRACE_ARGS },
+ { "iftex", cm_iftex, NO_BRACE_ARGS },
+ { "ignore", command_name_condition, NO_BRACE_ARGS },
+ { "image", cm_image, BRACE_ARGS },
+ { "include", cm_include, NO_BRACE_ARGS },
+ { "inforef", cm_inforef, BRACE_ARGS },
+ { "item", cm_item, NO_BRACE_ARGS },
+ { "itemize", cm_itemize, NO_BRACE_ARGS },
+ { "itemx", cm_itemx, NO_BRACE_ARGS },
+ { "kbd", cm_kbd, BRACE_ARGS },
+ { "kbdinputstyle", cm_ignore_line, NO_BRACE_ARGS },
+ { "key", cm_key, BRACE_ARGS },
+ { "kindex", cm_kindex, NO_BRACE_ARGS },
+ { "l", cm_special_char, BRACE_ARGS },
+ { "lisp", cm_lisp, NO_BRACE_ARGS },
+ { "lowersections", cm_lowersections, NO_BRACE_ARGS },
+ { "macro", cm_macro, NO_BRACE_ARGS },
+ { "majorheading", cm_majorheading, NO_BRACE_ARGS },
+ { "math", cm_no_op, BRACE_ARGS },
+ { "menu", cm_menu, NO_BRACE_ARGS },
+ { "minus", cm_minus, BRACE_ARGS },
+ { "multitable", cm_multitable, NO_BRACE_ARGS },
+ { "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 },
+ { "nwnode", cm_node, NO_BRACE_ARGS },
+ { "o", cm_special_char, BRACE_ARGS },
+ { "oe", cm_special_char, BRACE_ARGS },
+ { "option", cm_code, BRACE_ARGS },
+ { "page", cm_no_op, NO_BRACE_ARGS },
+ { "pagesizes", cm_ignore_line, NO_BRACE_ARGS },
+ { "paragraphindent", cm_paragraphindent, NO_BRACE_ARGS },
+ { "pindex", cm_pindex, NO_BRACE_ARGS },
+ { "point", cm_point, BRACE_ARGS },
+ { "pounds", cm_special_char, BRACE_ARGS },
+ { "print", cm_print, BRACE_ARGS },
+ { "printindex", cm_printindex, NO_BRACE_ARGS },
+ { "pxref", cm_pxref, BRACE_ARGS },
+ { "questiondown", cm_special_char, BRACE_ARGS },
+ { "quotation", cm_quotation, NO_BRACE_ARGS },
+ { "r", cm_r, BRACE_ARGS },
+ { "raisesections", cm_raisesections, NO_BRACE_ARGS },
+ { "ref", cm_ref, BRACE_ARGS },
+ { "refill", cm_no_op, NO_BRACE_ARGS },
+ { "result", cm_result, BRACE_ARGS },
+ { "ringaccent", cm_accent, MAYBE_BRACE_ARGS },
+ { "rmacro", cm_rmacro, NO_BRACE_ARGS },
+ { "samp", cm_code, BRACE_ARGS },
+ { "sc", cm_sc, BRACE_ARGS },
+ { "section", cm_section, NO_BRACE_ARGS },
+ { "set", cm_set, NO_BRACE_ARGS },
+ { "setchapternewpage", cm_ignore_line, NO_BRACE_ARGS },
+ { "setchapterstyle", cm_obsolete, NO_BRACE_ARGS },
+ { "setcontentsaftertitlepage", cm_no_op, NO_BRACE_ARGS },
+ { "setfilename", cm_setfilename, NO_BRACE_ARGS },
+ { "setshortcontentsaftertitlepage", cm_no_op, NO_BRACE_ARGS },
+ { "settitle", cm_settitle, NO_BRACE_ARGS },
+ { "shortcontents", cm_shortcontents, NO_BRACE_ARGS },
+ { "shorttitlepage", cm_ignore_line, NO_BRACE_ARGS },
+ { "smallbook", cm_ignore_line, NO_BRACE_ARGS },
+ { "smalldisplay", cm_smalldisplay, NO_BRACE_ARGS },
+ { "smallexample", cm_smallexample, NO_BRACE_ARGS },
+ { "smallformat", cm_smallformat, NO_BRACE_ARGS },
+ { "smalllisp", cm_smalllisp, NO_BRACE_ARGS },
+ { "sp", cm_sp, NO_BRACE_ARGS },
+ { "ss", cm_special_char, BRACE_ARGS },
+ { "strong", cm_strong, BRACE_ARGS },
+ { "subheading", cm_subheading, NO_BRACE_ARGS },
+ { "subsection", cm_subsection, NO_BRACE_ARGS },
+ { "subsubheading", cm_subsubheading, NO_BRACE_ARGS },
+ { "subsubsection", cm_subsubsection, NO_BRACE_ARGS },
+ { "summarycontents", cm_no_op, NO_BRACE_ARGS },
+ { "syncodeindex", cm_synindex, NO_BRACE_ARGS },
+ { "synindex", cm_synindex, NO_BRACE_ARGS },
+ { "t", cm_tt, BRACE_ARGS },
+ { "tab", cm_tab, NO_BRACE_ARGS },
+ { "table", cm_table, NO_BRACE_ARGS },
+ { "tex", cm_tex, NO_BRACE_ARGS },
+ { "tieaccent", cm_accent, MAYBE_BRACE_ARGS },
+ { "tindex", cm_tindex, NO_BRACE_ARGS },
+ { "titlefont", cm_titlefont, BRACE_ARGS },
+ { "titlepage", command_name_condition, NO_BRACE_ARGS },
+ { "today", cm_today, BRACE_ARGS },
+ { "top", cm_top, NO_BRACE_ARGS },
+ { "u", cm_accent, MAYBE_BRACE_ARGS },
+ { "ubaraccent", cm_accent, MAYBE_BRACE_ARGS },
+ { "udotaccent", cm_accent, MAYBE_BRACE_ARGS },
+ { "unmacro", cm_unmacro, NO_BRACE_ARGS },
+ { "unnumbered", cm_unnumbered, NO_BRACE_ARGS },
+ { "unnumberedsec", cm_unnumberedsec, NO_BRACE_ARGS },
+ { "unnumberedsubsec", cm_unnumberedsubsec, NO_BRACE_ARGS },
+ { "unnumberedsubsubsec", cm_unnumberedsubsubsec, NO_BRACE_ARGS },
+ { "uref", cm_uref, BRACE_ARGS },
+ { "url", cm_url, BRACE_ARGS },
+ { "v", cm_accent, MAYBE_BRACE_ARGS },
+ { "value", cm_value, BRACE_ARGS },
+ { "var", cm_var, BRACE_ARGS },
+ { "vindex", cm_vindex, NO_BRACE_ARGS },
+ { "vtable", cm_vtable, NO_BRACE_ARGS },
+ { "w", cm_w, BRACE_ARGS },
+ { "xref", cm_xref, BRACE_ARGS },
+
+ /* Deprecated commands. These used to be for italics. */
+ { "iappendix", cm_ideprecated, NO_BRACE_ARGS },
+ { "iappendixsec", cm_ideprecated, NO_BRACE_ARGS },
+ { "iappendixsection", cm_ideprecated, NO_BRACE_ARGS },
+ { "iappendixsubsec", cm_ideprecated, NO_BRACE_ARGS },
+ { "iappendixsubsubsec", cm_ideprecated, NO_BRACE_ARGS },
+ { "ichapter", cm_ideprecated, NO_BRACE_ARGS },
+ { "isection", cm_ideprecated, NO_BRACE_ARGS },
+ { "isubsection", cm_ideprecated, NO_BRACE_ARGS },
+ { "isubsubsection", cm_ideprecated, NO_BRACE_ARGS },
+ { "iunnumbered", cm_ideprecated, NO_BRACE_ARGS },
+ { "iunnumberedsec", cm_ideprecated, NO_BRACE_ARGS },
+ { "iunnumberedsubsec", cm_ideprecated, NO_BRACE_ARGS },
+ { "iunnumberedsubsubsec", cm_ideprecated, NO_BRACE_ARGS },
+
+ /* Now @include does what this was used to. */
+ { "infoinclude", cm_obsolete, NO_BRACE_ARGS },
+ { "titlespec", cm_obsolete, NO_BRACE_ARGS },
+
+ { NULL, NULL, NO_BRACE_ARGS }
+};
+
+/* The bulk of the Texinfo commands. */
+
+/* Commands which insert their own names. */
+void
+insert_self (arg)
+ int arg;
+{
+ if (arg == START)
+ add_word (command);
+}
+
+void
+insert_space (arg)
+ int arg;
+{
+ if (arg == START)
+ add_char (' ');
+}
+
+/* Force a line break in the output. */
+void
+cm_asterisk ()
+{
+ if (html)
+ add_word ("<br>");
+ else
+ {
+ close_single_paragraph ();
+ cm_noindent ();
+ }
+}
+
+/* Insert ellipsis. */
+void
+cm_dots (arg)
+ int arg;
+{
+ if (arg == START)
+ add_word (html ? "<small>...</small>" : "...");
+}
+
+/* Insert ellipsis for sentence end. */
+void
+cm_enddots (arg)
+ int arg;
+{
+ if (arg == START)
+ add_word (html ? "<small>...</small>." : "....");
+}
+
+void
+cm_bullet (arg)
+ int arg;
+{
+ if (arg == START)
+ {
+ if (html)
+ add_word ("&#149;");
+ else
+ add_char ('*');
+ }
+}
+
+void
+cm_minus (arg)
+ int arg;
+{
+ if (arg == START)
+ add_char ('-');
+}
+
+/* Insert "TeX". */
+void
+cm_TeX (arg)
+ int arg;
+{
+ if (arg == START)
+ add_word ("TeX");
+}
+
+/* Copyright symbol. */
+void
+cm_copyright (arg)
+ int arg;
+{
+ if (arg == START)
+ if (html)
+ add_word ("&copy;");
+ else
+ add_word ("(C)");
+}
+
+void
+cm_today (arg)
+ int arg;
+{
+ static char *months[12] =
+ { N_("January"), N_("February"), N_("March"), N_("April"), N_("May"),
+ N_("June"), N_("July"), N_("August"), N_("September"), N_("October"),
+ N_("November"), N_("December") };
+ if (arg == START)
+ {
+ time_t timer = time (0);
+ struct tm *ts = localtime (&timer);
+ add_word_args ("%d %s %d", ts->tm_mday, _(months[ts->tm_mon]),
+ ts->tm_year + 1900);
+ }
+}
+
+void
+cm_acronym (arg)
+ int arg;
+{
+ if (html)
+ insert_html_tag (arg, small_tag);
+}
+
+void
+cm_tt (arg)
+ int arg;
+{
+ /* @t{} is a no-op in Info. */
+ if (html)
+ insert_html_tag (arg, "tt");
+}
+
+void
+cm_code (arg)
+ int arg;
+{
+ extern int printing_index;
+
+ if (arg == START)
+ {
+ in_fixed_width_font++;
+
+ if (html)
+ insert_html_tag (arg, "code");
+ else if (!printing_index)
+ add_char ('`');
+ }
+ else if (html)
+ insert_html_tag (arg, "code");
+ else
+ {
+ if (!printing_index)
+ add_meta_char ('\'');
+ }
+}
+
+void
+cm_kbd (arg)
+ int arg;
+{
+ if (html)
+ { /* Seems like we should increment in_fixed_width_font for Info
+ format too, but then the quote-omitting special case gets
+ confused. Punt. */
+ if (arg == START)
+ in_fixed_width_font++;
+ insert_html_tag (arg, "kbd");
+ }
+ else
+ { /* People use @kbd in an example to get the "user input" font.
+ We don't want quotes in that case. */
+ if (!in_fixed_width_font)
+ cm_code (arg);
+ }
+}
+
+void
+cm_url (arg, start, end)
+{
+ if (html)
+ {
+ if (arg == START)
+ add_word ("&lt;<code>");
+ else
+ add_word ("</code>&gt;");
+ }
+ else
+ if (arg == START)
+ add_word ("<");
+ else
+ add_word (">");
+}
+
+void
+cm_key (arg)
+ int arg;
+{
+ if (html)
+ add_word (arg == START ? "&lt;" : "&gt;");
+ else
+ add_char (arg == START ? '<' : '>');
+}
+
+/* Handle a command that switches to a non-fixed-width font. */
+void
+not_fixed_width (arg)
+ int arg;
+{
+ if (arg == START)
+ in_fixed_width_font = 0;
+}
+
+/* @var in makeinfo just uppercases the text. */
+void
+cm_var (arg, start_pos, end_pos)
+ int arg, start_pos, end_pos;
+{
+ not_fixed_width (arg);
+
+ if (html)
+ insert_html_tag (arg, "var");
+ else if (arg == END)
+ {
+ while (start_pos < end_pos)
+ {
+ unsigned char c = output_paragraph[start_pos];
+ if (strchr ("[](),", c))
+ warning (_("unlikely character %c in @var"), c);
+ output_paragraph[start_pos] = coerce_to_upper (c);
+ start_pos++;
+ }
+ }
+}
+
+void
+cm_sc (arg, start_pos, end_pos)
+ int arg, start_pos, end_pos;
+{
+ not_fixed_width (arg);
+
+ if (arg == START)
+ {
+ if (html)
+ insert_html_tag (arg, small_tag);
+ }
+ else
+ {
+ int all_upper = 1;
+
+ if (html)
+ start_pos += sizeof (small_tag) + 2 - 1; /* skip <small> */
+
+ while (start_pos < end_pos)
+ {
+ unsigned char c = output_paragraph[start_pos];
+ if (!isupper (c))
+ all_upper = 0;
+ output_paragraph[start_pos] = coerce_to_upper (c);
+ start_pos++;
+ }
+ if (all_upper)
+ warning (_("@sc argument all uppercase, thus no effect"));
+
+ if (html)
+ insert_html_tag (arg, small_tag);
+ }
+}
+
+void
+cm_dfn (arg, position)
+ int arg, position;
+{
+ if (html)
+ insert_html_tag (arg, "dfn");
+ else if (arg == START)
+ add_char ('"');
+ else
+ add_meta_char ('"');
+}
+
+void
+cm_emph (arg)
+ int arg;
+{
+ if (html)
+ insert_html_tag (arg, "em");
+ else
+ add_char ('_');
+}
+
+void
+cm_strong (arg, position)
+ int arg, position;
+{
+ if (html)
+ insert_html_tag (arg, "strong");
+ else
+ add_char ('*');
+}
+
+void
+cm_cite (arg, position)
+ int arg, position;
+{
+ if (html)
+ insert_html_tag (arg, "cite");
+ else
+ {
+ if (arg == START)
+ add_char ('`');
+ else
+ add_char ('\'');
+ }
+}
+
+/* No highlighting, but argument switches fonts. */
+void
+cm_not_fixed_width (arg, start, end)
+ int arg, start, end;
+{
+ not_fixed_width (arg);
+}
+
+void
+cm_i (arg)
+ int arg;
+{
+ if (html)
+ insert_html_tag (arg, "i");
+ else
+ not_fixed_width (arg);
+}
+
+void
+cm_b (arg)
+ int arg;
+{
+ if (html)
+ insert_html_tag (arg, "b");
+ else
+ not_fixed_width (arg);
+}
+
+void
+cm_r (arg)
+ int arg;
+{
+ extern int printing_index;
+
+ /* People use @r{} in index entries like this:
+
+ @findex foo@r{, some text}
+
+ This is supposed to produce output as if the entry were saying
+ "@code{foo}, some text", since the "fn" index is typeset as
+ @code. The following attempts to do the same in HTML. Note that
+ this relies on the fact that only @code bumps up the variable
+ in_fixed_width_font while processing index entries in HTML mode. */
+ if (html && printing_index)
+ {
+ int level = in_fixed_width_font;
+
+ while (level--)
+ insert_html_tag (arg == START ? END : START, "code");
+ }
+
+ not_fixed_width (arg);
+}
+
+void
+cm_titlefont (arg)
+ int arg;
+{
+ not_fixed_width (arg);
+}
+
+/* Various commands are no-op's. */
+void
+cm_no_op ()
+{
+}
+
+
+/* For proofing single chapters, etc. */
+void
+cm_novalidate ()
+{
+ validating = 0;
+}
+
+
+/* Prevent the argument from being split across two lines. */
+void
+cm_w (arg, start, end)
+ int arg, start, end;
+{
+ if (arg == START)
+ non_splitting_words++;
+ else
+ non_splitting_words--;
+}
+
+
+/* Explain that this command is obsolete, thus the user shouldn't
+ do anything with it. */
+static void
+cm_obsolete (arg, start, end)
+ int arg, start, end;
+{
+ if (arg == START)
+ warning (_("%c%s is obsolete"), COMMAND_PREFIX, command);
+}
+
+
+/* This says to inhibit the indentation of the next paragraph, but
+ not of following paragraphs. */
+void
+cm_noindent ()
+{
+ if (!inhibit_paragraph_indentation)
+ inhibit_paragraph_indentation = -1;
+}
+
+/* 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
+ switch files. Finally, complain, or at least warn. It doesn't
+ really matter, anyway, since this doesn't get executed. */
+void
+cm_setfilename ()
+{
+ char *filename;
+ get_rest_of_line (1, &filename);
+ /* warning ("`@%s %s' encountered and ignored", command, filename); */
+ free (filename);
+}
+
+void
+cm_settitle ()
+{
+ get_rest_of_line (0, &title);
+}
+
+/* Ignore argument in braces. */
+void
+cm_ignore_arg (arg, start_pos, end_pos)
+ int arg, start_pos, end_pos;
+{
+ if (arg == END)
+ output_paragraph_offset = start_pos;
+}
+
+/* Ignore argument on rest of line. */
+void
+cm_ignore_line ()
+{
+ discard_until ("\n");
+}
+
+/* Insert the number of blank lines passed as argument. */
+void
+cm_sp ()
+{
+ int lines;
+ char *line;
+
+ get_rest_of_line (1, &line);
+
+ if (sscanf (line, "%d", &lines) != 1 || lines <= 0)
+ line_error (_("@sp requires a positive numeric argument, not `%s'"), line);
+ else
+ { /* Must disable filling since otherwise multiple newlines is like
+ multiple spaces. Must close paragraph since that's what the
+ manual says and that's what TeX does. */
+ int save_filling_enabled = filling_enabled;
+ filling_enabled = 0;
+
+ close_paragraph ();
+
+ while (lines--)
+ {
+ if (html)
+ insert_string ("<br><p>\n");
+ else
+ add_char ('\n');
+ }
+
+ filling_enabled = save_filling_enabled;
+ }
+ free (line);
+}
+
+/* @dircategory LINE outputs INFO-DIR-SECTION LINE, unless --no-headers. */
+void
+cm_dircategory ()
+{
+ char *line;
+
+ if (html)
+ cm_ignore_line ();
+ else
+ {
+ get_rest_of_line (1, &line);
+
+ if (!no_headers && !html)
+ {
+ kill_self_indent (-1); /* make sure there's no indentation */
+ insert_string ("INFO-DIR-SECTION ");
+ insert_string (line);
+ insert ('\n');
+ }
+
+ free (line);
+ }
+}
+
+/* Start a new line with just this text on it.
+ Then center the line of text.
+ This always ends the current paragraph. */
+void
+cm_center ()
+{
+ int i, start, length;
+ unsigned char *line;
+ int save_indented_fill = indented_fill;
+ int save_filling_enabled = filling_enabled;
+ int fudge_factor = 1;
+
+ close_paragraph ();
+ filling_enabled = indented_fill = 0;
+ cm_noindent ();
+ start = output_paragraph_offset;
+
+ if (html)
+ add_word ("<p align=\"center\">");
+
+ inhibit_output_flushing ();
+ get_rest_of_line (0, (char **)&line);
+ execute_string ("%s", (char *)line);
+ free (line);
+ uninhibit_output_flushing ();
+ if (html)
+ add_word ("</p>");
+
+ else
+ {
+ i = output_paragraph_offset - 1;
+ while (i > (start - 1) && output_paragraph[i] == '\n')
+ i--;
+
+ output_paragraph_offset = ++i;
+ length = output_paragraph_offset - start;
+
+ if (length < (fill_column - fudge_factor))
+ {
+ line = xmalloc (1 + length);
+ memcpy (line, (char *)(output_paragraph + start), length);
+
+ i = (fill_column - fudge_factor - length) / 2;
+ output_paragraph_offset = start;
+
+ while (i--)
+ insert (' ');
+
+ for (i = 0; i < length; i++)
+ insert (line[i]);
+
+ free (line);
+ }
+ }
+
+ insert ('\n');
+ close_paragraph ();
+ filling_enabled = save_filling_enabled;
+ indented_fill = save_indented_fill;
+}
+
+/* Show what an expression returns. */
+void
+cm_result (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word (html ? "=&gt;" : "=>");
+}
+
+/* What an expression expands to. */
+void
+cm_expansion (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word (html ? "==&gt;" : "==>");
+}
+
+/* Indicates two expressions are equivalent. */
+void
+cm_equiv (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word ("==");
+}
+
+/* What an expression may print. */
+void
+cm_print (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word ("-|");
+}
+
+/* An error signaled. */
+void
+cm_error (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word (html ? "error--&gt;" : "error-->");
+}
+
+/* The location of point in an example of a buffer. */
+void
+cm_point (arg)
+ int arg;
+{
+ if (arg == END)
+ add_word ("-!-");
+}
+
+/* @exdent: Start a new line with just this text on it.
+ The text is outdented one level if possible. */
+void
+cm_exdent ()
+{
+ char *line;
+ int save_indent = current_indent;
+ int save_in_fixed_width_font = in_fixed_width_font;
+
+ /* Read argument */
+ get_rest_of_line (0, &line);
+
+ /* Exdent the output. Actually this may be a no-op. */
+ if (current_indent)
+ current_indent -= default_indentation_increment;
+
+ /* @exdent arg is supposed to be in roman. */
+ in_fixed_width_font = 0;
+
+ /* The preceding newline already inserted the `current_indent'.
+ Remove one level's worth. */
+ kill_self_indent (default_indentation_increment);
+
+ if (html)
+ add_word ("<br>");
+
+ /* Can't close_single_paragraph, then we lose preceding blank lines. */
+ flush_output ();
+ execute_string ("%s", line);
+ free (line);
+
+ if (html)
+ add_word ("<br>");
+ close_single_paragraph ();
+
+ current_indent = save_indent;
+ in_fixed_width_font = save_in_fixed_width_font;
+}
+
+
+/* Remember this file, and move onto the next. */
+void
+cm_include ()
+{
+ char *filename;
+
+ if (macro_expansion_output_stream && !executing_string)
+ me_append_before_this_command ();
+
+ close_paragraph ();
+ get_rest_of_line (0, &filename);
+
+ if (macro_expansion_output_stream && !executing_string)
+ remember_itext (input_text, input_text_offset);
+
+ pushfile ();
+
+ /* In verbose mode we print info about including another file. */
+ if (verbose_mode)
+ {
+ int i = 0;
+ FSTACK *stack = filestack;
+
+ for (i = 0, stack = filestack; stack; stack = stack->next, i++);
+
+ i *= 2;
+
+ printf ("%*s", i, "");
+ printf ("%c%s %s\n", COMMAND_PREFIX, command, filename);
+ fflush (stdout);
+ }
+
+ if (!find_and_load (filename))
+ {
+ extern int errno;
+
+ popfile ();
+ line_number--;
+
+ /* Cannot "@include foo", in line 5 of "/wh/bar". */
+ line_error ("%c%s %s: %s", COMMAND_PREFIX, command, filename,
+ strerror (errno));
+
+ free (filename);
+ return;
+ }
+ else
+ {
+ if (macro_expansion_output_stream && !executing_string)
+ remember_itext (input_text, input_text_offset);
+ reader_loop ();
+ }
+ free (filename);
+ popfile ();
+}
+
+
+/* @bye: Signals end of processing. Easy to make this happen. */
+
+void
+cm_bye ()
+{
+ discard_braces (); /* should not have any unclosed braces left */
+ flush_output ();
+ input_text_offset = input_text_length;
+}
+
+/* @paragraphindent */
+
+static void
+cm_paragraphindent ()
+{
+ char *arg;
+
+ get_rest_of_line (1, &arg);
+ if (set_paragraph_indent (arg) != 0)
+ line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
+
+ free (arg);
+}
+
+/* @exampleindent: change indentation of example-like environments. */
+static int
+set_default_indentation_increment (string)
+ char *string;
+{
+ if (strcmp (string, "asis") == 0 || strcmp (string, _("asis")) == 0)
+ ;
+ else if (strcmp (string, "none") == 0 || strcmp (string, _("none")) == 0)
+ default_indentation_increment = 0;
+ else if (sscanf (string, "%d", &default_indentation_increment) != 1)
+ return -1;
+ return 0;
+}
+
+static void
+cm_exampleindent ()
+{
+ char *arg;
+
+ get_rest_of_line (1, &arg);
+ if (set_default_indentation_increment (arg) != 0)
+ line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
+
+ free (arg);
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/cmds.h b/gnu/usr.bin/texinfo/makeinfo/cmds.h
new file mode 100644
index 00000000000..528b08512ec
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/cmds.h
@@ -0,0 +1,50 @@
+/* cmds.h -- declarations for cmds.c.
+ $Id: cmds.h,v 1.1.1.1 2000/02/09 01:25:09 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef CMDS_H
+#define CMDS_H
+
+/* The three arguments a command can get are a flag saying whether it is
+ before argument parsing (START) or after (END), the starting position
+ of the arguments, and the ending position. */
+typedef void COMMAND_FUNCTION (); /* So we can say COMMAND_FUNCTION *foo; */
+
+/* Each command has an associated function. When the command is
+ encountered in the text, the associated function is called with START
+ as the argument. If the function expects arguments in braces, it
+ remembers itself on the stack. When the corresponding close brace is
+ encountered, the function is called with END as the argument. */
+#define START 0
+#define END 1
+
+/* Does the command expect braces? */
+#define NO_BRACE_ARGS 0
+#define BRACE_ARGS 1
+#define MAYBE_BRACE_ARGS 2
+
+typedef struct
+{
+ char *name;
+ COMMAND_FUNCTION *proc;
+ int argument_in_braces;
+} COMMAND;
+
+extern COMMAND command_table[];
+
+#endif /* !CMDS_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/defun.c b/gnu/usr.bin/texinfo/makeinfo/defun.c
new file mode 100644
index 00000000000..e9078c655f7
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/defun.c
@@ -0,0 +1,663 @@
+/* defun.c -- @defun and friends.
+ $Id: defun.c,v 1.1.1.1 2000/02/09 01:25:10 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "defun.h"
+#include "insertion.h"
+#include "makeinfo.h"
+
+
+#define DEFUN_SELF_DELIMITING(c) \
+ ((c) == '(' || (c) == ')' || (c) == '[' || (c) == ']')
+
+struct token_accumulator
+{
+ unsigned int length;
+ unsigned int index;
+ char **tokens;
+};
+
+static void
+initialize_token_accumulator (accumulator)
+ struct token_accumulator *accumulator;
+{
+ accumulator->length = 0;
+ accumulator->index = 0;
+ accumulator->tokens = NULL;
+}
+
+static void
+accumulate_token (accumulator, token)
+ struct token_accumulator *accumulator;
+ char *token;
+{
+ if (accumulator->index >= accumulator->length)
+ {
+ accumulator->length += 10;
+ accumulator->tokens = xrealloc (accumulator->tokens,
+ (accumulator->length * sizeof (char *)));
+ }
+ accumulator->tokens[accumulator->index] = token;
+ accumulator->index += 1;
+}
+
+/* Given STRING_POINTER pointing at an open brace, skip forward and return a
+ pointer to just past the matching close brace. */
+static int
+scan_group_in_string (string_pointer)
+ char **string_pointer;
+{
+ char *scan_string = (*string_pointer) + 1;
+ unsigned int level = 1;
+
+ for (;;)
+ {
+ int c;
+ if (level == 0)
+ {
+ *string_pointer = scan_string;
+ return 1;
+ }
+ c = *scan_string++;
+ if (c == 0)
+ {
+ /* Tweak line_number to compensate for fact that
+ we gobbled the whole line before coming here. */
+ line_number -= 1;
+ line_error (_("Missing `}' in @def arg"));
+ line_number += 1;
+ *string_pointer = scan_string - 1;
+ return 0;
+ }
+
+ if (c == '{')
+ level += 1;
+ if (c == '}')
+ level -= 1;
+ }
+}
+
+/* Return a list of tokens from the contents of STRING.
+ Commands and brace-delimited groups count as single tokens.
+ Contiguous whitespace characters are converted to a token
+ consisting of a single space. */
+static char **
+args_from_string (string)
+ char *string;
+{
+ struct token_accumulator accumulator;
+ char *token_start, *token_end;
+ char *scan_string = string;
+
+ initialize_token_accumulator (&accumulator);
+
+ while (*scan_string)
+ { /* Replace arbitrary whitespace by a single space. */
+ if (whitespace (*scan_string))
+ {
+ scan_string += 1;
+ while (whitespace (*scan_string))
+ scan_string += 1;
+ accumulate_token ((&accumulator), (xstrdup (" ")));
+ continue;
+ }
+
+ /* Commands count as single tokens. */
+ if (*scan_string == COMMAND_PREFIX)
+ {
+ token_start = scan_string;
+ scan_string += 1;
+ if (self_delimiting (*scan_string))
+ scan_string += 1;
+ else
+ {
+ int c;
+ while (1)
+ {
+ c = *scan_string++;
+
+ if ((c == 0) || (c == '{') || (whitespace (c)))
+ {
+ scan_string -= 1;
+ break;
+ }
+ }
+
+ if (*scan_string == '{')
+ {
+ char *s = scan_string;
+ (void) scan_group_in_string (&s);
+ scan_string = s;
+ }
+ }
+ token_end = scan_string;
+ }
+
+ /* Parentheses and brackets are self-delimiting. */
+ else if (DEFUN_SELF_DELIMITING (*scan_string))
+ {
+ token_start = scan_string;
+ scan_string += 1;
+ token_end = scan_string;
+ }
+
+ /* Open brace introduces a group that is a single token. */
+ else if (*scan_string == '{')
+ {
+ char *s = scan_string;
+ int balanced = scan_group_in_string (&s);
+
+ token_start = scan_string + 1;
+ scan_string = s;
+ token_end = balanced ? (scan_string - 1) : scan_string;
+ }
+
+ /* Otherwise a token is delimited by whitespace, parentheses,
+ brackets, or braces. A token is also ended by a command. */
+ else
+ {
+ token_start = scan_string;
+
+ for (;;)
+ {
+ int c;
+
+ c = *scan_string++;
+
+ /* Do not back up if we're looking at a }; since the only
+ valid }'s are those matched with {'s, we want to give
+ an error. If we back up, we go into an infinite loop. */
+ if (!c || whitespace (c) || DEFUN_SELF_DELIMITING (c)
+ || c == '{')
+ {
+ scan_string--;
+ break;
+ }
+
+ /* If we encounter a command embedded within a token,
+ then end the token. */
+ if (c == COMMAND_PREFIX)
+ {
+ scan_string--;
+ break;
+ }
+ }
+ token_end = scan_string;
+ }
+
+ accumulate_token (&accumulator, substring (token_start, token_end));
+ }
+ accumulate_token (&accumulator, NULL);
+ return accumulator.tokens;
+}
+
+static void
+process_defun_args (defun_args, auto_var_p)
+ char **defun_args;
+ int auto_var_p;
+{
+ int pending_space = 0;
+
+ for (;;)
+ {
+ char *defun_arg = *defun_args++;
+
+ if (defun_arg == NULL)
+ break;
+
+ if (defun_arg[0] == ' ')
+ {
+ pending_space = 1;
+ continue;
+ }
+
+ if (pending_space)
+ {
+ add_char (' ');
+ pending_space = 0;
+ }
+
+ if (DEFUN_SELF_DELIMITING (defun_arg[0]))
+ add_char (defun_arg[0]);
+ else if (defun_arg[0] == '&')
+ if (html)
+ {
+ defun_arg = escape_string (xstrdup (defun_arg));
+ add_word (defun_arg);
+ free (defun_arg);
+ }
+ else
+ add_word (defun_arg);
+ else if (defun_arg[0] == COMMAND_PREFIX)
+ execute_string ("%s", defun_arg);
+ else if (auto_var_p)
+ if (html)
+ {
+ defun_arg = escape_string (xstrdup (defun_arg));
+ add_word (defun_arg);
+ free (defun_arg);
+ }
+ else
+ add_word (defun_arg);
+ else
+ add_word (defun_arg);
+ }
+}
+
+static char *
+next_nonwhite_defun_arg (arg_pointer)
+ char ***arg_pointer;
+{
+ char **scan = (*arg_pointer);
+ char *arg = (*scan++);
+
+ if ((arg != 0) && (*arg == ' '))
+ arg = *scan++;
+
+ if (arg == 0)
+ scan -= 1;
+
+ *arg_pointer = scan;
+
+ return (arg == 0) ? "" : arg;
+}
+
+
+/* This is needed also in insertion.c. */
+
+enum insertion_type
+get_base_type (type)
+ enum insertion_type type;
+{
+ enum insertion_type base_type;
+ switch (type)
+ {
+ case defivar: base_type = defcv; break;
+ case defmac: base_type = deffn; break;
+ case defmethod: base_type = defop; break;
+ case defopt: base_type = defvr; break;
+ case defspec: base_type = deffn; break;
+ case deftypefun: base_type = deftypefn; break;
+ case deftypeivar: base_type = deftypeivar; break;
+ case deftypemethod: base_type = deftypemethod; break;
+ case deftypeop: base_type = deftypeop; break;
+ case deftypevar: base_type = deftypevr; break;
+ case defun: base_type = deffn; break;
+ case defvar: base_type = defvr; break;
+ default:
+ base_type = type;
+ break;
+ }
+
+ return base_type;
+}
+
+/* Make the defun type insertion.
+ TYPE says which insertion this is.
+ X_P, if nonzero, says not to start a new insertion. */
+static void
+defun_internal (type, x_p)
+ enum insertion_type type;
+ int x_p;
+{
+ enum insertion_type base_type;
+ char **defun_args, **scan_args;
+ char *category, *defined_name, *type_name, *type_name2;
+
+ {
+ char *line;
+
+ /* The @def.. line is the only place in Texinfo where you are
+ allowed to use unquoted braces that don't delimit arguments of
+ a command or a macro; in any other place it will trigger an
+ error message from the reader loop. The special handling of
+ this case inside `args_from_string' is an extra special hack
+ which allows this. The side effect is that if we try to expand
+ the rest of the line below, the recursive reader loop will
+ signal an error if there are brace-delimited arguments on that line.
+
+ The best solution to this would be to change the syntax of
+ @def.. commands so that it doesn't violate Texinfo's own rules.
+ But it's probably too late for this now, as it will break a lot
+ of existing manuals.
+
+ Unfortunately, this means that you can't call macros, use @value, etc.
+ inside @def.. commands, sigh. */
+ get_rest_of_line (0, &line);
+ defun_args = (args_from_string (line));
+ free (line);
+ }
+
+ scan_args = defun_args;
+
+ /* Get base type and category string. */
+ base_type = get_base_type (type);
+
+ /* xx all these const strings should be determined upon
+ documentlanguage argument and NOT via gettext (kama). */
+ switch (type)
+ {
+ case defun:
+ case deftypefun:
+ category = _("Function");
+ break;
+ case defmac:
+ category = _("Macro");
+ break;
+ case defspec:
+ category = _("Special Form");
+ break;
+ case defvar:
+ case deftypevar:
+ category = _("Variable");
+ break;
+ case defopt:
+ category = _("User Option");
+ break;
+ case defivar:
+ case deftypeivar:
+ category = _("Instance Variable");
+ break;
+ case defmethod:
+ case deftypemethod:
+ category = _("Method");
+ break;
+ default:
+ category = next_nonwhite_defun_arg (&scan_args);
+ break;
+ }
+
+ /* The class name. */
+ if ((base_type == deftypefn)
+ || (base_type == deftypevr)
+ || (base_type == defcv)
+ || (base_type == defop)
+ || (base_type == deftypeivar)
+ || (base_type == deftypemethod)
+ || (base_type == deftypeop)
+ )
+ type_name = next_nonwhite_defun_arg (&scan_args);
+
+ /* The type name for typed languages. */
+ if (base_type == deftypemethod
+ || base_type == deftypeivar
+ || base_type == deftypeop
+ )
+ type_name2 = next_nonwhite_defun_arg (&scan_args);
+
+ /* The function or whatever that's actually being defined. */
+ defined_name = next_nonwhite_defun_arg (&scan_args);
+
+ /* This hack exists solely for the purposes of formatting the Texinfo
+ manual. I couldn't think of a better way. The token might be a
+ simple @@ followed immediately by more text. If this is the case,
+ then the next defun arg is part of this one, and we should
+ concatenate them. */
+ if (*scan_args && **scan_args && !whitespace (**scan_args)
+ && STREQ (defined_name, "@@"))
+ {
+ char *tem = xmalloc (3 + strlen (scan_args[0]));
+
+ sprintf (tem, "@@%s", scan_args[0]);
+
+ free (scan_args[0]);
+ scan_args[0] = tem;
+ scan_args++;
+ defined_name = tem;
+ }
+
+ if (!x_p)
+ begin_insertion (type);
+
+ /* Write the definition header line.
+ This should start at the normal indentation. */
+ current_indent -= default_indentation_increment;
+ start_paragraph ();
+
+ if (html && !x_p)
+ /* Start the definition on new paragraph. */
+ add_word ("<p>\n");
+
+ if (!html)
+ switch (base_type)
+ {
+ case deffn:
+ case defvr:
+ case deftp:
+ execute_string (" -- %s: %s", category, defined_name);
+ break;
+ case deftypefn:
+ case deftypevr:
+ execute_string (" -- %s: %s %s", category, type_name, defined_name);
+ break;
+ case defcv:
+ execute_string (" -- %s %s %s: %s", category, _("of"), type_name,
+ defined_name);
+ break;
+ case deftypeivar:
+ execute_string (" -- %s %s %s: %s %s", category, _("of"), type_name,
+ type_name2, defined_name);
+ break;
+ case defop:
+ execute_string (" -- %s %s %s: %s", category, _("on"), type_name,
+ defined_name);
+ break;
+ case deftypeop:
+ execute_string (" -- %s %s %s: %s %s", category, _("on"), type_name,
+ type_name2, defined_name);
+ break;
+ case deftypemethod:
+ execute_string (" -- %s %s %s: %s %s", category, _("on"), type_name,
+ type_name2, defined_name);
+ break;
+ }
+
+ if (html)
+ {
+ /* If this is not a @def...x version, it could only
+ be a normal version @def.... So start the table here. */
+ if (!x_p)
+ add_word ("<table width=\"100%\">\n");
+
+ /* If this is an @def...x there has to be an other @def... before
+ it, so this is only a new row within an existing table. With
+ two complete standalone tables the gap between them is too big. */
+ add_word ("<tr>\n");
+ add_word ("<td align=\"left\">");
+
+ switch (base_type)
+ {
+ case deffn:
+ case defvr:
+ case deftp:
+ /* <i> is for the following function arguments. */
+ add_word_args ("<b>%s</b><i>", defined_name);
+ break;
+ case deftypefn:
+ case deftypevr:
+ add_word_args ("%s <b>%s</b><i>", type_name, defined_name);
+ break;
+ case defcv:
+ case defop:
+ add_word_args ("<b>%s</b><i>", defined_name);
+ break;
+ case deftypemethod:
+ case deftypeop:
+ case deftypeivar:
+ add_word_args ("%s <b>%s</b><i>", type_name2, defined_name);
+ break;
+ }
+ } /* if (html)... */
+
+ current_indent += default_indentation_increment;
+
+ /* Now process the function arguments, if any. If these carry onto
+ the next line, they should be indented by two increments to
+ distinguish them from the body of the definition, which is indented
+ by one increment. */
+ current_indent += default_indentation_increment;
+
+ switch (base_type)
+ {
+ case deffn:
+ case defop:
+ process_defun_args (scan_args, 1);
+ break;
+
+ /* Through Makeinfo 1.67 we processed remaining args only for deftp,
+ deftypefn, and deftypemethod. But the libc manual, for example,
+ needs to say:
+ @deftypevar {char *} tzname[2]
+ And simply allowing the extra text seems far simpler than trying
+ to invent yet more defn commands. In any case, we should either
+ output it or give an error, not silently ignore it. */
+ default:
+ process_defun_args (scan_args, 0);
+ break;
+ }
+
+ current_indent -= default_indentation_increment;
+ close_single_paragraph ();
+
+ if (html)
+ {
+ /* xx The single words (on, off) used here, should depend on
+ documentlanguage and NOT on gettext --kama. */
+ switch (base_type)
+ {
+ case deffn:
+ case defvr:
+ case deftp:
+ case deftypefn:
+ case deftypevr:
+ add_word ("</i>"); /* close italic area for arguments */
+ /* put the rest into the second column */
+ add_word_args ("</td>\n<td align=\"right\">%s", category);
+ break;
+
+ case defcv:
+ add_word ("</td>\n<td align=\"right\">");
+ add_word_args ("%s %s %s", category, _("of"), type_name);
+ break;
+
+ case defop:
+ case deftypemethod:
+ case deftypeop:
+ add_word ("</i>");
+ add_word ("</td>\n<td align=\"right\">");
+ add_word_args ("%s %s %s", category, _("on"), type_name);
+ break;
+
+ case deftypeivar:
+ add_word ("</i>");
+ add_word ("</td>\n<td align=\"right\">");
+ add_word_args ("%s %s %s", category, _("of"), type_name);
+ break;
+ } /* switch (base_type)... */
+
+ add_word ("</td>\n"); /* close second column */
+ add_word ("</tr>\n"); /* close row */
+
+ /* This is needed because I have to know if the next line is
+ normal text or another @def..x. If text follows, create a new
+ table to get the indentation for the following text.
+
+ This construction would fail if someone uses:
+ @deffn
+ @sp 2
+ @deffnx
+ .
+ @end deffn
+ But we don't care. */
+ if (!looking_at ("@def"))
+ {
+ add_word ("</table>\n");
+ add_word ("<table width=\"95%\" align=\"center\">\n");
+ add_word ("<tr><td>\n");
+ }
+
+ } /* if (html)... */
+
+ /* Make an entry in the appropriate index. */
+ switch (base_type)
+ {
+ case deffn:
+ case deftypefn:
+ execute_string ("@findex %s\n", defined_name);
+ break;
+ case defvr:
+ case deftypevr:
+ case defcv:
+ execute_string ("@vindex %s\n", defined_name);
+ break;
+ case deftypeivar:
+ execute_string ("@vindex %s %s %s\n", defined_name, _("of"), type_name);
+ break;
+ case defop:
+ case deftypeop:
+ case deftypemethod:
+ execute_string ("@findex %s %s %s\n", defined_name, _("on"), type_name);
+ break;
+ case deftp:
+ execute_string ("@tindex %s\n", defined_name);
+ break;
+ }
+
+ /* Deallocate the token list. */
+ scan_args = defun_args;
+ while (1)
+ {
+ char * arg = (*scan_args++);
+ if (arg == NULL)
+ break;
+ free (arg);
+ }
+ free (defun_args);
+}
+
+/* Add an entry for a function, macro, special form, variable, or option.
+ If the name of the calling command ends in `x', then this is an extra
+ entry included in the body of an insertion of the same type. */
+void
+cm_defun ()
+{
+ int x_p;
+ enum insertion_type type;
+ char *temp = xstrdup (command);
+
+ x_p = (command[strlen (command) - 1] == 'x');
+
+ if (x_p)
+ temp[strlen (temp) - 1] = 0;
+
+ type = find_type_from_name (temp);
+ free (temp);
+
+ /* 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);
+ discard_until ("\n");
+ return;
+ }
+
+ defun_internal (type, x_p);
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/defun.h b/gnu/usr.bin/texinfo/makeinfo/defun.h
new file mode 100644
index 00000000000..9ab64483a7e
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/defun.h
@@ -0,0 +1,31 @@
+/* defun.h -- declaration for defuns.
+ $Id: defun.h,v 1.1.1.1 2000/02/09 01:25:10 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#ifndef DEFUN_H
+#define DEFUN_H
+
+#include "insertion.h"
+
+extern enum insertion_type get_base_type ();
+extern void cm_defun ();
+
+#endif /* !DEFUN_H */
+
diff --git a/gnu/usr.bin/texinfo/makeinfo/files.c b/gnu/usr.bin/texinfo/makeinfo/files.c
new file mode 100644
index 00000000000..6f2dcb2b8d6
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/files.c
@@ -0,0 +1,529 @@
+/* files.c -- file-related functions for Texinfo.
+ $Id: files.c,v 1.1.1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "files.h"
+#include "macro.h"
+#include "makeinfo.h"
+
+FSTACK *filestack = NULL;
+
+static int node_filename_stack_index = 0;
+static int node_filename_stack_size = 0;
+static char **node_filename_stack = NULL;
+
+
+/* Looking for include files. */
+
+/* Given a string containing units of information separated by colons,
+ return the next one pointed to by INDEX, or NULL if there are no more.
+ Advance INDEX to the character after the colon. */
+static char *
+extract_colon_unit (string, index)
+ char *string;
+ int *index;
+{
+ int start;
+ int path_sep_char = PATH_SEP[0];
+ int i = *index;
+
+ if (!string || (i >= strlen (string)))
+ return NULL;
+
+ /* Each call to this routine leaves the index pointing at a colon if
+ there is more to the path. If i > 0, then increment past the
+ `:'. If i == 0, then the path has a leading colon. Trailing colons
+ are handled OK by the `else' part of the if statement; an empty
+ string is returned in that case. */
+ if (i && string[i] == path_sep_char)
+ i++;
+
+ start = i;
+ while (string[i] && string[i] != path_sep_char) i++;
+ *index = i;
+
+ if (i == start)
+ {
+ if (string[i])
+ (*index)++;
+
+ /* Return "" in the case of a trailing `:'. */
+ return xstrdup ("");
+ }
+ else
+ {
+ char *value;
+
+ value = xmalloc (1 + (i - start));
+ memcpy (value, &string[start], (i - start));
+ value [i - start] = 0;
+
+ return value;
+ }
+}
+
+/* Return the full pathname for FILENAME by searching along PATH.
+ 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 *
+get_file_info_in_path (filename, path, finfo)
+ char *filename, *path;
+ struct stat *finfo;
+{
+ char *dir;
+ int result, index = 0;
+
+ if (path == NULL)
+ path = ".";
+
+ /* Handle absolute pathnames. */
+ if (IS_ABSOLUTE (filename)
+ || (*filename == '.'
+ && (IS_SLASH (filename[1])
+ || (filename[1] == '.' && IS_SLASH (filename[2])))))
+ {
+ if (stat (filename, finfo) == 0)
+ return xstrdup (filename);
+ else
+ return NULL;
+ }
+
+ while ((dir = extract_colon_unit (path, &index)))
+ {
+ char *fullpath;
+
+ if (!*dir)
+ {
+ free (dir);
+ dir = xstrdup (".");
+ }
+
+ fullpath = xmalloc (2 + strlen (dir) + strlen (filename));
+ sprintf (fullpath, "%s/%s", dir, filename);
+ free (dir);
+
+ result = stat (fullpath, finfo);
+
+ if (result == 0)
+ return fullpath;
+ else
+ free (fullpath);
+ }
+ return NULL;
+}
+
+/* Find and load the file named FILENAME. Return a pointer to
+ the loaded file, or NULL if it can't be loaded. */
+char *
+find_and_load (filename)
+ char *filename;
+{
+ struct stat fileinfo;
+ long file_size;
+ int file = -1, count = 0;
+ char *fullpath, *result;
+#if O_BINARY || defined (VMS)
+ int n;
+#endif
+
+ result = fullpath = NULL;
+
+ fullpath = get_file_info_in_path (filename, include_files_path, &fileinfo);
+
+ if (!fullpath)
+ goto error_exit;
+
+ filename = fullpath;
+ file_size = (long) fileinfo.st_size;
+
+ file = open (filename, O_RDONLY);
+ if (file < 0)
+ goto error_exit;
+
+ /* Load the file, with enough room for a newline and a null. */
+ result = xmalloc (file_size + 2);
+
+ /* VMS stat lies about the st_size value. The actual number of
+ readable bytes is always less than this value. The arcane
+ mysteries of VMS/RMS are too much to probe, so this hack
+ suffices to make things work. */
+#if O_BINARY || defined (VMS)
+#ifdef VMS
+ while ((n = read (file, result + count, file_size)) > 0)
+#else /* !VMS */
+#ifndef WIN32
+ while ((n = read (file, result + count, file_size)) > 0)
+#else /* WIN32 */
+ /* Does WIN32 really need reading 1 character at a time?? */
+ while ((n = read (file, result + count, 1)) > 0)
+#endif /* WIN32 */
+#endif /* !VMS */
+ count += n;
+ if (0 < count && count < file_size)
+ result = xrealloc (result, count + 2); /* why waste the slack? */
+ else if (n == -1)
+#else /* !VMS && !O_BINARY */
+ count = file_size;
+ if (read (file, result, file_size) != file_size)
+#endif /* !VMS && !WIN32 */
+
+ error_exit:
+ {
+ if (result)
+ free (result);
+
+ if (fullpath)
+ free (fullpath);
+
+ if (file != -1)
+ close (file);
+
+ return NULL;
+ }
+ close (file);
+
+ /* Set the globals to the new file. */
+ input_text = result;
+ input_text_length = count;
+ input_filename = fullpath;
+ node_filename = xstrdup (fullpath);
+ input_text_offset = 0;
+ line_number = 1;
+ /* Not strictly necessary. This magic prevents read_token () from doing
+ extra unnecessary work each time it is called (that is a lot of times).
+ INPUT_TEXT_LENGTH is one past the actual end of the text. */
+ input_text[input_text_length] = '\n';
+ /* This, on the other hand, is always necessary. */
+ input_text[input_text_length+1] = 0;
+ return result;
+}
+
+/* Pushing and popping files. */
+void
+push_node_filename ()
+{
+ if (node_filename_stack_index + 1 > node_filename_stack_size)
+ node_filename_stack = xrealloc
+ (node_filename_stack, (node_filename_stack_size += 10) * sizeof (char *));
+
+ node_filename_stack[node_filename_stack_index] = node_filename;
+ node_filename_stack_index++;
+}
+
+void
+pop_node_filename ()
+{
+ node_filename = node_filename_stack[--node_filename_stack_index];
+}
+
+/* Save the state of the current input file. */
+void
+pushfile ()
+{
+ FSTACK *newstack = xmalloc (sizeof (FSTACK));
+ newstack->filename = input_filename;
+ newstack->text = input_text;
+ newstack->size = input_text_length;
+ newstack->offset = input_text_offset;
+ newstack->line_number = line_number;
+ newstack->next = filestack;
+
+ filestack = newstack;
+ push_node_filename ();
+}
+
+/* Make the current file globals be what is on top of the file stack. */
+void
+popfile ()
+{
+ FSTACK *tos = filestack;
+
+ if (!tos)
+ abort (); /* My fault. I wonder what I did? */
+
+ if (macro_expansion_output_stream)
+ {
+ maybe_write_itext (input_text, input_text_offset);
+ forget_itext (input_text);
+ }
+
+ /* Pop the stack. */
+ filestack = filestack->next;
+
+ /* Make sure that commands with braces have been satisfied. */
+ if (!executing_string && !me_executing_string)
+ discard_braces ();
+
+ /* Get the top of the stack into the globals. */
+ input_filename = tos->filename;
+ input_text = tos->text;
+ input_text_length = tos->size;
+ input_text_offset = tos->offset;
+ line_number = tos->line_number;
+ free (tos);
+
+ /* Go back to the (now) current node. */
+ pop_node_filename ();
+}
+
+/* Flush all open files on the file stack. */
+void
+flush_file_stack ()
+{
+ while (filestack)
+ {
+ char *fname = input_filename;
+ char *text = input_text;
+ popfile ();
+ free (fname);
+ free (text);
+ }
+}
+
+/* Return the index of the first character in the filename
+ which is past all the leading directory characters. */
+static int
+skip_directory_part (filename)
+ char *filename;
+{
+ int i = strlen (filename) - 1;
+
+ while (i && !IS_SLASH (filename[i]))
+ i--;
+ if (IS_SLASH (filename[i]))
+ i++;
+ else if (filename[i] && HAVE_DRIVE (filename))
+ i = 2;
+
+ return i;
+}
+
+char *
+filename_non_directory (name)
+ char *name;
+{
+ return xstrdup (name + skip_directory_part (name));
+}
+
+/* Return just the simple part of the filename; i.e. the
+ filename without the path information, or extensions.
+ This conses up a new string. */
+char *
+filename_part (filename)
+ char *filename;
+{
+ char *basename = filename_non_directory (filename);
+
+#ifdef REMOVE_OUTPUT_EXTENSIONS
+ /* See if there is an extension to remove. If so, remove it. */
+ {
+ char *temp;
+
+ temp = strrchr (basename, '.');
+ if (temp)
+ *temp = 0;
+ }
+#endif /* REMOVE_OUTPUT_EXTENSIONS */
+ return basename;
+}
+
+/* Return the pathname part of filename. This can be NULL. */
+char *
+pathname_part (filename)
+ char *filename;
+{
+ char *expand_filename ();
+ char *result = NULL;
+ int i;
+
+ filename = expand_filename (filename, "");
+
+ i = skip_directory_part (filename);
+ if (i)
+ {
+ result = xmalloc (1 + i);
+ strncpy (result, filename, i);
+ result[i] = 0;
+ }
+ free (filename);
+ return result;
+}
+
+/* Return the expansion of FILENAME. */
+char *
+expand_filename (filename, input_name)
+ char *filename, *input_name;
+{
+ int i;
+ char *full_pathname ();
+
+ if (filename)
+ {
+ filename = full_pathname (filename);
+ if (IS_ABSOLUTE (filename)
+ || (*filename == '.' &&
+ (IS_SLASH (filename[1]) ||
+ (filename[1] == '.' && IS_SLASH (filename[2])))))
+ return filename;
+ }
+ else
+ {
+ filename = filename_non_directory (input_name);
+
+ if (!*filename)
+ {
+ free (filename);
+ filename = xstrdup ("noname.texi");
+ }
+
+ for (i = strlen (filename) - 1; i; i--)
+ if (filename[i] == '.')
+ break;
+
+ if (!i)
+ i = strlen (filename);
+
+ if (i + 6 > (strlen (filename)))
+ filename = xrealloc (filename, i + 6);
+ strcpy (filename + i, html ? ".html" : ".info");
+ return filename;
+ }
+
+ if (IS_ABSOLUTE (input_name))
+ {
+ /* Make it so that relative names work. */
+ char *result;
+
+ i = strlen (input_name) - 1;
+
+ result = xmalloc (1 + strlen (input_name) + strlen (filename));
+ strcpy (result, input_name);
+
+ while (!IS_SLASH (result[i]) && i)
+ i--;
+ if (IS_SLASH (result[i]))
+ i++;
+
+ strcpy (&result[i], filename);
+ free (filename);
+ return result;
+ }
+ return filename;
+}
+
+/* Return the full path to FILENAME. */
+char *
+full_pathname (filename)
+ char *filename;
+{
+ int initial_character;
+ char *result;
+
+ /* No filename given? */
+ if (!filename || !*filename)
+ return xstrdup ("");
+
+ /* Already absolute? */
+ if (IS_ABSOLUTE (filename) ||
+ (*filename == '.' &&
+ (IS_SLASH (filename[1]) ||
+ (filename[1] == '.' && IS_SLASH (filename[2])))))
+ return xstrdup (filename);
+
+ initial_character = *filename;
+ if (initial_character != '~')
+ {
+ char *localdir = xmalloc (1025);
+#ifdef HAVE_GETCWD
+ if (!getcwd (localdir, 1024))
+#else
+ if (!getwd (localdir))
+#endif
+ {
+ fprintf (stderr, _("%s: getwd: %s, %s\n"),
+ progname, filename, localdir);
+ xexit (1);
+ }
+
+ strcat (localdir, "/");
+ strcat (localdir, filename);
+ result = xstrdup (localdir);
+ free (localdir);
+ }
+ else
+ { /* Does anybody know why WIN32 doesn't want to support $HOME?
+ If the reason is they don't have getpwnam, they should
+ only disable the else clause below. */
+#ifndef WIN32
+ if (IS_SLASH (filename[1]))
+ {
+ /* Return the concatenation of the environment variable HOME
+ and the rest of the string. */
+ char *temp_home;
+
+ temp_home = (char *) getenv ("HOME");
+ result = xmalloc (strlen (&filename[1])
+ + 1
+ + temp_home ? strlen (temp_home)
+ : 0);
+ *result = 0;
+
+ if (temp_home)
+ strcpy (result, temp_home);
+
+ strcat (result, &filename[1]);
+ }
+ else
+ {
+ struct passwd *user_entry;
+ int i, c;
+ char *username = xmalloc (257);
+
+ for (i = 1; (c = filename[i]); i++)
+ {
+ if (IS_SLASH (c))
+ break;
+ else
+ username[i - 1] = c;
+ }
+ if (c)
+ username[i - 1] = 0;
+
+ user_entry = getpwnam (username);
+
+ if (!user_entry)
+ return xstrdup (filename);
+
+ result = xmalloc (1 + strlen (user_entry->pw_dir)
+ + strlen (&filename[i]));
+ strcpy (result, user_entry->pw_dir);
+ strcat (result, &filename[i]);
+ }
+#endif /* not WIN32 */
+ }
+ return result;
+}
+
+char *
+output_name_from_input_name (name)
+ char *name;
+{
+ return expand_filename (NULL, name);
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/files.h b/gnu/usr.bin/texinfo/makeinfo/files.h
new file mode 100644
index 00000000000..6cae9e543e4
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/files.h
@@ -0,0 +1,45 @@
+/* files.h -- declarations for files.c.
+ $Id: files.h,v 1.1.1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1998 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef FILES_H
+#define FILES_H
+
+/* A stack of file information records. If a new file is read in with
+ "@input", we remember the old input file state on this stack. */
+typedef struct fstack
+{
+ struct fstack *next;
+ char *filename;
+ char *text;
+ int size;
+ int offset;
+ int line_number;
+} FSTACK;
+extern FSTACK *filestack;
+
+extern void pushfile (), popfile ();
+extern void flush_file_stack ();
+extern char *find_and_load ();
+extern char *output_name_from_input_name ();
+extern char *expand_filename ();
+extern char *filename_part ();
+extern char *pathname_part ();
+
+#endif /* !FILES_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/footnote.c b/gnu/usr.bin/texinfo/makeinfo/footnote.c
new file mode 100644
index 00000000000..79a52e6996b
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/footnote.c
@@ -0,0 +1,359 @@
+/* footnote.c -- footnotes for Texinfo.
+ $Id: footnote.c,v 1.1.1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "footnote.h"
+#include "macro.h"
+#include "makeinfo.h"
+
+/* Nonzero means that the footnote style for this document was set on
+ the command line, which overrides any other settings. */
+int footnote_style_preset = 0;
+
+/* The current footnote number in this node. Each time a new node is
+ started this is reset to 1. */
+int current_footnote_number = 1;
+
+/* Nonzero means we automatically number footnotes with no specified marker. */
+int number_footnotes = 1;
+
+/* Nonzero means we are currently outputting footnotes. */
+int already_outputting_pending_notes = 0;
+
+
+/* Footnotes can be handled in one of two ways:
+
+ separate_node:
+ Make them look like followed references, with the reference
+ destinations in a makeinfo manufactured node or,
+ end_node:
+ Make them appear at the bottom of the node that they originally
+ appeared in. */
+
+#define separate_node 0
+#define end_node 1
+
+int footnote_style = end_node;
+int first_footnote_this_node = 1;
+int footnote_count = 0;
+
+/* Set the footnote style based on the style identifier in STRING. */
+int
+set_footnote_style (string)
+ char *string;
+{
+ if (strcasecmp (string, "separate") == 0)
+ footnote_style = separate_node;
+ else if (strcasecmp (string, "end") == 0)
+ footnote_style = end_node;
+ else
+ return -1;
+
+ return 0;
+}
+
+void
+cm_footnotestyle ()
+{
+ char *arg;
+
+ get_rest_of_line (1, &arg);
+
+ /* If set on command line, do not change the footnote style. */
+ if (!footnote_style_preset && set_footnote_style (arg) != 0)
+ line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
+
+ free (arg);
+}
+
+typedef struct fn
+{
+ struct fn *next;
+ char *marker;
+ char *note;
+ int number;
+} FN;
+
+FN *pending_notes = NULL;
+
+/* A method for remembering footnotes. Note that this list gets output
+ at the end of the current node. */
+void
+remember_note (marker, note)
+ char *marker, *note;
+{
+ FN *temp = xmalloc (sizeof (FN));
+
+ temp->marker = xstrdup (marker);
+ temp->note = xstrdup (note);
+ temp->next = pending_notes;
+ temp->number = current_footnote_number;
+ pending_notes = temp;
+ footnote_count++;
+}
+
+/* How to get rid of existing footnotes. */
+static void
+free_pending_notes ()
+{
+ FN *temp;
+
+ while ((temp = pending_notes))
+ {
+ free (temp->marker);
+ free (temp->note);
+ pending_notes = pending_notes->next;
+ free (temp);
+ }
+ first_footnote_this_node = 1;
+ footnote_count = 0;
+ current_footnote_number = 1; /* for html */
+}
+
+/* What to do when you see a @footnote construct. */
+
+ /* Handle a "footnote".
+ footnote *{this is a footnote}
+ where "*" is the (optional) marker character for this note. */
+void
+cm_footnote ()
+{
+ char *marker;
+ char *note;
+
+ get_until ("{", &marker);
+ canon_white (marker);
+
+ if (macro_expansion_output_stream && !executing_string)
+ append_to_expansion_output (input_text_offset + 1); /* include the { */
+
+ /* Read the argument in braces. */
+ if (curchar () != '{')
+ {
+ line_error (_("`%c%s' needs an argument `{...}', not just `%s'"),
+ COMMAND_PREFIX, command, marker);
+ free (marker);
+ return;
+ }
+ else
+ {
+ int len;
+ int braces = 1;
+ int loc = ++input_text_offset;
+
+ while (braces)
+ {
+ if (loc == input_text_length)
+ {
+ line_error (_("No closing brace for footnote `%s'"), marker);
+ return;
+ }
+
+ if (input_text[loc] == '{')
+ braces++;
+ else if (input_text[loc] == '}')
+ braces--;
+ else if (input_text[loc] == '\n')
+ line_number++;
+
+ loc++;
+ }
+
+ len = (loc - input_text_offset) - 1;
+ note = xmalloc (len + 1);
+ memcpy (note, &input_text[input_text_offset], len);
+ note[len] = 0;
+ input_text_offset = loc;
+ }
+
+ /* Must write the macro-expanded argument to the macro expansion
+ output stream. This is like the case in index_add_arg. */
+ if (macro_expansion_output_stream && !executing_string)
+ {
+ /* Calling me_execute_string on a lone } provokes an error, since
+ as far as the reader knows there is no matching {. We wrote
+ the { above in the call to append_to_expansion_output. */
+ me_execute_string_keep_state (note, "}");
+ }
+
+ if (!current_node || !*current_node)
+ {
+ line_error (_("Footnote defined without parent node"));
+ free (marker);
+ free (note);
+ return;
+ }
+
+ if (!*marker)
+ {
+ free (marker);
+
+ if (number_footnotes)
+ {
+ marker = xmalloc (10);
+ sprintf (marker, "%d", current_footnote_number);
+ }
+ else
+ marker = xstrdup ("*");
+ }
+
+ remember_note (marker, note);
+
+ /* fixme: html: footnote processing needs work; we currently ignore
+ the style requested; we could clash with a node name of the form
+ `fn-<n>', though that's unlikely. */
+ if (html)
+ add_word_args ("<a rel=footnote href=\"#fn-%d\"><sup>%s</sup></a>",
+ current_footnote_number, marker);
+ else
+ /* Your method should at least insert MARKER. */
+ switch (footnote_style)
+ {
+ case separate_node:
+ add_word_args ("(%s)", marker);
+ execute_string (" (*note %s-Footnote-%d::)",
+ current_node, current_footnote_number);
+ if (first_footnote_this_node)
+ {
+ char *temp_string, *expanded_ref;
+
+ temp_string = xmalloc (strlen (current_node)
+ + strlen ("-Footnotes") + 1);
+
+ strcpy (temp_string, current_node);
+ strcat (temp_string, "-Footnotes");
+ expanded_ref = expansion (temp_string, 0);
+ remember_node_reference (expanded_ref, line_number,
+ followed_reference);
+ free (temp_string);
+ free (expanded_ref);
+ first_footnote_this_node = 0;
+ }
+ break;
+
+ case end_node:
+ add_word_args ("(%s)", marker);
+ break;
+
+ default:
+ break;
+ }
+ current_footnote_number++;
+
+ free (marker);
+ free (note);
+}
+
+/* Output the footnotes. We are at the end of the current node. */
+void
+output_pending_notes ()
+{
+ FN *footnote = pending_notes;
+
+ if (!pending_notes)
+ return;
+
+ if (html)
+ { /* The type= attribute is used just in case some weirdo browser
+ out there doesn't use numbers by default. Since we rely on the
+ browser to produce the footnote numbers, we need to make sure
+ they ARE indeed numbers. Pre-HTML4 browsers seem to not care. */
+ add_word ("<hr><h4>");
+ add_word (_("Footnotes"));
+ add_word ("</h4>\n<ol type=\"1\">\n");
+ }
+ else
+ switch (footnote_style)
+ {
+ case separate_node:
+ {
+ char *old_current_node = current_node;
+ char *old_command = xstrdup (command);
+
+ already_outputting_pending_notes++;
+ execute_string ("%cnode %s-Footnotes,,,%s\n",
+ COMMAND_PREFIX, current_node, current_node);
+ already_outputting_pending_notes--;
+ current_node = old_current_node;
+ free (command);
+ command = old_command;
+ }
+ break;
+
+ case end_node:
+ close_paragraph ();
+ in_fixed_width_font++;
+ /* This string should be translated according to the
+ @documentlanguage, not the current LANG. We can't do that
+ yet, so leave it in English. */
+ execute_string ("---------- Footnotes ----------\n\n");
+ in_fixed_width_font--;
+ break;
+ }
+
+ /* Handle the footnotes in reverse order. */
+ {
+ FN **array = xmalloc ((footnote_count + 1) * sizeof (FN *));
+ array[footnote_count] = NULL;
+
+ while (--footnote_count > -1)
+ {
+ array[footnote_count] = footnote;
+ footnote = footnote->next;
+ }
+
+ filling_enabled = 1;
+ indented_fill = 1;
+
+ while ((footnote = array[++footnote_count]))
+ {
+ if (html)
+ {
+ /* Make the text of every footnote begin a separate paragraph. */
+ add_word_args ("<li><a name=\"fn-%d\"></a>\n<p>",
+ footnote->number);
+ execute_string ("%s", footnote->note);
+ add_word ("</p>\n");
+ }
+ else
+ {
+ char *old_current_node = current_node;
+ char *old_command = xstrdup (command);
+
+ already_outputting_pending_notes++;
+ execute_string ("%canchor{%s-Footnote-%d}(%s) %s",
+ COMMAND_PREFIX, current_node, footnote->number,
+ footnote->marker, footnote->note);
+ already_outputting_pending_notes--;
+ current_node = old_current_node;
+ free (command);
+ command = old_command;
+ }
+
+ close_paragraph ();
+ }
+
+ if (html)
+ add_word ("</ol><hr>");
+ close_paragraph ();
+ free (array);
+ }
+
+ free_pending_notes ();
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/footnote.h b/gnu/usr.bin/texinfo/makeinfo/footnote.h
new file mode 100644
index 00000000000..b5edb509ade
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/footnote.h
@@ -0,0 +1,37 @@
+/* footnote.h -- declarations for footnote.c.
+ $Id: footnote.h,v 1.1.1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1998 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef FOOTNOTE_H
+#define FOOTNOTE_H
+
+extern int footnote_style_preset;
+extern int current_footnote_number;
+extern int number_footnotes;
+extern int already_outputting_pending_notes;
+
+/* The Texinfo @commands. */
+extern void cm_footnote ();
+extern void cm_footnotestyle ();
+
+extern int set_footnote_style (); /* called for -s option */
+
+extern void output_pending_notes (); /* called for output */
+
+#endif /* !FOOTNOTE_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/html.c b/gnu/usr.bin/texinfo/makeinfo/html.c
new file mode 100644
index 00000000000..931327a7ed7
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/html.c
@@ -0,0 +1,182 @@
+/* html.c -- html-related utilities.
+ $Id: html.c,v 1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "html.h"
+#include "lang.h"
+#include "makeinfo.h"
+#include "sectioning.h"
+
+/* See html.h. */
+int html_output_head_p = 0;
+
+void
+html_output_head ()
+{
+ char *html_title;
+
+ if (html_output_head_p)
+ return;
+ html_output_head_p = 1;
+
+ /* The <title> should not have markup. */
+ html_title = title ? text_expansion (title) : _("Untitled");
+
+ add_word_args ("<html lang=\"%s\"><head>\n<title>%s</title>\n",
+ language_table[language_code].abbrev, html_title);
+
+ add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
+ if (document_encoding)
+ add_word_args ("; charset=%s", document_encoding);
+ add_word ("\">\n");
+
+ add_word_args ("<meta name=description content=\"%s\">\n", html_title);
+ add_word_args ("<meta name=generator content=\"makeinfo %s\">\n", VERSION);
+ add_word ("<link href=\"http://texinfo.org/\" rel=generator-home>\n");
+ add_word ("</head><body>\n\n");
+}
+
+
+/* Escape HTML special characters in the string if necessary,
+ returning a pointer to a possibly newly-allocated one. */
+char *
+escape_string (string)
+ char * string;
+{
+ int i=0, newlen=0;
+ char * newstring;
+
+ do
+ {
+ /* Find how much to allocate. */
+ switch (string[i])
+ {
+ case '&':
+ newlen += 5; /* `&amp;' */
+ break;
+ case '<':
+ case '>':
+ newlen += 4; /* `&lt;', `&gt;' */
+ break;
+ default:
+ newlen++;
+ }
+ i++;
+ }
+ while (string[i]);
+
+ if (newlen == i) return string; /* Already OK. */
+
+ newstring = xmalloc (newlen + 2);
+ i = 0;
+ do
+ {
+ switch (string[i])
+ {
+ case '&':
+ strcpy (newstring, "&amp;");
+ newstring += 5;
+ break;
+ case '<':
+ strcpy (newstring, "&lt;");
+ newstring += 4;
+ break;
+ case '>':
+ strcpy (newstring, "&gt;");
+ newstring += 4;
+ break;
+ default:
+ newstring[0] = string[i];
+ newstring++;
+ }
+ }
+ while (string[i++]);
+ free (string);
+ return newstring - newlen -1;
+}
+
+/* Open or close TAG according to START_OR_END. */
+void
+insert_html_tag (start_or_end, tag)
+ int start_or_end;
+ char *tag;
+{
+ if (!paragraph_is_open && (start_or_end == START))
+ {
+ /* Need to compensate for the <p> we are about to insert, or
+ else cm_xxx functions that call us will get wrong text
+ between START and END. */
+ adjust_braces_following (output_paragraph_offset, 3);
+ add_word ("<p>");
+ }
+ add_char ('<');
+ if (start_or_end != START)
+ add_char ('/');
+ add_word (tag);
+ add_char ('>');
+}
+
+/* Output an HTML <link> to the filename for NODE, including the
+ other string as extra attributes. */
+void
+add_link (node, attributes)
+ char *node, *attributes;
+{
+ if (node)
+ {
+ add_word_args ("<link %s href=\"", attributes);
+ add_anchor_name (node, 1);
+ add_word ("\">\n");
+ }
+}
+
+/* Output NAME with characters escaped as appropriate for an anchor
+ name, i.e., escape URL special characters as %<n>. */
+void
+add_escaped_anchor_name (name)
+ char *name;
+{
+ for (; *name; name++)
+ {
+ if (*name == '&')
+ add_word ("&amp;");
+ else if (! URL_SAFE_CHAR (*name))
+ /* Cast so characters with the high bit set are treated as >128,
+ for example o-umlaut should be 246, not -10. */
+ add_word_args ("%%%x", (unsigned char) *name);
+ else
+ add_char (*name);
+ }
+}
+
+/* Insert the text for the name of a reference in an HTML anchor
+ appropriate for NODENAME. If HREF is nonzero, it will be
+ appropriate for a href= attribute, rather than name= i.e., including
+ the `#' if it's an internal reference. */
+void
+add_anchor_name (nodename, href)
+ char *nodename;
+ int href;
+{
+ if (href)
+ add_char ('#');
+
+ add_escaped_anchor_name (nodename);
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/html.h b/gnu/usr.bin/texinfo/makeinfo/html.h
new file mode 100644
index 00000000000..54305b82082
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/html.h
@@ -0,0 +1,44 @@
+/* html.h -- declarations for html-related utilities.
+ $Id: html.h,v 1.1.1.1 2000/02/09 01:25:11 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef HTML_H
+#define HTML_H
+
+/* Nonzero if we have output the <head>. */
+extern int html_output_head_p;
+
+/* Perform the <head> output. */
+extern void html_output_head ();
+
+/* Escape &<>. */
+extern char *escape_string (/* char * */);
+
+/* Open or close TAG according to START_OR_END. */
+extern void insert_html_tag (/* int start_or_end, char *tag */);
+
+/* Output HTML <link> to NODE, plus extra ATTRIBUTES. */
+extern void add_link (/* char *node, char *attributes */);
+
+/* Escape URL-special characters as %xy. */
+extern void add_escaped_anchor_name (/* char *name */);
+
+/* See html.c. */
+extern void add_anchor_name (/* nodename, href */);
+
+#endif /* !HTML_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/index.c b/gnu/usr.bin/texinfo/makeinfo/index.c
new file mode 100644
index 00000000000..72442efa1ef
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/index.c
@@ -0,0 +1,823 @@
+/* index.c -- indexing for Texinfo.
+ $Id: index.c,v 1.1.1.1 2000/02/09 01:25:16 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "index.h"
+#include "lang.h"
+#include "macro.h"
+#include "toc.h"
+
+/* An index element... */
+typedef struct index_elt
+{
+ struct index_elt *next;
+ char *entry; /* The index entry itself, after expansion. */
+ char *entry_text; /* The original, non-expanded entry text. */
+ char *node; /* The node from whence it came. */
+ int code; /* Nonzero means add `@code{...}' when
+ printing this element. */
+ int defining_line; /* Line number where this entry was written. */
+ char *defining_file; /* Source file for defining_line. */
+} INDEX_ELT;
+
+
+/* A list of short-names for each index.
+ There are two indices into the the_indices array.
+ * read_index is the index that points to the list of index
+ entries that we will find if we ask for the list of entries for
+ this name.
+ * write_index is the index that points to the list of index entries
+ that we will add new entries to.
+
+ Initially, read_index and write_index are the same, but the
+ @syncodeindex and @synindex commands can change the list we add
+ entries to.
+
+ For example, after the commands
+ @cindex foo
+ @defindex ii
+ @synindex cp ii
+ @cindex bar
+
+ the cp index will contain the entry `foo', and the new ii
+ index will contain the entry `bar'. This is consistent with the
+ way texinfo.tex handles the same situation.
+
+ In addition, for each index, it is remembered whether that index is
+ a code index or not. Code indices have @code{} inserted around the
+ first word when they are printed with printindex. */
+typedef struct
+{
+ char *name;
+ int read_index; /* index entries for `name' */
+ int write_index; /* store index entries here, @synindex can change it */
+ int code;
+} INDEX_ALIST;
+
+INDEX_ALIST **name_index_alist = NULL;
+
+/* An array of pointers. Each one is for a different index. The
+ "synindex" command changes which array slot is pointed to by a
+ given "index". */
+INDEX_ELT **the_indices = NULL;
+
+/* The number of defined indices. */
+int defined_indices = 0;
+
+/* Stuff for defining commands on the fly. */
+COMMAND **user_command_array = NULL;
+int user_command_array_len = 0;
+
+/* How to compare index entries for sorting. May be set to strcoll. */
+int (*index_compare_fn) () = strcasecmp;
+
+/* Find which element in the known list of indices has this name.
+ Returns -1 if NAME isn't found. */
+static int
+find_index_offset (name)
+ char *name;
+{
+ int i;
+ for (i = 0; i < defined_indices; i++)
+ if (name_index_alist[i] && STREQ (name, name_index_alist[i]->name))
+ return i;
+ return -1;
+}
+
+/* Return a pointer to the entry of (name . index) for this name.
+ Return NULL if the index doesn't exist. */
+INDEX_ALIST *
+find_index (name)
+ char *name;
+{
+ int offset = find_index_offset (name);
+ if (offset > -1)
+ return name_index_alist[offset];
+ else
+ return NULL;
+}
+
+/* User-defined commands, which happens only from user-defined indexes.
+ Used to initialize the builtin indices, too. */
+void
+define_user_command (name, proc, needs_braces_p)
+ char *name;
+ COMMAND_FUNCTION *proc;
+ int needs_braces_p;
+{
+ int slot = user_command_array_len;
+ user_command_array_len++;
+
+ if (!user_command_array)
+ user_command_array = xmalloc (1 * sizeof (COMMAND *));
+
+ user_command_array = xrealloc (user_command_array,
+ (1 + user_command_array_len) * sizeof (COMMAND *));
+
+ user_command_array[slot] = xmalloc (sizeof (COMMAND));
+ user_command_array[slot]->name = xstrdup (name);
+ user_command_array[slot]->proc = proc;
+ user_command_array[slot]->argument_in_braces = needs_braces_p;
+}
+
+/* Please release me, let me go... */
+static void
+free_index (index)
+ INDEX_ELT *index;
+{
+ INDEX_ELT *temp;
+
+ while ((temp = index))
+ {
+ free (temp->entry);
+ free (temp->entry_text);
+ /* Do not free the node, because we already freed the tag table,
+ which freed all the node names. */
+ /* free (temp->node); */
+ index = index->next;
+ free (temp);
+ }
+}
+
+/* Flush an index by name. This will delete the list of entries that
+ would be written by a @printindex command for this index. */
+static void
+undefindex (name)
+ char *name;
+{
+ int i;
+ int which = find_index_offset (name);
+
+ /* The index might have already been freed if this was the target of
+ an @synindex. */
+ if (which < 0 || !name_index_alist[which])
+ return;
+
+ i = name_index_alist[which]->read_index;
+
+ free_index (the_indices[i]);
+ the_indices[i] = NULL;
+
+ free (name_index_alist[which]->name);
+ free (name_index_alist[which]);
+ name_index_alist[which] = NULL;
+}
+
+/* Add the arguments to the current index command to the index NAME.
+ html fixxme generate specific html anchor */
+static void
+index_add_arg (name)
+ char *name;
+{
+ int which;
+ char *index_entry;
+ INDEX_ALIST *tem;
+
+ tem = find_index (name);
+
+ which = tem ? tem->write_index : -1;
+
+ if (macro_expansion_output_stream && !executing_string)
+ append_to_expansion_output (input_text_offset + 1);
+
+ get_rest_of_line (0, &index_entry);
+ ignore_blank_line ();
+
+ if (macro_expansion_output_stream && !executing_string)
+ {
+ char *index_line = xmalloc (strlen (index_entry) + 2);
+ sprintf (index_line, "%s\n", index_entry);
+ me_execute_string_keep_state (index_line, NULL);
+ free (index_line);
+ }
+
+ if (which < 0)
+ {
+ line_error (_("Unknown index `%s'"), name);
+ free (index_entry);
+ }
+ else
+ {
+ INDEX_ELT *new = xmalloc (sizeof (INDEX_ELT));
+ new->next = the_indices[which];
+ new->entry_text = index_entry;
+ new->entry = NULL;
+ new->node = current_node ? current_node : xstrdup ("");
+ new->code = tem->code;
+ new->defining_line = line_number - 1;
+ /* We need to make a copy since input_filename may point to
+ something that goes away, for example, inside a macro.
+ (see the findexerr test). */
+ new->defining_file = xstrdup (input_filename);
+ the_indices[which] = new;
+ }
+}
+
+/* The function which user defined index commands call. */
+static void
+gen_index ()
+{
+ char *name = xstrdup (command);
+ if (strlen (name) >= strlen ("index"))
+ name[strlen (name) - strlen ("index")] = 0;
+ index_add_arg (name);
+ free (name);
+}
+
+/* Define an index known as NAME. We assign the slot number.
+ If CODE is nonzero, make this a code index. */
+static void
+defindex (name, code)
+ char *name;
+ int code;
+{
+ int i, slot;
+
+ /* If it already exists, flush it. */
+ undefindex (name);
+
+ /* Try to find an empty slot. */
+ slot = -1;
+ for (i = 0; i < defined_indices; i++)
+ if (!name_index_alist[i])
+ {
+ slot = i;
+ break;
+ }
+
+ if (slot < 0)
+ { /* No such luck. Make space for another index. */
+ slot = defined_indices;
+ defined_indices++;
+
+ name_index_alist = (INDEX_ALIST **)
+ xrealloc (name_index_alist, (1 + defined_indices)
+ * sizeof (INDEX_ALIST *));
+ the_indices = (INDEX_ELT **)
+ xrealloc (the_indices, (1 + defined_indices) * sizeof (INDEX_ELT *));
+ }
+
+ /* We have a slot. Start assigning. */
+ name_index_alist[slot] = xmalloc (sizeof (INDEX_ALIST));
+ name_index_alist[slot]->name = xstrdup (name);
+ name_index_alist[slot]->read_index = slot;
+ name_index_alist[slot]->write_index = slot;
+ name_index_alist[slot]->code = code;
+
+ the_indices[slot] = NULL;
+}
+
+/* Define an index NAME, implicitly @code if CODE is nonzero. */
+static void
+top_defindex (name, code)
+ char *name;
+ int code;
+{
+ char *temp;
+
+ temp = xmalloc (1 + strlen (name) + strlen ("index"));
+ sprintf (temp, "%sindex", name);
+ define_user_command (temp, gen_index, 0);
+ defindex (name, code);
+ free (temp);
+}
+
+/* Set up predefined indices. */
+void
+init_indices ()
+{
+ int i;
+
+ /* Create the default data structures. */
+
+ /* Initialize data space. */
+ if (!the_indices)
+ {
+ the_indices = xmalloc ((1 + defined_indices) * sizeof (INDEX_ELT *));
+ the_indices[defined_indices] = NULL;
+
+ name_index_alist = xmalloc ((1 + defined_indices)
+ * sizeof (INDEX_ALIST *));
+ name_index_alist[defined_indices] = NULL;
+ }
+
+ /* If there were existing indices, get rid of them now. */
+ for (i = 0; i < defined_indices; i++)
+ {
+ undefindex (name_index_alist[i]->name);
+ if (name_index_alist[i])
+ { /* Suppose we're called with two input files, and the first
+ does a @synindex pg cp. Then, when we get here to start
+ the second file, the "pg" element won't get freed by
+ undefindex (because it's pointing to "cp"). So free it
+ here; otherwise, when we try to define the pg index again
+ just below, it will still point to cp. */
+ free (name_index_alist[i]->name);
+ free (name_index_alist[i]);
+ name_index_alist[i] = NULL;
+ }
+ }
+
+ /* Add the default indices. */
+ top_defindex ("cp", 0); /* cp is the only non-code index. */
+ top_defindex ("fn", 1);
+ top_defindex ("ky", 1);
+ top_defindex ("pg", 1);
+ top_defindex ("tp", 1);
+ top_defindex ("vr", 1);
+}
+
+/* Given an index name, return the offset in the_indices of this index,
+ or -1 if there is no such index. */
+int
+translate_index (name)
+ char *name;
+{
+ INDEX_ALIST *which = find_index (name);
+
+ if (which)
+ return which->read_index;
+ else
+ return -1;
+}
+
+/* Return the index list which belongs to NAME. */
+INDEX_ELT *
+index_list (name)
+ char *name;
+{
+ int which = translate_index (name);
+ if (which < 0)
+ return (INDEX_ELT *) -1;
+ else
+ return the_indices[which];
+}
+
+/* Define a new index command. Arg is name of index. */
+static void
+gen_defindex (code)
+ int code;
+{
+ char *name;
+ get_rest_of_line (0, &name);
+
+ if (find_index (name))
+ {
+ line_error (_("Index `%s' already exists"), name);
+ }
+ else
+ {
+ char *temp = xmalloc (strlen (name) + sizeof ("index"));
+ sprintf (temp, "%sindex", name);
+ define_user_command (temp, gen_index, 0);
+ defindex (name, code);
+ free (temp);
+ }
+
+ free (name);
+}
+
+void
+cm_defindex ()
+{
+ gen_defindex (0);
+}
+
+void
+cm_defcodeindex ()
+{
+ gen_defindex (1);
+}
+
+/* Expects 2 args, on the same line. Both are index abbreviations.
+ Make the first one be a synonym for the second one, i.e. make the
+ first one have the same index as the second one. */
+void
+cm_synindex ()
+{
+ int source, target;
+ char *abbrev1, *abbrev2;
+
+ skip_whitespace ();
+ get_until_in_line (0, " ", &abbrev1);
+ target = find_index_offset (abbrev1);
+ skip_whitespace ();
+ get_until_in_line (0, " ", &abbrev2);
+ source = find_index_offset (abbrev2);
+ if (source < 0 || target < 0)
+ {
+ line_error (_("Unknown index `%s' and/or `%s' in @synindex"),
+ abbrev1, abbrev2);
+ }
+ else
+ {
+ name_index_alist[target]->write_index
+ = name_index_alist[source]->write_index;
+ }
+
+ free (abbrev1);
+ free (abbrev2);
+}
+
+void
+cm_pindex () /* Pinhead index. */
+{
+ index_add_arg ("pg");
+}
+
+void
+cm_vindex () /* Variable index. */
+{
+ index_add_arg ("vr");
+}
+
+void
+cm_kindex () /* Key index. */
+{
+ index_add_arg ("ky");
+}
+
+void
+cm_cindex () /* Concept index. */
+{
+ index_add_arg ("cp");
+}
+
+void
+cm_findex () /* Function index. */
+{
+ index_add_arg ("fn");
+}
+
+void
+cm_tindex () /* Data Type index. */
+{
+ index_add_arg ("tp");
+}
+
+int
+index_element_compare (element1, element2)
+ INDEX_ELT **element1, **element2;
+{
+ return index_compare_fn ((*element1)->entry, (*element2)->entry);
+}
+
+/* Force all index entries to be unique. */
+void
+make_index_entries_unique (array, count)
+ INDEX_ELT **array;
+ int count;
+{
+ int i, j;
+ INDEX_ELT **copy;
+ int counter = 1;
+
+ copy = xmalloc ((1 + count) * sizeof (INDEX_ELT *));
+
+ for (i = 0, j = 0; i < count; i++)
+ {
+ if (i == (count - 1)
+ || array[i]->node != array[i + 1]->node
+ || !STREQ (array[i]->entry, array[i + 1]->entry))
+ copy[j++] = array[i];
+ else
+ {
+ free (array[i]->entry);
+ free (array[i]->entry_text);
+ free (array[i]);
+ }
+ }
+ copy[j] = NULL;
+
+ /* Now COPY contains only unique entries. Duplicated entries in the
+ original array have been freed. Replace the current array with
+ the copy, fixing the NEXT pointers. */
+ for (i = 0; copy[i]; i++)
+ {
+ copy[i]->next = copy[i + 1];
+
+ /* Fix entry names which are the same. They point to different nodes,
+ so we make the entry name unique. */
+ if (copy[i+1]
+ && STREQ (copy[i]->entry, copy[i + 1]->entry)
+ && !html)
+ {
+ char *new_entry_name;
+
+ new_entry_name = xmalloc (10 + strlen (copy[i]->entry));
+ sprintf (new_entry_name, "%s <%d>", copy[i]->entry, counter);
+ free (copy[i]->entry);
+ copy[i]->entry = new_entry_name;
+ counter++;
+ }
+ else
+ counter = 1;
+
+ array[i] = copy[i];
+ }
+ array[i] = NULL;
+
+ /* Free the storage used only by COPY. */
+ 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. */
+INDEX_ELT **
+sort_index (index)
+ INDEX_ELT *index;
+{
+ INDEX_ELT **array;
+ INDEX_ELT *temp = index;
+ int count = 0;
+ int save_line_number = line_number;
+ char *save_input_filename = input_filename;
+ int save_html = html;
+
+ /* Pretend we are in non-HTML mode, for the purpose of getting the
+ expanded index entry that lacks any markup and other HTML escape
+ characters which could produce a wrong sort order. */
+ /* fixme: html: this still causes some markup, such as non-ASCII
+ characters @AE{} etc., to sort incorrectly. */
+ html = 0;
+
+ while (temp)
+ {
+ count++;
+ temp = temp->next;
+ }
+
+ /* We have the length. Make an array. */
+
+ array = xmalloc ((count + 1) * sizeof (INDEX_ELT *));
+ count = 0;
+ temp = index;
+
+ while (temp)
+ {
+ array[count++] = temp;
+
+ /* 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;
+
+ /* 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;
+ }
+ array[count] = NULL; /* terminate the array. */
+ line_number = save_line_number;
+ input_filename = save_input_filename;
+ html = save_html;
+
+#ifdef HAVE_STRCOLL
+ /* This is not perfect. We should set (then restore) the locale to the
+ documentlanguage, so strcoll operates according to the document's
+ locale, not the user's. For now, I'm just going to assume that
+ those few new documents which use @documentlanguage will be
+ processed in the appropriate locale. In any case, don't use
+ strcoll in the C (aka POSIX) locale, that is the ASCII ordering. */
+ if (language_code != en)
+ {
+ char *lang_env = getenv ("LANG");
+ if (lang_env && !STREQ (lang_env, "C") && !STREQ (lang_env, "POSIX"))
+ index_compare_fn = strcoll;
+ }
+#endif /* HAVE_STRCOLL */
+
+ /* Sort the array. */
+ qsort (array, count, sizeof (INDEX_ELT *), index_element_compare);
+ make_index_entries_unique (array, count);
+ return array;
+}
+
+/* Nonzero means that we are in the middle of printing an index. */
+int printing_index = 0;
+
+/* Takes one arg, a short name of an index to print.
+ Outputs a menu of the sorted elements of the index. */
+void
+cm_printindex ()
+{
+ int item;
+ INDEX_ELT *index;
+ INDEX_ELT *last_index = 0;
+ INDEX_ELT **array;
+ char *index_name;
+ unsigned line_length;
+ char *line;
+ int saved_inhibit_paragraph_indentation = inhibit_paragraph_indentation;
+ int saved_filling_enabled = filling_enabled;
+ int saved_line_number = line_number;
+ char *saved_input_filename = input_filename;
+
+ close_paragraph ();
+ get_rest_of_line (0, &index_name);
+
+ index = index_list (index_name);
+ if (index == (INDEX_ELT *)-1)
+ {
+ line_error (_("Unknown index `%s' in @printindex"), index_name);
+ free (index_name);
+ return;
+ }
+
+ /* Do this before sorting, so execute_string in index_element_compare
+ will give the same results as when we actually print. */
+ printing_index = 1;
+ filling_enabled = 0;
+ inhibit_paragraph_indentation = 1;
+ array = sort_index (index);
+
+ close_paragraph ();
+ if (html)
+ add_word ("<ul compact>");
+ else if (!no_headers)
+ 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;
+
+ line_number = index->defining_line;
+ input_filename = index->defining_file;
+
+ if ((!index_node || !*index_node) && html)
+ index_node = toc_find_section_of_node (index_node);
+
+ if (!index_node || !*index_node)
+ {
+ line_error (_("Entry for index `%s' outside of any node"),
+ index_name);
+ if (html || !no_headers)
+ index_node = _("(outside of any node)");
+ }
+
+ if (html)
+ /* fixme: html: we should use specific index anchors pointing
+ to the actual location of the indexed position (but then we
+ have to find something to wrap the anchor around). */
+ {
+ if (last_index
+ && STREQ (last_index->entry_text, index->entry_text))
+ add_word (", "); /* Don't repeat the previous entry. */
+ else
+ {
+ /* In the HTML case, the expanded index entry is not
+ good for us, since it was expanded for non-HTML mode
+ inside sort_index. So we need to HTML-escape and
+ expand the original entry text here. */
+ char *escaped_entry = xstrdup (index->entry_text);
+ char *expanded_entry;
+
+ /* expansion() doesn't HTML-escape the argument, so need
+ to do it separately. */
+ escaped_entry = escape_string (escaped_entry);
+ expanded_entry = expansion (escaped_entry, index->code);
+ add_word_args ("\n<li>%s: ", expanded_entry);
+ free (escaped_entry);
+ free (expanded_entry);
+ }
+ add_word ("<a href=\"");
+ if (index->node && *index->node)
+ {
+ /* Make sure any non-macros in the node name are expanded. */
+ in_fixed_width_font++;
+ index_node = expansion (index_node, 0);
+ in_fixed_width_font--;
+ add_anchor_name (index_node, 1);
+ add_word_args ("\">%s</a>", index_node);
+ free (index_node);
+ }
+ else if (STREQ (index_node, _("(outside of any node)")))
+ {
+ add_anchor_name (index_node, 1);
+ add_word_args ("\">%s</a>", index_node);
+ }
+ else
+ /* If we use the section instead of the (missing) node, then
+ index_node already includes all we need except the #. */
+ add_word_args ("#%s</a>", index_node);
+ }
+ else
+ {
+ unsigned new_length = strlen (index->entry);
+
+ if (new_length < 50) /* minimum length used below */
+ new_length = 50;
+ new_length += strlen (index_node) + 7; /* * : .\n\0 */
+
+ if (new_length > line_length)
+ {
+ line_length = new_length;
+ line = xrealloc (line, line_length);
+ }
+ /* Print the entry, nicely formatted. We've already
+ expanded any commands in index->entry, including any
+ implicit @code. Thus, can't call execute_string, since
+ @@ has turned into @. */
+ if (!no_headers)
+ {
+ sprintf (line, "* %-37s ", index->entry);
+ line[2 + strlen (index->entry)] = ':';
+ insert_string (line);
+ /* Make sure any non-macros in the node name are expanded. */
+ in_fixed_width_font++;
+ execute_string ("%s.\n", index_node);
+ in_fixed_width_font--;
+ }
+ else
+ {
+ /* With --no-headers, the @node lines are gone, so
+ there's little sense in referring to them in the
+ index. Instead, output the number or name of the
+ section that corresponds to that node. */
+ char *section_name = toc_find_section_of_node (index_node);
+
+ sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry);
+ line[strlen (index->entry)] = ':';
+ insert_string (line);
+ if (section_name)
+ {
+ int idx = 0;
+ unsigned ref_len = strlen (section_name) + 30;
+
+ if (ref_len > line_length)
+ {
+ line_length = ref_len;
+ line = xrealloc (line, line_length);
+ }
+
+ if (number_sections)
+ {
+ while (section_name[idx]
+ && (isdigit (section_name[idx])
+ || (idx && section_name[idx] == '.')))
+ idx++;
+ }
+ if (idx)
+ sprintf (line, " See %.*s.\n", idx, section_name);
+ else
+ sprintf (line, "\n See ``%s''.\n", section_name);
+ insert_string (line);
+ }
+ else
+ {
+ insert_string (" "); /* force a blank */
+ execute_string ("See node %s.\n", index_node);
+ }
+ }
+ }
+
+ /* Prevent `output_paragraph' from growing to the size of the
+ whole index. */
+ flush_output ();
+ last_index = index;
+ }
+
+ free (line);
+ free (index_name);
+
+ 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>");
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/index.h b/gnu/usr.bin/texinfo/makeinfo/index.h
new file mode 100644
index 00000000000..0d155125310
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/index.h
@@ -0,0 +1,36 @@
+/* index.h -- declarations for index.c.
+ $Id: index.h,v 1.1.1.1 2000/02/09 01:25:16 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef INDEX_H
+#define INDEX_H
+
+#include "makeinfo.h"
+#include "cmds.h"
+
+/* User commands are only new indices. (Macros are handled separately.) */
+extern COMMAND **user_command_array;
+extern int user_command_array_len;
+
+/* Initialize all indices. */
+extern void init_indices ();
+
+/* Function to compare index entries for sorting. */
+extern int (*index_compare_fn) ();
+
+#endif /* !INDEX_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/insertion.c b/gnu/usr.bin/texinfo/makeinfo/insertion.c
new file mode 100644
index 00000000000..218b892ffa7
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/insertion.c
@@ -0,0 +1,1368 @@
+/* insertion.c -- insertions for Texinfo.
+ $Id: insertion.c,v 1.1 2000/02/09 01:25:19 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "defun.h"
+#include "insertion.h"
+#include "macro.h"
+#include "makeinfo.h"
+
+/* Must match list in insertion.h. */
+static char *insertion_type_names[] =
+{
+ "cartouche", "defcv", "deffn", "defivar", "defmac", "defmethod",
+ "defop", "defopt", "defspec", "deftp", "deftypefn", "deftypefun",
+ "deftypeivar", "deftypemethod", "deftypeop", "deftypevar",
+ "deftypevr", "defun", "defvar", "defvr", "detailmenu", "direntry",
+ "display", "enumerate", "example", "flushleft", "flushright",
+ "format", "ftable", "group", "ifclear", "ifhtml", "ifinfo",
+ "ifnothtml", "ifnotinfo", "ifnottex", "ifset", "iftex", "itemize",
+ "lisp", "menu", "multitable", "quotation", "rawhtml", "rawtex",
+ "smalldisplay", "smallexample", "smallformat", "smalllisp", "table",
+ "tex", "vtable", "bad_type"
+};
+
+/* All nested environments. */
+INSERTION_ELT *insertion_stack = NULL;
+
+/* How deeply we're nested. */
+int insertion_level = 0;
+
+/* Whether to examine menu lines. */
+int in_menu = 0;
+
+/* How to examine menu lines. */
+int in_detailmenu = 0;
+
+/* Set to 1 if we've processed (commentary) text in a @menu that
+ wasn't part of a menu item. */
+int had_menu_commentary;
+
+/* Set to 1 if <p> is written in normal context.
+ Used for menu and itemize. */
+int in_paragraph = 0;
+
+static const char dl_tag[] = "<dl>\n";
+
+void
+init_insertion_stack ()
+{
+ insertion_stack = NULL;
+}
+
+/* Return the type of the current insertion. */
+static enum insertion_type
+current_insertion_type ()
+{
+ return insertion_level ? insertion_stack->insertion : bad_type;
+}
+
+/* Return the string which is the function to wrap around items, or NULL
+ if we're not in an environment where @item is ok. */
+static char *
+current_item_function ()
+{
+ int done = 0;
+ INSERTION_ELT *elt = insertion_stack;
+
+ /* Skip down through the stack until we find an insertion with an
+ itemize function defined, i.e., skip conditionals, @cartouche, etc. */
+ while (!done && elt)
+ {
+ switch (elt->insertion)
+ {
+ /* This list should match the one in cm_item. */
+ case ifclear:
+ case ifhtml:
+ case ifinfo:
+ case ifnothtml:
+ case ifnotinfo:
+ case ifnottex:
+ case ifset:
+ case iftex:
+ case rawhtml:
+ case rawtex:
+ case tex:
+ case cartouche:
+ elt = elt->next;
+ break;
+
+ default:
+ done = 1;
+ }
+ }
+
+ /* item_function usually gets assigned the empty string. */
+ return done && (*elt->item_function) ? elt->item_function : NULL;
+}
+
+/* Parse the item marker function off the input. If result is just "@",
+ change it to "@ ", since "@" by itself is not a command. This makes
+ "@ ", "@\t", and "@\n" all the same, but their default meanings are
+ the same anyway, and let's not worry about supporting redefining them. */
+char *
+get_item_function ()
+{
+ char *item_function;
+ get_rest_of_line (0, &item_function);
+
+ /* 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. */
+ if (input_text_offset < input_text_length)
+ backup_input_pointer ();
+
+ if (STREQ (item_function, "@"))
+ {
+ free (item_function);
+ item_function = xstrdup ("@ ");
+ }
+
+ return item_function;
+}
+
+ /* Push the state of the current insertion on the stack. */
+void
+push_insertion (type, item_function)
+ enum insertion_type type;
+ char *item_function;
+{
+ INSERTION_ELT *new = xmalloc (sizeof (INSERTION_ELT));
+
+ new->item_function = item_function;
+ new->filling_enabled = filling_enabled;
+ new->indented_fill = indented_fill;
+ new->insertion = type;
+ new->line_number = line_number;
+ new->filename = xstrdup (input_filename);
+ new->inhibited = inhibit_paragraph_indentation;
+ new->in_fixed_width_font = in_fixed_width_font;
+ new->next = insertion_stack;
+ insertion_stack = new;
+ insertion_level++;
+}
+
+ /* Pop the value on top of the insertion stack into the
+ global variables. */
+void
+pop_insertion ()
+{
+ INSERTION_ELT *temp = insertion_stack;
+
+ if (temp == NULL)
+ return;
+
+ in_fixed_width_font = temp->in_fixed_width_font;
+ inhibit_paragraph_indentation = temp->inhibited;
+ filling_enabled = temp->filling_enabled;
+ indented_fill = temp->indented_fill;
+ free_and_clear (&(temp->item_function));
+ free_and_clear (&(temp->filename));
+ insertion_stack = insertion_stack->next;
+ free (temp);
+ insertion_level--;
+}
+
+ /* Return a pointer to the print name of this
+ enumerated type. */
+char *
+insertion_type_pname (type)
+ enum insertion_type type;
+{
+ if ((int) type < (int) bad_type)
+ return insertion_type_names[(int) type];
+ else
+ return _("Broken-Type in insertion_type_pname");
+}
+
+/* Return the insertion_type associated with NAME.
+ If the type is not one of the known ones, return BAD_TYPE. */
+enum insertion_type
+find_type_from_name (name)
+ char *name;
+{
+ int index = 0;
+ while (index < (int) bad_type)
+ {
+ if (STREQ (name, insertion_type_names[index]))
+ return (enum insertion_type) index;
+ if (index == rawhtml && STREQ (name, "html"))
+ return rawhtml;
+ if (index == rawtex && STREQ (name, "tex"))
+ return rawtex;
+ index++;
+ }
+ return bad_type;
+}
+
+int
+defun_insertion (type)
+ enum insertion_type type;
+{
+ return 0
+ || (type == defcv)
+ || (type == deffn)
+ || (type == defivar)
+ || (type == defmac)
+ || (type == defmethod)
+ || (type == defop)
+ || (type == defopt)
+ || (type == defspec)
+ || (type == deftp)
+ || (type == deftypefn)
+ || (type == deftypefun)
+ || (type == deftypeivar)
+ || (type == deftypemethod)
+ || (type == deftypeop)
+ || (type == deftypevar)
+ || (type == deftypevr)
+ || (type == defun)
+ || (type == defvar)
+ || (type == defvr)
+ ;
+}
+
+/* MAX_NS is the maximum nesting level for enumerations. I picked 100
+ which seemed reasonable. This doesn't control the number of items,
+ just the number of nested lists. */
+#define max_stack_depth 100
+#define ENUM_DIGITS 1
+#define ENUM_ALPHA 2
+typedef struct {
+ int enumtype;
+ int enumval;
+} DIGIT_ALPHA;
+
+DIGIT_ALPHA enumstack[max_stack_depth];
+int enumstack_offset = 0;
+int current_enumval = 1;
+int current_enumtype = ENUM_DIGITS;
+char *enumeration_arg = NULL;
+
+void
+start_enumerating (at, type)
+ int at, type;
+{
+ if ((enumstack_offset + 1) == max_stack_depth)
+ {
+ line_error (_("Enumeration stack overflow"));
+ return;
+ }
+ enumstack[enumstack_offset].enumtype = current_enumtype;
+ enumstack[enumstack_offset].enumval = current_enumval;
+ enumstack_offset++;
+ current_enumval = at;
+ current_enumtype = type;
+}
+
+void
+stop_enumerating ()
+{
+ --enumstack_offset;
+ if (enumstack_offset < 0)
+ enumstack_offset = 0;
+
+ current_enumval = enumstack[enumstack_offset].enumval;
+ current_enumtype = enumstack[enumstack_offset].enumtype;
+}
+
+/* Place a letter or digits into the output stream. */
+void
+enumerate_item ()
+{
+ char temp[10];
+
+ if (current_enumtype == ENUM_ALPHA)
+ {
+ if (current_enumval == ('z' + 1) || current_enumval == ('Z' + 1))
+ {
+ current_enumval = ((current_enumval - 1) == 'z' ? 'a' : 'A');
+ warning (_("lettering overflow, restarting at %c"), current_enumval);
+ }
+ sprintf (temp, "%c. ", current_enumval);
+ }
+ else
+ sprintf (temp, "%d. ", current_enumval);
+
+ indent (output_column += (current_indent - strlen (temp)));
+ add_word (temp);
+ current_enumval++;
+}
+
+static void
+enum_html ()
+{
+ char type;
+ int start;
+
+ if (isdigit (*enumeration_arg))
+ {
+ type = '1';
+ start = atoi (enumeration_arg);
+ }
+ else if (isupper (*enumeration_arg))
+ {
+ type = 'A';
+ start = *enumeration_arg - 'A' + 1;
+ }
+ else
+ {
+ type = 'a';
+ start = *enumeration_arg - 'a' + 1;
+ }
+
+ add_word_args ("<ol type=%c start=%d>\n", type, start);
+}
+
+/* Conditionally parse based on the current command name. */
+void
+command_name_condition ()
+{
+ char *discarder = xmalloc (8 + strlen (command));
+
+ sprintf (discarder, "\n%cend %s", COMMAND_PREFIX, command);
+ discard_until (discarder);
+ discard_until ("\n");
+
+ free (discarder);
+}
+
+/* This is where the work for all the "insertion" style
+ commands is done. A huge switch statement handles the
+ various setups, and generic code is on both sides. */
+void
+begin_insertion (type)
+ enum insertion_type type;
+{
+ int no_discard = 0;
+
+ if (defun_insertion (type))
+ {
+ push_insertion (type, xstrdup (""));
+ no_discard++;
+ }
+ else
+ push_insertion (type, get_item_function ());
+
+ switch (type)
+ {
+ case menu:
+ if (!no_headers)
+ close_paragraph ();
+
+ filling_enabled = no_indent = 0;
+ inhibit_paragraph_indentation = 1;
+
+ if (html)
+ {
+ had_menu_commentary = 1;
+ }
+ else if (!no_headers)
+ add_word ("* Menu:\n");
+
+ in_menu++;
+ in_fixed_width_font++;
+ no_discard++;
+ break;
+
+ case detailmenu:
+ if (!in_menu)
+ {
+ if (!no_headers)
+ close_paragraph ();
+
+ filling_enabled = no_indent = 0;
+ inhibit_paragraph_indentation = 1;
+
+ no_discard++;
+ }
+
+ in_fixed_width_font++;
+ in_detailmenu++;
+ break;
+
+ case direntry:
+ if (html)
+ command_name_condition ();
+ else
+ {
+ close_single_paragraph ();
+ filling_enabled = no_indent = 0;
+ inhibit_paragraph_indentation = 1;
+ insert_string ("START-INFO-DIR-ENTRY\n");
+ }
+ break;
+
+ case quotation:
+ /* @quotation does filling (@display doesn't). */
+ if (html)
+ add_word ("<blockquote>\n");
+ else
+ {
+ close_single_paragraph ();
+ last_char_was_newline = no_indent = 0;
+ indented_fill = filling_enabled = 1;
+ inhibit_paragraph_indentation = 1;
+ }
+ current_indent += default_indentation_increment;
+ break;
+
+ case display:
+ case smalldisplay:
+ case example:
+ case smallexample:
+ case lisp:
+ case smalllisp:
+ /* Like @display but without indentation. */
+ case smallformat:
+ case format:
+ close_single_paragraph ();
+ inhibit_paragraph_indentation = 1;
+ in_fixed_width_font++;
+ filling_enabled = 0;
+ last_char_was_newline = 0;
+
+ if (html)
+ /* Kludge alert: if <pre> is followed by a newline, IE3
+ renders an extra blank line before the pre-formatted block.
+ Other browsers seem to not mind one way or the other. */
+ add_word ("<pre>");
+
+ if (type != format && type != smallformat)
+ current_indent += default_indentation_increment;
+ break;
+
+ case multitable:
+ do_multitable ();
+ break;
+
+ case table:
+ case ftable:
+ case vtable:
+ case itemize:
+ close_single_paragraph ();
+ current_indent += default_indentation_increment;
+ filling_enabled = indented_fill = 1;
+#if defined (INDENT_PARAGRAPHS_IN_TABLE)
+ inhibit_paragraph_indentation = 0;
+#else
+ inhibit_paragraph_indentation = 1;
+#endif /* !INDENT_PARAGRAPHS_IN_TABLE */
+
+ /* Make things work for losers who forget the itemize syntax. */
+ if (type == itemize)
+ {
+ if (!(*insertion_stack->item_function))
+ {
+ free (insertion_stack->item_function);
+ insertion_stack->item_function = xstrdup ("@bullet");
+ }
+ }
+
+ if (!*insertion_stack->item_function)
+ {
+ line_error (_("%s requires an argument: the formatter for %citem"),
+ insertion_type_pname (type), COMMAND_PREFIX);
+ }
+
+ if (html)
+ {
+ if (type == itemize)
+ {
+ add_word ("<ul>\n");
+ in_paragraph = 0;
+ }
+ else
+ add_word (dl_tag);
+ }
+ break;
+
+ case enumerate:
+ close_single_paragraph ();
+ no_indent = 0;
+#if defined (INDENT_PARAGRAPHS_IN_TABLE)
+ inhibit_paragraph_indentation = 0;
+#else
+ inhibit_paragraph_indentation = 1;
+#endif /* !INDENT_PARAGRAPHS_IN_TABLE */
+
+ current_indent += default_indentation_increment;
+ filling_enabled = indented_fill = 1;
+
+ if (html)
+ enum_html ();
+
+ if (isdigit (*enumeration_arg))
+ start_enumerating (atoi (enumeration_arg), ENUM_DIGITS);
+ else
+ start_enumerating (*enumeration_arg, ENUM_ALPHA);
+ break;
+
+ /* @group does nothing special in makeinfo. */
+ case group:
+ /* Only close the paragraph if we are not inside of an
+ @example-like environment. */
+ if (!insertion_stack->next
+ || (insertion_stack->next->insertion != display
+ && insertion_stack->next->insertion != smalldisplay
+ && insertion_stack->next->insertion != example
+ && insertion_stack->next->insertion != smallexample
+ && insertion_stack->next->insertion != lisp
+ && insertion_stack->next->insertion != smalllisp
+ && insertion_stack->next->insertion != format
+ && insertion_stack->next->insertion != smallformat
+ && insertion_stack->next->insertion != flushleft
+ && insertion_stack->next->insertion != flushright))
+ close_single_paragraph ();
+ break;
+
+ /* Insertions that are no-ops in info, but do something in TeX. */
+ case cartouche:
+ case ifclear:
+ case ifhtml:
+ case ifinfo:
+ case ifnothtml:
+ case ifnotinfo:
+ case ifnottex:
+ case ifset:
+ case iftex:
+ case rawtex:
+ if (in_menu)
+ no_discard++;
+ break;
+
+ case rawhtml:
+ escape_html = 0;
+ break;
+
+ case defcv:
+ case deffn:
+ case defivar:
+ case defmac:
+ case defmethod:
+ case defop:
+ case defopt:
+ case defspec:
+ case deftp:
+ case deftypefn:
+ case deftypefun:
+ case deftypeivar:
+ case deftypemethod:
+ case deftypeop:
+ case deftypevar:
+ case deftypevr:
+ case defun:
+ case defvar:
+ case defvr:
+ inhibit_paragraph_indentation = 1;
+ filling_enabled = indented_fill = 1;
+ current_indent += default_indentation_increment;
+ no_indent = 0;
+ break;
+
+ case flushleft:
+ close_single_paragraph ();
+ inhibit_paragraph_indentation = 1;
+ filling_enabled = indented_fill = no_indent = 0;
+ break;
+
+ case flushright:
+ close_single_paragraph ();
+ filling_enabled = indented_fill = no_indent = 0;
+ inhibit_paragraph_indentation = 1;
+ force_flush_right++;
+ break;
+
+ default:
+ line_error ("begin_insertion internal error: type=%d", type);
+
+ }
+
+ if (!no_discard)
+ discard_until ("\n");
+}
+
+/* Try to end the insertion with the specified TYPE. With a value of
+ `bad_type', TYPE gets translated to match the value currently on top
+ of the stack. Otherwise, if TYPE doesn't match the top of the
+ insertion stack, give error. */
+void
+end_insertion (type)
+ enum insertion_type type;
+{
+ enum insertion_type temp_type;
+
+ if (!insertion_level)
+ return;
+
+ temp_type = current_insertion_type ();
+
+ if (type == bad_type)
+ type = temp_type;
+
+ if (type != temp_type)
+ {
+ line_error
+ (_("`@end' expected `%s', but saw `%s'"),
+ insertion_type_pname (temp_type), insertion_type_pname (type));
+ return;
+ }
+
+ pop_insertion ();
+
+ switch (type)
+ {
+ /* Insertions which have no effect on paragraph formatting. */
+ case ifclear:
+ case ifhtml:
+ case ifinfo:
+ case ifnothtml:
+ case ifnotinfo:
+ case ifnottex:
+ case ifset:
+ case iftex:
+ case rawtex:
+ break;
+
+ case rawhtml:
+ escape_html = 1;
+ break;
+
+ case direntry: /* Eaten if html. */
+ insert_string ("END-INFO-DIR-ENTRY\n\n");
+ close_insertion_paragraph ();
+ break;
+
+ case detailmenu:
+ in_detailmenu--; /* No longer hacking menus. */
+ if (!in_menu)
+ {
+ if (!no_headers)
+ close_insertion_paragraph ();
+ }
+ break;
+
+ case menu:
+ in_menu--; /* No longer hacking menus. */
+ if (html)
+ add_word ("</ul>\n");
+ else if (!no_headers)
+ close_insertion_paragraph ();
+ break;
+
+ case multitable:
+ end_multitable ();
+ break;
+
+ case enumerate:
+ stop_enumerating ();
+ close_insertion_paragraph ();
+ current_indent -= default_indentation_increment;
+ if (html)
+ add_word ("</ol>\n");
+ break;
+
+ case flushleft:
+ case group:
+ case cartouche:
+ close_insertion_paragraph ();
+ break;
+
+ case format:
+ case smallformat:
+ case display:
+ case smalldisplay:
+ case example:
+ case smallexample:
+ case lisp:
+ case smalllisp:
+ case quotation:
+ /* @format and @smallformat are the only fixed_width insertion
+ without a change in indentation. */
+ if (type != format && type != smallformat)
+ current_indent -= default_indentation_increment;
+
+ if (html)
+ add_word (type == quotation ? "</blockquote>\n" : "</pre>\n");
+
+ /* The ending of one of these insertions always marks the
+ start of a new paragraph. */
+ close_insertion_paragraph ();
+ break;
+
+ case table:
+ case ftable:
+ case vtable:
+ current_indent -= default_indentation_increment;
+ if (html)
+ add_word ("</dl>\n");
+ break;
+
+ case itemize:
+ current_indent -= default_indentation_increment;
+ if (html)
+ add_word ("</ul>\n");
+ close_insertion_paragraph ();
+ break;
+
+ case flushright:
+ force_flush_right--;
+ close_insertion_paragraph ();
+ break;
+
+ /* Handle the @defun insertions with this default clause. */
+ default:
+ {
+ enum insertion_type base_type;
+
+ if (type < defcv || type > defvr)
+ line_error ("end_insertion internal error: type=%d", type);
+
+ base_type = get_base_type (type);
+ switch (base_type)
+ {
+ case deffn:
+ case defvr:
+ case deftp:
+ case deftypefn:
+ case deftypevr:
+ case defcv:
+ case defop:
+ case deftypemethod:
+ case deftypeop:
+ case deftypeivar:
+ if (html)
+ /* close the tables which has been opened in defun.c */
+ add_word ("</TD></TR>\n</TABLE>\n");
+ break;
+ } /* switch (base_type)... */
+
+ current_indent -= default_indentation_increment;
+ close_insertion_paragraph ();
+ }
+ break;
+
+ }
+
+ if (current_indent < 0)
+ line_error ("end_insertion internal error: current indent=%d",
+ current_indent);
+}
+
+/* Insertions cannot cross certain boundaries, such as node beginnings. In
+ code that creates such boundaries, you should call `discard_insertions'
+ before doing anything else. It prints the errors for you, and cleans up
+ the insertion stack.
+
+ With nonzero SPECIALS_OK argument, allows unmatched
+ @if... conditionals, otherwise not. This is because conditionals can
+ cross node boundaries. Always happens with the @top node, for example. */
+void
+discard_insertions (specials_ok)
+ int specials_ok;
+{
+ int real_line_number = line_number;
+ while (insertion_stack)
+ {
+ if (specials_ok
+ && ((ifclear <= insertion_stack->insertion
+ && insertion_stack->insertion <= iftex)
+ || insertion_stack->insertion == rawhtml
+ || insertion_stack->insertion == rawtex))
+ break;
+ else
+ {
+ char *offender = insertion_type_pname (insertion_stack->insertion);
+ char *current_filename = input_filename;
+
+ input_filename = insertion_stack->filename;
+ line_number = insertion_stack->line_number;
+ line_error (_("No matching `%cend %s'"), COMMAND_PREFIX, offender);
+ input_filename = current_filename;
+ pop_insertion ();
+ }
+ }
+ line_number = real_line_number;
+}
+
+/* Insertion (environment) commands. */
+
+void
+cm_quotation ()
+{
+ begin_insertion (quotation);
+}
+
+void
+cm_example ()
+{
+ begin_insertion (example);
+}
+
+void
+cm_smallexample ()
+{
+ begin_insertion (smallexample);
+}
+
+void
+cm_lisp ()
+{
+ begin_insertion (lisp);
+}
+
+void
+cm_smalllisp ()
+{
+ begin_insertion (smalllisp);
+}
+
+/* @cartouche/@end cartouche draws box with rounded corners in
+ TeX output. Right now, just a no-op insertion. */
+void
+cm_cartouche ()
+{
+ begin_insertion (cartouche);
+}
+
+void
+cm_format ()
+{
+ begin_insertion (format);
+}
+
+void
+cm_smallformat ()
+{
+ begin_insertion (smallformat);
+}
+
+void
+cm_display ()
+{
+ begin_insertion (display);
+}
+
+void
+cm_smalldisplay ()
+{
+ begin_insertion (smalldisplay);
+}
+
+void
+cm_direntry ()
+{
+ if (no_headers || html)
+ command_name_condition ();
+ else
+ begin_insertion (direntry);
+}
+
+void
+cm_itemize ()
+{
+ begin_insertion (itemize);
+}
+
+/* Start an enumeration insertion of type TYPE. If the user supplied
+ no argument on the line, then use DEFAULT_STRING as the initial string. */
+static void
+do_enumeration (type, default_string)
+ int type;
+ char *default_string;
+{
+ get_until_in_line (0, ".", &enumeration_arg);
+ canon_white (enumeration_arg);
+
+ if (!*enumeration_arg)
+ {
+ free (enumeration_arg);
+ enumeration_arg = xstrdup (default_string);
+ }
+
+ if (!isdigit (*enumeration_arg) && !isletter (*enumeration_arg))
+ {
+ warning (_("%s requires letter or digit"), insertion_type_pname (type));
+
+ switch (type)
+ {
+ case enumerate:
+ default_string = "1";
+ break;
+ }
+ enumeration_arg = xstrdup (default_string);
+ }
+ begin_insertion (type);
+}
+
+void
+cm_enumerate ()
+{
+ do_enumeration (enumerate, "1");
+}
+
+void
+cm_table ()
+{
+ begin_insertion (table);
+}
+
+void
+cm_multitable ()
+{
+ begin_insertion (multitable); /* @@ */
+}
+
+void
+cm_ftable ()
+{
+ begin_insertion (ftable);
+}
+
+void
+cm_vtable ()
+{
+ begin_insertion (vtable);
+}
+
+void
+cm_group ()
+{
+ begin_insertion (group);
+}
+
+void
+cm_ifinfo ()
+{
+ if (process_info)
+ begin_insertion (ifinfo);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifnotinfo ()
+{
+ if (!process_info)
+ begin_insertion (ifnotinfo);
+ else
+ command_name_condition ();
+}
+
+
+/* Insert raw HTML (no escaping of `<' etc.). */
+void
+cm_html ()
+{
+ if (process_html)
+ begin_insertion (rawhtml);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifhtml ()
+{
+ if (process_html)
+ begin_insertion (ifhtml);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifnothtml ()
+{
+ if (!process_html)
+ begin_insertion (ifnothtml);
+ else
+ command_name_condition ();
+}
+
+
+void
+cm_tex ()
+{
+ if (process_tex)
+ begin_insertion (rawtex);
+ else
+ command_name_condition ();
+}
+
+void
+cm_iftex ()
+{
+ if (process_tex)
+ begin_insertion (iftex);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifnottex ()
+{
+ if (!process_tex)
+ begin_insertion (ifnottex);
+ else
+ command_name_condition ();
+}
+
+/* Begin an insertion where the lines are not filled or indented. */
+void
+cm_flushleft ()
+{
+ begin_insertion (flushleft);
+}
+
+/* Begin an insertion where the lines are not filled, and each line is
+ forced to the right-hand side of the page. */
+void
+cm_flushright ()
+{
+ begin_insertion (flushright);
+}
+
+void
+cm_menu ()
+{
+ if (current_node == NULL)
+ {
+ warning (_("@menu seen before first @node, creating `Top' node"));
+ warning (_("perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"));
+ /* Include @top command so we can construct the implicit node tree. */
+ execute_string ("@node top\n@top Top\n");
+ }
+ begin_insertion (menu);
+}
+
+void
+cm_detailmenu ()
+{
+ if (current_node == NULL)
+ { /* Problems anyway, @detailmenu should always be inside @menu. */
+ warning (_("@detailmenu seen before first node, creating `Top' node"));
+ execute_string ("@node top\n@top Top\n");
+ }
+ begin_insertion (detailmenu);
+}
+
+/* End existing insertion block. */
+void
+cm_end ()
+{
+ char *temp;
+ enum insertion_type type;
+
+ if (!insertion_level)
+ {
+ line_error (_("Unmatched `%c%s'"), COMMAND_PREFIX, command);
+ return;
+ }
+
+ get_rest_of_line (0, &temp);
+
+ if (temp[0] == 0)
+ line_error (_("`%c%s' needs something after it"), COMMAND_PREFIX, command);
+
+ type = find_type_from_name (temp);
+
+ if (type == bad_type)
+ {
+ line_error (_("Bad argument to `%s', `%s', using `%s'"),
+ command, temp, insertion_type_pname (current_insertion_type ()));
+ }
+ end_insertion (type);
+ free (temp);
+}
+
+/* @itemx, @item. */
+
+static int itemx_flag = 0;
+
+/* Return whether CMD takes a brace-delimited {arg}. */
+static int
+command_needs_braces (cmd)
+ char *cmd;
+{
+ int i;
+ for (i = 0; command_table[i].name; i++)
+ {
+ if (STREQ (command_table[i].name, cmd))
+ return command_table[i].argument_in_braces == BRACE_ARGS;
+ }
+
+ return 0; /* macro or alias */
+}
+
+
+void
+cm_item ()
+{
+ char *rest_of_line, *item_func;
+
+ /* Can only hack "@item" while inside of an insertion. */
+ if (insertion_level)
+ {
+ INSERTION_ELT *stack = insertion_stack;
+ int original_input_text_offset;
+
+ skip_whitespace ();
+ original_input_text_offset = input_text_offset;
+
+ get_rest_of_line (0, &rest_of_line);
+ item_func = current_item_function ();
+
+ /* Do the right thing depending on which insertion function is active. */
+ switch_top:
+ switch (stack->insertion)
+ {
+ case multitable:
+ multitable_item ();
+ /* Support text directly after the @item. */
+ if (*rest_of_line)
+ {
+ line_number--;
+ input_text_offset = original_input_text_offset;
+ }
+ break;
+
+ case ifclear:
+ case ifhtml:
+ case ifinfo:
+ case ifnothtml:
+ case ifnotinfo:
+ case ifnottex:
+ case ifset:
+ case iftex:
+ case rawhtml:
+ case rawtex:
+ case tex:
+ case cartouche:
+ stack = stack->next;
+ if (!stack)
+ goto no_insertion;
+ else
+ goto switch_top;
+ break;
+
+ case menu:
+ case quotation:
+ case example:
+ case smallexample:
+ case lisp:
+ case smalllisp:
+ case format:
+ case smallformat:
+ case display:
+ case smalldisplay:
+ case group:
+ line_error (_("@%s not meaningful inside `@%s' block"),
+ command,
+ insertion_type_pname (current_insertion_type ()));
+ break;
+
+ case itemize:
+ case enumerate:
+ if (itemx_flag)
+ {
+ line_error (_("@itemx not meaningful inside `%s' block"),
+ insertion_type_pname (current_insertion_type ()));
+ }
+ else
+ {
+ if (html)
+ {
+ if (in_paragraph)
+ {
+ add_word ("</p>");
+ in_paragraph = 0;
+ }
+ add_word ("<li>");
+ }
+ else
+ {
+ start_paragraph ();
+ kill_self_indent (-1);
+ filling_enabled = indented_fill = 1;
+
+ if (current_item_function ())
+ {
+ output_column = current_indent - 2;
+ indent (output_column);
+
+ /* The item marker can be given with or without
+ braces -- @bullet and @bullet{} are both ok.
+ Or it might be something that doesn't take
+ braces at all, such as "o" or "#" or "@ ".
+ Thus, only supply braces if the item marker is
+ a command, they haven't supplied braces
+ themselves, and we know it needs them. */
+ if (item_func && *item_func)
+ {
+ if (*item_func == COMMAND_PREFIX
+ && item_func[strlen (item_func) - 1] != '}'
+ && command_needs_braces (item_func + 1))
+ execute_string ("%s{}", item_func);
+ else
+ execute_string ("%s", item_func);
+ }
+ insert (' ');
+ output_column++;
+ }
+ else
+ enumerate_item ();
+
+ /* Special hack. This makes `close_paragraph' a no-op until
+ `start_paragraph' has been called. */
+ must_start_paragraph = 1;
+ }
+
+ /* Handle text directly after the @item. */
+ if (*rest_of_line)
+ {
+ line_number--;
+ input_text_offset = original_input_text_offset;
+ }
+ }
+ break;
+
+ case table:
+ case ftable:
+ case vtable:
+ if (html)
+ {
+ static int last_html_output_position = 0;
+
+ /* If nothing has been output since the last <dd>,
+ remove the empty <dd> element. Some browsers render
+ an extra empty line for <dd><dt>, which makes @itemx
+ conversion look ugly. */
+ if (last_html_output_position == output_position
+ && strncmp ((char *) output_paragraph, "<dd>",
+ output_paragraph_offset) == 0)
+ output_paragraph_offset = 0;
+
+ /* Force the browser to render one blank line before
+ each new @item in a table. But don't do that unless
+ this is the first <dt> after the <dl>, or if we are
+ converting @itemx.
+
+ Note that there are some browsers which ignore <br>
+ 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,
+ dl_tag, sizeof (dl_tag) - 1) != 0)
+ add_word ("<br>");
+
+ add_word ("<dt>");
+ if (item_func && *item_func)
+ execute_string ("%s{%s}", item_func, rest_of_line);
+ else
+ execute_string ("%s", rest_of_line);
+
+ if (current_insertion_type () == ftable)
+ execute_string ("%cfindex %s\n", COMMAND_PREFIX, rest_of_line);
+
+ if (current_insertion_type () == vtable)
+ execute_string ("%cvindex %s\n", COMMAND_PREFIX, rest_of_line);
+ /* Make sure output_position is updated, so we could
+ remember it. */
+ close_single_paragraph ();
+ last_html_output_position = output_position;
+ add_word ("<dd>");
+ }
+ else
+ {
+ /* We need this to determine if we have two @item's in a row
+ (see test just below). */
+ static int last_item_output_position = 0;
+
+ /* Get rid of extra characters. */
+ kill_self_indent (-1);
+
+ /* If we have one @item followed directly by another @item,
+ we need to insert a blank line. This is not true for
+ @itemx, though. */
+ if (!itemx_flag && last_item_output_position == output_position)
+ insert ('\n');
+
+ /* `close_paragraph' almost does what we want. The problem
+ is when paragraph_is_open, and last_char_was_newline, and
+ the last newline has been turned into a space, because
+ filling_enabled. I handle it here. */
+ if (last_char_was_newline && filling_enabled &&
+ paragraph_is_open)
+ insert ('\n');
+ close_paragraph ();
+
+#if defined (INDENT_PARAGRAPHS_IN_TABLE)
+ /* Indent on a new line, but back up one indentation level. */
+ {
+ int save = inhibit_paragraph_indentation;
+ inhibit_paragraph_indentation = 1;
+ /* At this point, inserting any non-whitespace character will
+ force the existing indentation to be output. */
+ add_char ('i');
+ inhibit_paragraph_indentation = save;
+ }
+#else /* !INDENT_PARAGRAPHS_IN_TABLE */
+ add_char ('i');
+#endif /* !INDENT_PARAGRAPHS_IN_TABLE */
+
+ output_paragraph_offset--;
+ kill_self_indent (default_indentation_increment + 1);
+
+ /* Add item's argument to the line. */
+ filling_enabled = 0;
+ if (item_func && *item_func)
+ execute_string ("%s{%s}", item_func, rest_of_line);
+ else
+ execute_string ("%s", rest_of_line);
+
+ if (current_insertion_type () == ftable)
+ execute_string ("%cfindex %s\n", COMMAND_PREFIX, rest_of_line);
+ else if (current_insertion_type () == vtable)
+ execute_string ("%cvindex %s\n", COMMAND_PREFIX, rest_of_line);
+
+ /* Start a new line, and let start_paragraph ()
+ do the indenting of it for you. */
+ close_single_paragraph ();
+ indented_fill = filling_enabled = 1;
+ last_item_output_position = output_position;
+ }
+ }
+ free (rest_of_line);
+ }
+ else
+ {
+ no_insertion:
+ line_error (_("%c%s found outside of an insertion block"),
+ COMMAND_PREFIX, command);
+ }
+}
+
+void
+cm_itemx ()
+{
+ itemx_flag++;
+ cm_item ();
+ itemx_flag--;
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/insertion.h b/gnu/usr.bin/texinfo/makeinfo/insertion.h
new file mode 100644
index 00000000000..a926e71c839
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/insertion.h
@@ -0,0 +1,61 @@
+/* insertion.h -- declarations for insertion.c.
+ $Id: insertion.h,v 1.1.1.1 2000/02/09 01:25:20 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef INSERTION_H
+#define INSERTION_H
+
+/* Must match list in insertion.c. */
+enum insertion_type
+{
+ cartouche, defcv, deffn, defivar, defmac, defmethod, defop, defopt,
+ defspec, deftp, deftypefn, deftypefun, deftypeivar, deftypemethod,
+ deftypeop, deftypevar, deftypevr, defun, defvar, defvr, detailmenu,
+ direntry, display, enumerate, example, flushleft, flushright, format,
+ ftable, group, ifclear, ifhtml, ifinfo, ifnothtml, ifnotinfo,
+ ifnottex, ifset, iftex, itemize, lisp, menu, multitable, quotation,
+ rawhtml, rawtex, smalldisplay, smallexample, smallformat, smalllisp,
+ table, tex, vtable, bad_type
+};
+
+typedef struct istack_elt
+{
+ struct istack_elt *next;
+ char *item_function;
+ char *filename;
+ int line_number;
+ int filling_enabled;
+ int indented_fill;
+ enum insertion_type insertion;
+ int inhibited;
+ int in_fixed_width_font;
+} INSERTION_ELT;
+
+
+extern int insertion_level;
+extern INSERTION_ELT *insertion_stack;
+extern int in_menu;
+extern int in_detailmenu;
+extern int had_menu_commentary;
+extern int in_paragraph;
+
+extern void command_name_condition ();
+extern void cm_ifnothtml (), cm_ifhtml(), cm_html ();
+extern void cm_ifinfo (), cm_ifnotinfo ();
+extern void cm_ifnottex (), cm_iftex (), cm_tex ();
+#endif /* !INSERTION_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/lang.c b/gnu/usr.bin/texinfo/makeinfo/lang.c
new file mode 100644
index 00000000000..44c84262669
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/lang.c
@@ -0,0 +1,415 @@
+/* lang.c -- language depend behaviour (startpoint)
+ $Id: lang.c,v 1.1.1.1 2000/02/09 01:25:20 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#include "system.h"
+#include "cmds.h"
+#include "lang.h"
+#include "makeinfo.h"
+
+/* Current document encoding. */
+char *document_encoding = NULL;
+
+/* Current language code; default is English. */
+language_code_type language_code = en;
+
+language_struct language_table[] = {
+ { aa, "aa", "Afar" },
+ { ab, "ab", "Abkhazian" },
+ { af, "af", "Afrikaans" },
+ { am, "am", "Amharic" },
+ { ar, "ar", "Arabic" },
+ { as, "as", "Assamese" },
+ { ay, "ay", "Aymara" },
+ { az, "az", "Azerbaijani" },
+ { ba, "ba", "Bashkir" },
+ { be, "be", "Byelorussian" },
+ { bg, "bg", "Bulgarian" },
+ { bh, "bh", "Bihari" },
+ { bi, "bi", "Bislama" },
+ { bn, "bn", "Bengali; Bangla" },
+ { bo, "bo", "Tibetan" },
+ { br, "br", "Breton" },
+ { ca, "ca", "Catalan" },
+ { co, "co", "Corsican" },
+ { cs, "cs", "Czech" },
+ { cy, "cy", "Welsh" },
+ { da, "da", "Danish" },
+ { de, "de", "German" },
+ { dz, "dz", "Bhutani" },
+ { el, "el", "Greek" },
+ { en, "en", "English" },
+ { eo, "eo", "Esperanto" },
+ { es, "es", "Spanish" },
+ { et, "et", "Estonian" },
+ { eu, "eu", "Basque" },
+ { fa, "fa", "Persian" },
+ { fi, "fi", "Finnish" },
+ { fj, "fj", "Fiji" },
+ { fo, "fo", "Faroese" },
+ { fr, "fr", "French" },
+ { fy, "fy", "Frisian" },
+ { ga, "ga", "Irish" },
+ { gd, "gd", "Scots Gaelic" },
+ { gl, "gl", "Galician" },
+ { gn, "gn", "Guarani" },
+ { gu, "gu", "Gujarati" },
+ { ha, "ha", "Hausa" },
+ { he, "he", "Hebrew" } /* (formerly iw) */,
+ { hi, "hi", "Hindi" },
+ { hr, "hr", "Croatian" },
+ { hu, "hu", "Hungarian" },
+ { hy, "hy", "Armenian" },
+ { ia, "ia", "Interlingua" },
+ { id, "id", "Indonesian" } /* (formerly in) */,
+ { ie, "ie", "Interlingue" },
+ { ik, "ik", "Inupiak" },
+ { is, "is", "Icelandic" },
+ { it, "it", "Italian" },
+ { iu, "iu", "Inuktitut" },
+ { ja, "ja", "Japanese" },
+ { jw, "jw", "Javanese" },
+ { ka, "ka", "Georgian" },
+ { kk, "kk", "Kazakh" },
+ { kl, "kl", "Greenlandic" },
+ { km, "km", "Cambodian" },
+ { kn, "kn", "Kannada" },
+ { ko, "ko", "Korean" },
+ { ks, "ks", "Kashmiri" },
+ { ku, "ku", "Kurdish" },
+ { ky, "ky", "Kirghiz" },
+ { la, "la", "Latin" },
+ { ln, "ln", "Lingala" },
+ { lo, "lo", "Laothian" },
+ { lt, "lt", "Lithuanian" },
+ { lv, "lv", "Latvian, Lettish" },
+ { mg, "mg", "Malagasy" },
+ { mi, "mi", "Maori" },
+ { mk, "mk", "Macedonian" },
+ { ml, "ml", "Malayalam" },
+ { mn, "mn", "Mongolian" },
+ { mo, "mo", "Moldavian" },
+ { mr, "mr", "Marathi" },
+ { ms, "ms", "Malay" },
+ { mt, "mt", "Maltese" },
+ { my, "my", "Burmese" },
+ { na, "na", "Nauru" },
+ { ne, "ne", "Nepali" },
+ { nl, "nl", "Dutch" },
+ { no, "no", "Norwegian" },
+ { oc, "oc", "Occitan" },
+ { om, "om", "(Afan) Oromo" },
+ { or, "or", "Oriya" },
+ { pa, "pa", "Punjabi" },
+ { pl, "pl", "Polish" },
+ { ps, "ps", "Pashto, Pushto" },
+ { pt, "pt", "Portuguese" },
+ { qu, "qu", "Quechua" },
+ { rm, "rm", "Rhaeto-Romance" },
+ { rn, "rn", "Kirundi" },
+ { ro, "ro", "Romanian" },
+ { ru, "ru", "Russian" },
+ { rw, "rw", "Kinyarwanda" },
+ { sa, "sa", "Sanskrit" },
+ { sd, "sd", "Sindhi" },
+ { sg, "sg", "Sangro" },
+ { sh, "sh", "Serbo-Croatian" },
+ { si, "si", "Sinhalese" },
+ { sk, "sk", "Slovak" },
+ { sl, "sl", "Slovenian" },
+ { sm, "sm", "Samoan" },
+ { sn, "sn", "Shona" },
+ { so, "so", "Somali" },
+ { sq, "sq", "Albanian" },
+ { sr, "sr", "Serbian" },
+ { ss, "ss", "Siswati" },
+ { st, "st", "Sesotho" },
+ { su, "su", "Sundanese" },
+ { sv, "sv", "Swedish" },
+ { sw, "sw", "Swahili" },
+ { ta, "ta", "Tamil" },
+ { te, "te", "Telugu" },
+ { tg, "tg", "Tajik" },
+ { th, "th", "Thai" },
+ { ti, "ti", "Tigrinya" },
+ { tk, "tk", "Turkmen" },
+ { tl, "tl", "Tagalog" },
+ { tn, "tn", "Setswana" },
+ { to, "to", "Tonga" },
+ { tr, "tr", "Turkish" },
+ { ts, "ts", "Tsonga" },
+ { tt, "tt", "Tatar" },
+ { tw, "tw", "Twi" },
+ { ug, "ug", "Uighur" },
+ { uk, "uk", "Ukrainian" },
+ { ur, "ur", "Urdu" },
+ { uz, "uz", "Uzbek" },
+ { vi, "vi", "Vietnamese" },
+ { vo, "vo", "Volapuk" },
+ { wo, "wo", "Wolof" },
+ { xh, "xh", "Xhosa" },
+ { yi, "yi", "Yiddish" } /* (formerly ji) */,
+ { yo, "yo", "Yoruba" },
+ { za, "za", "Zhuang" },
+ { zh, "zh", "Chinese" },
+ { zu, "zu", "Zulu" },
+ { last_language_code, NULL, NULL }
+};
+
+/* @documentlanguage. Maybe we'll do something useful with this in the
+ future. For now, we just recognize it. */
+void
+cm_documentlanguage ()
+{
+ language_code_type c;
+ char *lang_arg;
+
+ /* Read the line with the language code on it. */
+ get_rest_of_line (1, &lang_arg);
+
+ /* Linear search is fine these days. */
+ for (c = aa; c != last_language_code; c++)
+ {
+ if (strcmp (lang_arg, language_table[c].abbrev) == 0)
+ { /* Set current language code. */
+ language_code = c;
+ break;
+ }
+ }
+
+ /* If we didn't find this code, complain. */
+ if (c == last_language_code)
+ warning (_("%s is not a valid ISO 639 language code"), lang_arg);
+
+ free (lang_arg);
+}
+
+
+
+/* @documentencoding. Set global. */
+void
+cm_documentencoding ()
+{
+ get_rest_of_line (1, &document_encoding);
+}
+
+
+
+/* Accent commands that take explicit arguments and don't have any
+ special HTML support. */
+
+void
+cm_accent (arg)
+ int arg;
+{
+ if (arg == START)
+ {
+ /* Must come first to avoid ambiguity with overdot. */
+ if (strcmp (command, "udotaccent") == 0) /* underdot */
+ add_char ('.');
+ }
+ else if (arg == END)
+ {
+ if (strcmp (command, "=") == 0) /* macron */
+ add_word (html ? "&macr;" : "=");
+ else if (strcmp (command, "H") == 0) /* Hungarian umlaut */
+ add_word ("''");
+ else if (strcmp (command, "dotaccent") == 0) /* overdot */
+ add_meta_char ('.');
+ else if (strcmp (command, "ringaccent") == 0) /* ring */
+ add_char ('*');
+ else if (strcmp (command, "tieaccent") == 0) /* long tie */
+ add_char ('[');
+ else if (strcmp (command, "u") == 0) /* breve */
+ add_char ('(');
+ else if (strcmp (command, "ubaraccent") == 0) /* underbar */
+ add_char ('_');
+ else if (strcmp (command, "v") == 0) /* hacek/check */
+ add_word (html ? "&lt;" : "<");
+ }
+}
+
+/* Common routine for the accent characters that have support in HTML.
+ If the character being accented is in the HTML_SUPPORTED set, then
+ produce &CHTML_SOLO;, for example, &Auml; for an A-umlaut. If not in
+ HTML_SUPPORTED, just produce &HTML_SOLO;X for the best we can do with
+ at an X-umlaut. Finally, if not producing HTML, just use SINGLE, a
+ character such as " which is the best plain text representation we
+ can manage. If HTML_SOLO_STANDALONE is zero the given HTML_SOLO
+ does not exist as valid standalone character in HTML. */
+
+static void
+cm_accent_generic (arg, start, end, html_supported, single,
+ html_solo_standalone, html_solo)
+ int arg, start, end;
+ char *html_supported;
+ int single;
+ int html_solo_standalone;
+ char *html_solo;
+{
+ if (html)
+ {
+ static int valid_html_accent;
+
+ if (arg == START)
+ { /* If HTML has good support for this character, use it. */
+ if (strchr (html_supported, curchar ()))
+ { /* Yes; start with an ampersand. The character itself
+ will be added later in read_command (makeinfo.c). */
+ add_char ('&');
+ valid_html_accent = 1;
+ }
+ else
+ { /* No special HTML support, so produce standalone char. */
+ valid_html_accent = 0;
+ if (html_solo_standalone)
+ {
+ add_char ('&');
+ add_word (html_solo);
+ add_char (';');
+ }
+ else
+ /* If the html_solo does not exist as standalone character
+ (namely &circ; &grave; &tilde;), then we use
+ the single character version instead. */
+ add_char (single);
+ }
+ }
+ else if (arg == END)
+ { /* Only if we saw a valid_html_accent can we use the full
+ HTML accent (umlaut, grave ...). */
+ if (valid_html_accent)
+ {
+ add_word (html_solo);
+ add_char (';');
+ }
+ }
+ }
+ else if (arg == END)
+ { /* Not producing HTML, so just use the normal character. */
+ add_char (single);
+ }
+}
+
+void
+cm_accent_umlaut (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "aouAOUEeIiy", '"', 1, "uml");
+}
+
+void
+cm_accent_acute (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "AEIOUYaeiouy", '\'', 1, "acute");
+}
+
+void
+cm_accent_cedilla (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "Cc", ',', 1, "cedil");
+}
+
+void
+cm_accent_hat (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "AEIOUaeiou", '^', 0, "circ");
+}
+
+void
+cm_accent_grave (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "AEIOUaeiou", '`', 0, "grave");
+}
+
+void
+cm_accent_tilde (arg, start, end)
+ int arg, start, end;
+{
+ cm_accent_generic (arg, start, end, "AOano", '~', 0, "tilde");
+}
+
+
+
+/* Non-English letters/characters that don't insert themselves. */
+void
+cm_special_char (arg)
+{
+ if (arg == START)
+ {
+ if ((*command == 'L' || *command == 'l'
+ || *command == 'O' || *command == 'o')
+ && command[1] == 0)
+ { /* Lslash lslash Oslash oslash.
+ Lslash and lslash aren't supported in HTML. */
+ if (html && (command[0] == 'O' || command[0] == 'o'))
+ add_word_args ("&%cslash;", command[0]);
+ else
+ add_word_args ("/%c", command[0]);
+ }
+ else if (strcmp (command, "exclamdown") == 0)
+ add_word (html ? "&iexcl;" : "!");
+ else if (strcmp (command, "pounds") == 0)
+ add_word (html ? "&pound;" : "#");
+ else if (strcmp (command, "questiondown") == 0)
+ add_word (html ? "&iquest;" : "?");
+ else if (strcmp (command, "AE") == 0)
+ add_word (html ? "&AElig;" : command);
+ else if (strcmp (command, "ae") == 0)
+ add_word (html ? "&aelig;" : command);
+ else if (strcmp (command, "OE") == 0)
+ add_word (html ? "&#140;" : command);
+ else if (strcmp (command, "oe") == 0)
+ add_word (html ? "&#156;" : command);
+ else if (strcmp (command, "AA") == 0)
+ add_word (html ? "&Aring;" : command);
+ else if (strcmp (command, "aa") == 0)
+ add_word (html ? "&aring;" : command);
+ else if (strcmp (command, "ss") == 0)
+ add_word (html ? "&szlig;" : command);
+ else
+ line_error ("cm_special_char internal error: command=@%s", command);
+ }
+}
+
+/* Dotless i or j. */
+void
+cm_dotless (arg, start, end)
+ int arg, start, end;
+{
+ if (arg == END)
+ {
+ if (output_paragraph[start] != 'i' && output_paragraph[start] != 'j')
+ /* This error message isn't perfect if the argument is multiple
+ characters, but it doesn't seem worth getting right. */
+ line_error (_("%c%s expects `i' or `j' as argument, not `%c'"),
+ COMMAND_PREFIX, command, output_paragraph[start]);
+
+ else if (end - start != 1)
+ line_error (_("%c%s expects a single character `i' or `j' as argument"),
+ COMMAND_PREFIX, command);
+
+ /* We've already inserted the `i' or `j', so nothing to do. */
+ }
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/lang.h b/gnu/usr.bin/texinfo/makeinfo/lang.h
new file mode 100644
index 00000000000..40c48aca98d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/lang.h
@@ -0,0 +1,86 @@
+/* lang.h -- declarations for language codes etc.
+ $Id: lang.h,v 1.1.1.1 2000/02/09 01:25:20 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#ifndef LANG_H
+#define LANG_H
+
+/* The langauge code which can be changed through @documentlanguage
+ * Actualy Info does not support this (may be in the future) ;-)
+ * Default for language code is en (english!) kama
+ * These code should ISO 639 two letter codes.
+ */
+typedef enum
+{
+ aa, ab, af, am, ar, as, ay, az,
+ ba, be, bg, bh, bi, bn, bo, br,
+ ca, co, cs, cy,
+ da, de, dz,
+ el, en, eo, es, et, eu,
+ fa, fi, fj, fo, fr, fy,
+ ga, gd, gl, gn, gu,
+ ha, he, hi, hr, hu, hy,
+ ia, id, ie, ik, is, it, iu,
+ ja, jw,
+ ka, kk, kl, km, kn, ko, ks, ku, ky,
+ la, ln, lo, lt, lv,
+ mg, mi, mk, ml, mn, mo, mr, ms, mt, my,
+ na, ne, nl, no,
+ oc, om, or,
+ pa, pl, ps, pt,
+ qu,
+ rm, rn, ro, ru, rw,
+ sa, sd, sg, sh, si, sk, sl, sm, sn, so, sq, sr, ss, st, su, sv, sw,
+ ta, te, tg, th, ti, tk, tl, tn, to, tr, ts, tt, tw,
+ ug, uk, ur, uz,
+ vi, vo,
+ wo,
+ xh,
+ yi, yo,
+ za, zh, zu,
+ last_language_code
+} language_code_type;
+
+/* The current language code. */
+extern language_code_type language_code;
+
+/* Information about all valid languages. */
+typedef struct
+{
+ language_code_type lc; /* language code as enum type */
+ char *abbrev; /* two letter language code */
+ char *desc; /* full name for language code */
+} language_struct;
+extern language_struct language_table[];
+
+/* The encoding, or null if not set. */
+extern char *document_encoding;
+
+
+/* The commands. */
+extern void cm_documentlanguage (), cm_documentencoding ();
+
+/* Accents, other non-English characters. */
+void cm_accent (), cm_special_char (), cm_dotless ();
+
+extern void cm_accent_umlaut (), cm_accent_acute (), cm_accent_cedilla (),
+ cm_accent_hat (), cm_accent_grave (), cm_accent_tilde ();
+
+#endif /* not LANG_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/macro.c b/gnu/usr.bin/texinfo/makeinfo/macro.c
new file mode 100644
index 00000000000..82821b9fe86
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/macro.c
@@ -0,0 +1,1114 @@
+/* macro.c -- user-defined macros for Texinfo.
+ $Id: macro.c,v 1.1.1.1 2000/02/09 01:25:23 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "macro.h"
+#include "makeinfo.h"
+#include "insertion.h"
+
+/* If non-NULL, this is an output stream to write the full macro expansion
+ of the input text to. The result is another texinfo file, but
+ missing @include, @infoinclude, @macro, and macro invocations. Instead,
+ all of the text is placed within the file. */
+FILE *macro_expansion_output_stream = NULL;
+
+/* Output file for -E. */
+char *macro_expansion_filename;
+
+/* Nonzero means a macro string is in execution, as opposed to a file. */
+int me_executing_string = 0;
+
+/* Nonzero means we want only to expand macros and
+ leave everything else intact. */
+int only_macro_expansion = 0;
+
+static ITEXT **itext_info = NULL;
+static int itext_size = 0;
+
+/* Return the arglist on the current line. This can behave in two different
+ ways, depending on the variable BRACES_REQUIRED_FOR_MACRO_ARGS. */
+int braces_required_for_macro_args = 0;
+
+/* Array of macros and definitions. */
+MACRO_DEF **macro_list = NULL;
+
+int macro_list_len = 0; /* Number of elements. */
+int macro_list_size = 0; /* Number of slots in total. */
+
+/* Return the length of the array in ARRAY. */
+int
+array_len (array)
+ char **array;
+{
+ int i = 0;
+
+ if (array)
+ for (i = 0; array[i]; i++);
+
+ return i;
+}
+
+void
+free_array (array)
+ char **array;
+{
+ if (array)
+ {
+ int i;
+ for (i = 0; array[i]; i++)
+ free (array[i]);
+
+ free (array);
+ }
+}
+
+/* Return the macro definition of NAME or NULL if NAME is not defined. */
+MACRO_DEF *
+find_macro (name)
+ char *name;
+{
+ int i;
+ MACRO_DEF *def;
+
+ def = NULL;
+ for (i = 0; macro_list && (def = macro_list[i]); i++)
+ {
+ if ((!def->inhibited) && (strcmp (def->name, name) == 0))
+ break;
+ }
+ return def;
+}
+
+/* Add the macro NAME with ARGLIST and BODY to the list of defined macros.
+ SOURCE_FILE is the name of the file where this definition can be found,
+ and SOURCE_LINENO is the line number within that file. If a macro already
+ exists with NAME, then a warning is produced, and that previous
+ definition is overwritten. */
+void
+add_macro (name, arglist, body, source_file, source_lineno, flags)
+ char *name;
+ char **arglist;
+ char *body;
+ char *source_file;
+ int source_lineno, flags;
+{
+ MACRO_DEF *def;
+
+ def = find_macro (name);
+
+ if (!def)
+ {
+ if (macro_list_len + 2 >= macro_list_size)
+ macro_list = xrealloc
+ (macro_list, ((macro_list_size += 10) * sizeof (MACRO_DEF *)));
+
+ macro_list[macro_list_len] = xmalloc (sizeof (MACRO_DEF));
+ macro_list[macro_list_len + 1] = NULL;
+
+ def = macro_list[macro_list_len];
+ macro_list_len += 1;
+ def->name = name;
+ }
+ else
+ {
+ char *temp_filename = input_filename;
+ int temp_line = line_number;
+
+ warning (_("macro `%s' previously defined"), name);
+
+ input_filename = def->source_file;
+ line_number = def->source_lineno;
+ warning (_("here is the previous definition of `%s'"), name);
+
+ input_filename = temp_filename;
+ line_number = temp_line;
+
+ if (def->arglist)
+ {
+ int i;
+
+ for (i = 0; def->arglist[i]; i++)
+ free (def->arglist[i]);
+
+ free (def->arglist);
+ }
+ free (def->source_file);
+ free (def->body);
+ }
+
+ def->source_file = xstrdup (source_file);
+ def->source_lineno = source_lineno;
+ def->body = body;
+ def->arglist = arglist;
+ def->inhibited = 0;
+ def->flags = flags;
+}
+
+
+char **
+get_brace_args (quote_single)
+ int quote_single;
+{
+ char **arglist, *word;
+ int arglist_index, arglist_size;
+ int character, escape_seen, start;
+ int depth = 1;
+
+ /* There is an arglist in braces here, so gather the args inside of it. */
+ skip_whitespace_and_newlines ();
+ input_text_offset++;
+ arglist = NULL;
+ arglist_index = arglist_size = 0;
+
+ get_arg:
+ skip_whitespace_and_newlines ();
+ start = input_text_offset;
+ escape_seen = 0;
+
+ while ((character = curchar ()))
+ {
+ if (character == '\\')
+ {
+ input_text_offset += 2;
+ escape_seen = 1;
+ }
+ else if (character == '{')
+ {
+ depth++;
+ input_text_offset++;
+ }
+ else if ((character == ',' && !quote_single) ||
+ ((character == '}') && depth == 1))
+ {
+ int len = input_text_offset - start;
+
+ if (len || (character != '}'))
+ {
+ word = xmalloc (1 + len);
+ memcpy (word, input_text + start, len);
+ word[len] = 0;
+
+ /* Clean up escaped characters. */
+ if (escape_seen)
+ {
+ int i;
+ for (i = 0; word[i]; i++)
+ if (word[i] == '\\')
+ memmove (word + i, word + i + 1,
+ 1 + strlen (word + i + 1));
+ }
+
+ if (arglist_index + 2 >= arglist_size)
+ arglist = xrealloc
+ (arglist, (arglist_size += 10) * sizeof (char *));
+
+ arglist[arglist_index++] = word;
+ arglist[arglist_index] = NULL;
+ }
+
+ input_text_offset++;
+ if (character == '}')
+ break;
+ else
+ goto get_arg;
+ }
+ else if (character == '}')
+ {
+ depth--;
+ input_text_offset++;
+ }
+ else
+ {
+ input_text_offset++;
+ if (character == '\n') line_number++;
+ }
+ }
+ return arglist;
+}
+
+char **
+get_macro_args (def)
+ MACRO_DEF *def;
+{
+ int i;
+ char *word;
+
+ /* Quickly check to see if this macro has been invoked with any arguments.
+ If not, then don't skip any of the following whitespace. */
+ for (i = input_text_offset; i < input_text_length; i++)
+ if (!cr_or_whitespace (input_text[i]))
+ break;
+
+ if (input_text[i] != '{')
+ {
+ if (braces_required_for_macro_args)
+ {
+ return NULL;
+ }
+ else
+ {
+ /* Braces are not required to fill out the macro arguments. If
+ this macro takes one argument, it is considered to be the
+ remainder of the line, sans whitespace. */
+ if (def->arglist && def->arglist[0] && !def->arglist[1])
+ {
+ char **arglist;
+
+ get_rest_of_line (0, &word);
+ if (input_text[input_text_offset - 1] == '\n')
+ {
+ input_text_offset--;
+ line_number--;
+ }
+ /* canon_white (word); */
+ arglist = xmalloc (2 * sizeof (char *));
+ arglist[0] = word;
+ arglist[1] = NULL;
+ return arglist;
+ }
+ else
+ {
+ /* The macro either took no arguments, or took more than
+ one argument. In that case, it must be invoked with
+ arguments surrounded by braces. */
+ return NULL;
+ }
+ }
+ }
+ return get_brace_args (def->flags & ME_QUOTE_ARG);
+}
+
+/* Substitute actual parameters for named parameters in body.
+ The named parameters which appear in BODY must by surrounded
+ reverse slashes, as in \foo\. */
+char *
+apply (named, actuals, body)
+ char **named, **actuals, *body;
+{
+ int i;
+ int new_body_index, new_body_size;
+ char *new_body, *text;
+ int length_of_actuals;
+
+ length_of_actuals = array_len (actuals);
+ new_body_size = strlen (body);
+ new_body = xmalloc (1 + new_body_size);
+
+ /* Copy chars from BODY into NEW_BODY. */
+ i = 0;
+ new_body_index = 0;
+
+ while (body[i])
+ { /* Anything but a \ is easy. */
+ if (body[i] != '\\')
+ new_body[new_body_index++] = body[i++];
+ else
+ { /* Snarf parameter name, check against named parameters. */
+ char *param;
+ int param_start, which, len;
+
+ param_start = ++i;
+ while (body[i] && body[i] != '\\')
+ i++;
+
+ len = i - param_start;
+ param = xmalloc (1 + len);
+ memcpy (param, body + param_start, len);
+ param[len] = 0;
+
+ 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);
+ }
+ len++;
+ text = xmalloc (1 + len);
+ sprintf (text, "\\%s", param);
+ }
+
+ if (strlen (param) + 2 < len)
+ {
+ new_body_size += len + 1;
+ new_body = xrealloc (new_body, new_body_size);
+ }
+
+ free (param);
+
+ strcpy (new_body + new_body_index, text);
+ new_body_index += len;
+
+ if (!named || !named[which])
+ free (text);
+ }
+ }
+
+ new_body[new_body_index] = 0;
+ return new_body;
+}
+
+/* Expand macro passed in DEF, a pointer to a MACRO_DEF, and
+ return its expansion as a string. */
+char *
+expand_macro (def)
+ MACRO_DEF *def;
+{
+ char **arglist;
+ int num_args;
+ char *execution_string = NULL;
+ int start_line = line_number;
+
+ /* Find out how many arguments this macro definition takes. */
+ num_args = array_len (def->arglist);
+
+ /* Gather the arguments present on the line if there are any. */
+ arglist = get_macro_args (def);
+
+ if (num_args < array_len (arglist))
+ {
+ free_array (arglist);
+ line_error (_("Macro `%s' called on line %d with too many args"),
+ def->name, start_line);
+ return execution_string;
+ }
+
+ if (def->body)
+ execution_string = apply (def->arglist, arglist, def->body);
+
+ free_array (arglist);
+ return execution_string;
+}
+
+/* Execute the macro passed in DEF, a pointer to a MACRO_DEF. */
+void
+execute_macro (def)
+ MACRO_DEF *def;
+{
+ char *execution_string;
+ int start_line = line_number, end_line;
+
+ if (macro_expansion_output_stream && !executing_string && !me_inhibit_expansion)
+ me_append_before_this_command ();
+
+ execution_string = expand_macro (def);
+ if (!execution_string)
+ return;
+
+ if (def->body)
+ {
+ /* Reset the line number to where the macro arguments began.
+ This makes line numbers reported in error messages correct in
+ case the macro arguments span several lines and the expanded
+ arguments invoke other commands. */
+ end_line = line_number;
+ line_number = start_line;
+
+ if (macro_expansion_output_stream && !executing_string && !me_inhibit_expansion)
+ {
+ remember_itext (input_text, input_text_offset);
+ me_execute_string (execution_string);
+ }
+ else
+ execute_string ("%s", execution_string);
+
+ free (execution_string);
+ line_number = end_line;
+ }
+}
+
+
+/* Read and remember the definition of a macro. If RECURSIVE is set,
+ set the ME_RECURSE flag. MACTYPE is either "macro" or "rmacro", and
+ tells us what the matching @end should be. */
+static void
+define_macro (mactype, recursive)
+ char *mactype;
+ int recursive;
+{
+ int i;
+ char *name, **arglist, *body, *line, *last_end;
+ int body_size, body_index;
+ int depth = 1;
+ int defining_line = line_number;
+ int flags = 0;
+
+ arglist = NULL;
+ body = NULL;
+ body_size = 0;
+ body_index = 0;
+
+ if (macro_expansion_output_stream && !executing_string)
+ me_append_before_this_command ();
+
+ skip_whitespace ();
+
+ /* Get the name of the macro. This is the set of characters which are
+ not whitespace and are not `{' immediately following the @macro. */
+ {
+ int start = input_text_offset;
+ int len;
+
+ for (i = start;
+ (i < input_text_length) &&
+ (input_text[i] != '{') &&
+ (!cr_or_whitespace (input_text[i]));
+ i++);
+
+ len = i - start;
+ name = xmalloc (1 + len);
+ memcpy (name, input_text + start, len);
+ name[len] = 0;
+ input_text_offset = i;
+ }
+
+ skip_whitespace ();
+
+ /* It is not required that the definition of a macro includes an arglist.
+ If not, don't try to get the named parameters, just use a null list. */
+ if (curchar () == '{')
+ {
+ int character;
+ int arglist_index = 0, arglist_size = 0;
+ int gathering_words = 1;
+ char *word = NULL;
+
+ /* Read the words inside of the braces which determine the arglist.
+ These words will be replaced within the body of the macro at
+ execution time. */
+
+ input_text_offset++;
+ skip_whitespace_and_newlines ();
+
+ while (gathering_words)
+ {
+ int len;
+
+ for (i = input_text_offset;
+ (character = input_text[i]);
+ i++)
+ {
+ switch (character)
+ {
+ case '\n':
+ line_number++;
+ case ' ':
+ case '\t':
+ case ',':
+ case '}':
+ /* Found the end of the current arglist word. Save it. */
+ len = i - input_text_offset;
+ word = xmalloc (1 + len);
+ memcpy (word, input_text + input_text_offset, len);
+ word[len] = 0;
+ input_text_offset = i;
+
+ /* Advance to the comma or close-brace that signified
+ the end of the argument. */
+ while ((character = curchar ())
+ && character != ','
+ && character != '}')
+ {
+ input_text_offset++;
+ if (character == '\n')
+ line_number++;
+ }
+
+ /* Add the word to our list of words. */
+ if (arglist_index + 2 >= arglist_size)
+ {
+ arglist_size += 10;
+ arglist = xrealloc (arglist,
+ arglist_size * sizeof (char *));
+ }
+
+ arglist[arglist_index++] = word;
+ arglist[arglist_index] = NULL;
+ break;
+ }
+
+ if (character == '}')
+ {
+ input_text_offset++;
+ gathering_words = 0;
+ break;
+ }
+
+ if (character == ',')
+ {
+ input_text_offset++;
+ skip_whitespace_and_newlines ();
+ i = input_text_offset - 1;
+ }
+ }
+ }
+
+ /* If we have exactly one argument, do @quote-arg implicitly. Not
+ only does this match TeX's behavior (which can't feasibly be
+ changed), but it's a good idea. */
+ if (arglist_index == 1)
+ flags |= ME_QUOTE_ARG;
+ }
+
+ /* Read the text carefully until we find an "@end macro" which
+ matches this one. The text in between is the body of the macro. */
+ skip_whitespace_and_newlines ();
+
+ while (depth)
+ {
+ if ((input_text_offset + 9) > input_text_length)
+ {
+ int temp_line = line_number;
+ line_number = defining_line;
+ line_error (_("%cend macro not found"), COMMAND_PREFIX);
+ line_number = temp_line;
+ return;
+ }
+
+ get_rest_of_line (0, &line);
+
+ /* Handle commands only meaningful within a macro. */
+ if ((*line == COMMAND_PREFIX) && (depth == 1) &&
+ (strncmp (line + 1, "allow-recursion", 15) == 0) &&
+ (line[16] == 0 || whitespace (line[16])))
+ {
+ for (i = 16; whitespace (line[i]); i++);
+ strcpy (line, line + i);
+ flags |= ME_RECURSE;
+ if (!*line)
+ {
+ free (line);
+ continue;
+ }
+ }
+
+ if ((*line == COMMAND_PREFIX) && (depth == 1) &&
+ (strncmp (line + 1, "quote-arg", 9) == 0) &&
+ (line[10] == 0 || whitespace (line[10])))
+ {
+ for (i = 10; whitespace (line[i]); i++);
+ strcpy (line, line + i);
+
+ if (arglist && arglist[0] && !arglist[1])
+ {
+ flags |= ME_QUOTE_ARG;
+ if (!*line)
+ {
+ free (line);
+ continue;
+ }
+ }
+ else
+ line_error (_("@quote-arg only useful for single-argument macros"));
+ }
+
+ if (*line == COMMAND_PREFIX
+ && (strncmp (line + 1, "macro ", 6) == 0
+ || strncmp (line + 1, "rmacro ", 7) == 0))
+ depth++;
+
+ /* Incorrect implementation of nesting -- just check that the last
+ @end matches what we started with. Since nested macros don't
+ work in TeX anyway, this isn't worth the trouble to get right. */
+ if (*line == COMMAND_PREFIX && strncmp (line + 1, "end macro", 9) == 0)
+ {
+ depth--;
+ last_end = "macro";
+ }
+ if (*line == COMMAND_PREFIX && strncmp (line + 1, "end rmacro", 9) == 0)
+ {
+ depth--;
+ last_end = "rmacro";
+ }
+
+ if (depth)
+ {
+ if ((body_index + strlen (line) + 3) >= body_size)
+ body = xrealloc (body, body_size += 3 + strlen (line));
+ strcpy (body + body_index, line);
+ body_index += strlen (line);
+ body[body_index++] = '\n';
+ body[body_index] = 0;
+ }
+ free (line);
+ }
+
+ /* Check that @end matched the macro command. */
+ if (!STREQ (last_end, mactype))
+ warning (_("mismatched @end %s with @%s"), last_end, mactype);
+
+ /* If it was an empty macro like
+ @macro foo
+ @end macro
+ create an empty body. (Otherwise, the macro is not expanded.) */
+ if (!body)
+ {
+ body = (char *)malloc(1);
+ *body = 0;
+ }
+
+ /* We now have the name, the arglist, and the body. However, BODY
+ includes the final newline which preceded the `@end macro' text.
+ Delete it. */
+ if (body && strlen (body))
+ body[strlen (body) - 1] = 0;
+
+ if (recursive)
+ flags |= ME_RECURSE;
+
+ add_macro (name, arglist, body, input_filename, defining_line, flags);
+
+ if (macro_expansion_output_stream && !executing_string)
+ remember_itext (input_text, input_text_offset);
+}
+
+void
+cm_macro ()
+{
+ define_macro ("macro", 0);
+}
+
+void
+cm_rmacro ()
+{
+ define_macro ("rmacro", 1);
+}
+
+/* Delete the macro with name NAME. The macro is deleted from the list,
+ but it is also returned. If there was no macro defined, NULL is
+ returned. */
+
+static MACRO_DEF *
+delete_macro (name)
+ char *name;
+{
+ int i;
+ MACRO_DEF *def;
+
+ def = NULL;
+
+ for (i = 0; macro_list && (def = macro_list[i]); i++)
+ if (strcmp (def->name, name) == 0)
+ {
+ memmove (macro_list + i, macro_list + i + 1,
+ ((macro_list_len + 1) - i) * sizeof (MACRO_DEF *));
+ macro_list_len--;
+ break;
+ }
+ return def;
+}
+
+void
+cm_unmacro ()
+{
+ int i;
+ char *line, *name;
+ MACRO_DEF *def;
+
+ if (macro_expansion_output_stream && !executing_string)
+ me_append_before_this_command ();
+
+ get_rest_of_line (0, &line);
+
+ for (i = 0; line[i] && !whitespace (line[i]); i++);
+ name = xmalloc (i + 1);
+ memcpy (name, line, i);
+ name[i] = 0;
+
+ def = delete_macro (name);
+
+ if (def)
+ {
+ free (def->source_file);
+ free (def->name);
+ free (def->body);
+
+ if (def->arglist)
+ {
+ int i;
+
+ for (i = 0; def->arglist[i]; i++)
+ free (def->arglist[i]);
+
+ free (def->arglist);
+ }
+
+ free (def);
+ }
+
+ free (line);
+ free (name);
+
+ if (macro_expansion_output_stream && !executing_string)
+ remember_itext (input_text, input_text_offset);
+}
+
+/* How to output sections of the input file verbatim. */
+
+/* Set the value of POINTER's offset to OFFSET. */
+ITEXT *
+remember_itext (pointer, offset)
+ char *pointer;
+ int offset;
+{
+ int i;
+ ITEXT *itext = NULL;
+
+ /* If we have no info, initialize a blank list. */
+ if (!itext_info)
+ {
+ itext_info = xmalloc ((itext_size = 10) * sizeof (ITEXT *));
+ for (i = 0; i < itext_size; i++)
+ itext_info[i] = NULL;
+ }
+
+ /* If the pointer is already present in the list, then set the offset. */
+ for (i = 0; i < itext_size; i++)
+ if ((itext_info[i]) &&
+ (itext_info[i]->pointer == pointer))
+ {
+ itext = itext_info[i];
+ itext_info[i]->offset = offset;
+ break;
+ }
+
+ if (i == itext_size)
+ {
+ /* Find a blank slot (or create a new one), and remember the
+ pointer and offset. */
+ for (i = 0; i < itext_size; i++)
+ if (itext_info[i] == NULL)
+ break;
+
+ /* If not found, then add some slots. */
+ if (i == itext_size)
+ {
+ int j;
+
+ itext_info = xrealloc
+ (itext_info, (itext_size += 10) * sizeof (ITEXT *));
+
+ for (j = i; j < itext_size; j++)
+ itext_info[j] = NULL;
+ }
+
+ /* Now add the pointer and the offset. */
+ itext_info[i] = xmalloc (sizeof (ITEXT));
+ itext_info[i]->pointer = pointer;
+ itext_info[i]->offset = offset;
+ itext = itext_info[i];
+ }
+ return itext;
+}
+
+/* Forget the input text associated with POINTER. */
+void
+forget_itext (pointer)
+ char *pointer;
+{
+ int i;
+
+ for (i = 0; i < itext_size; i++)
+ if (itext_info[i] && (itext_info[i]->pointer == pointer))
+ {
+ free (itext_info[i]);
+ itext_info[i] = NULL;
+ break;
+ }
+}
+
+/* Append the text which appeared in input_text from the last offset to
+ the character just before the command that we are currently executing. */
+void
+me_append_before_this_command ()
+{
+ int i;
+
+ for (i = input_text_offset; i && (input_text[i] != COMMAND_PREFIX); i--)
+ ;
+ maybe_write_itext (input_text, i);
+}
+
+/* Similar to execute_string, but only takes a single string argument,
+ and remembers the input text location, etc. */
+void
+me_execute_string (execution_string)
+ char *execution_string;
+{
+ int saved_escape_html = escape_html;
+ int saved_in_paragraph = in_paragraph;
+ escape_html = me_executing_string == 0;
+ in_paragraph = 0;
+
+ pushfile ();
+ input_text_offset = 0;
+ /* The following xstrdup is so we can relocate input_text at will. */
+ input_text = xstrdup (execution_string);
+ input_filename = xstrdup (input_filename);
+ input_text_length = strlen (execution_string);
+
+ remember_itext (input_text, 0);
+
+ me_executing_string++;
+ reader_loop ();
+ free (input_text);
+ free (input_filename);
+ popfile ();
+ me_executing_string--;
+
+ in_paragraph = saved_in_paragraph;
+ escape_html = saved_escape_html;
+}
+
+/* A wrapper around me_execute_string which saves and restores
+ variables important for output generation. This is called
+ when we need to produce macro-expanded output for input which
+ leaves no traces in the Info output. */
+void
+me_execute_string_keep_state (execution_string, append_string)
+ char *execution_string, *append_string;
+{
+ int op_orig, opcol_orig, popen_orig;
+ int fill_orig, newline_orig, indent_orig, meta_pos_orig;
+
+ remember_itext (input_text, input_text_offset);
+ op_orig = output_paragraph_offset;
+ meta_pos_orig = meta_char_pos;
+ opcol_orig = output_column;
+ popen_orig = paragraph_is_open;
+ fill_orig = filling_enabled;
+ newline_orig = last_char_was_newline;
+ filling_enabled = 0;
+ indent_orig = no_indent;
+ no_indent = 1;
+ me_execute_string (execution_string);
+ if (append_string)
+ write_region_to_macro_output (append_string, 0, strlen (append_string));
+ output_paragraph_offset = op_orig;
+ meta_char_pos = meta_pos_orig;
+ output_column = opcol_orig;
+ paragraph_is_open = popen_orig;
+ filling_enabled = fill_orig;
+ last_char_was_newline = newline_orig;
+ no_indent = indent_orig;
+}
+
+/* Append the text which appears in input_text from the last offset to
+ the current OFFSET. */
+void
+append_to_expansion_output (offset)
+ int offset;
+{
+ int i;
+ ITEXT *itext = NULL;
+
+ for (i = 0; i < itext_size; i++)
+ if (itext_info[i] && itext_info[i]->pointer == input_text)
+ {
+ itext = itext_info[i];
+ break;
+ }
+
+ if (!itext)
+ return;
+
+ if (offset > itext->offset)
+ {
+ write_region_to_macro_output (input_text, itext->offset, offset);
+ remember_itext (input_text, offset);
+ }
+}
+
+/* Only write this input text iff it appears in our itext list. */
+void
+maybe_write_itext (pointer, offset)
+ char *pointer;
+ int offset;
+{
+ int i;
+ ITEXT *itext = NULL;
+
+ for (i = 0; i < itext_size; i++)
+ if (itext_info[i] && (itext_info[i]->pointer == pointer))
+ {
+ itext = itext_info[i];
+ break;
+ }
+
+ if (itext && (itext->offset < offset))
+ {
+ write_region_to_macro_output (itext->pointer, itext->offset, offset);
+ remember_itext (pointer, offset);
+ }
+}
+
+void
+write_region_to_macro_output (string, start, end)
+ char *string;
+ int start, end;
+{
+ if (macro_expansion_output_stream)
+ fwrite (string + start, 1, end - start, macro_expansion_output_stream);
+}
+
+/* Aliases. */
+
+typedef struct alias_struct
+{
+ char *alias;
+ char *mapto;
+ struct alias_struct *next;
+} alias_type;
+
+static alias_type *aliases;
+
+/* @alias */
+void
+cm_alias ()
+{
+ alias_type *a = xmalloc (sizeof (alias_type));
+
+ skip_whitespace ();
+ get_until_in_line (1, "=", &(a->alias));
+ discard_until ("=");
+ skip_whitespace ();
+ get_until_in_line (0, " ", &(a->mapto));
+
+ a->next = aliases;
+ aliases = a;
+}
+
+/* Perform an alias expansion. Called from read_command. */
+char *
+alias_expand (tok)
+ char *tok;
+{
+ alias_type *findit = aliases;
+
+ while (findit)
+ if (strcmp (findit->alias, tok) == 0)
+ {
+ free (tok);
+ return alias_expand (xstrdup (findit->mapto));
+ }
+ else
+ findit = findit->next;
+
+ return tok;
+}
+
+/* definfoenclose implementation. */
+
+/* This structure is used to track enclosure macros. When an enclosure
+ macro is recognized, a pointer to the enclosure block corresponding
+ to its name is saved in the brace element for its argument. */
+typedef struct enclose_struct
+{
+ char *enclose;
+ char *before;
+ char *after;
+ struct enclose_struct *next;
+} enclosure_type;
+
+static enclosure_type *enclosures;
+
+typedef struct enclosure_stack_struct
+{
+ enclosure_type *current;
+ struct enclosure_stack_struct *next;
+} enclosure_stack_type;
+
+static enclosure_stack_type *enclosure_stack;
+
+/* @definfoenclose */
+void
+cm_definfoenclose ()
+{
+ enclosure_type *e = xmalloc (sizeof (enclosure_type));
+
+ skip_whitespace ();
+ get_until_in_line (1, ",", &(e->enclose));
+ discard_until (",");
+ get_until_in_line (0, ",", &(e->before));
+ discard_until (",");
+ get_until_in_line (0, "\n", &(e->after));
+
+ e->next = enclosures;
+ enclosures = e;
+}
+
+/* If TOK is an enclosure command, push it on the enclosure stack and
+ return 1. Else return 0. */
+
+int
+enclosure_command (tok)
+ char *tok;
+{
+ enclosure_type *findit = enclosures;
+
+ while (findit)
+ if (strcmp (findit->enclose, tok) == 0)
+ {
+ enclosure_stack_type *new = xmalloc (sizeof (enclosure_stack_type));
+ new->current = findit;
+ new->next = enclosure_stack;
+ enclosure_stack = new;
+
+ return 1;
+ }
+ else
+ findit = findit->next;
+
+ return 0;
+}
+
+/* actually perform the enclosure expansion */
+void
+enclosure_expand (arg, start, end)
+ int arg, start, end;
+{
+ if (arg == START)
+ add_word (enclosure_stack->current->before);
+ else
+ {
+ enclosure_stack_type *temp;
+
+ add_word (enclosure_stack->current->after);
+
+ temp = enclosure_stack;
+ enclosure_stack = enclosure_stack->next;
+ free (temp);
+ }
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/macro.h b/gnu/usr.bin/texinfo/makeinfo/macro.h
new file mode 100644
index 00000000000..4fac46b268d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/macro.h
@@ -0,0 +1,71 @@
+/* macro.h -- declarations for macro.c.
+ $Id: macro.h,v 1.1.1.1 2000/02/09 01:25:23 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef MACRO_H
+#define MACRO_H
+
+extern FILE *macro_expansion_output_stream;
+extern char *macro_expansion_filename;
+extern int me_executing_string;
+extern int only_macro_expansion;
+
+/* Here is a structure used to remember input text strings and offsets
+ within them. */
+typedef struct {
+ char *pointer; /* Pointer to the input text. */
+ int offset; /* Offset of the last character output. */
+} ITEXT;
+
+/* Macro definitions for user-defined commands. */
+typedef struct {
+ char *name; /* Name of the macro. */
+ char **arglist; /* Args to replace when executing. */
+ char *body; /* Macro body. */
+ char *source_file; /* File where this macro is defined. */
+ int source_lineno; /* Line number within FILENAME. */
+ int inhibited; /* Nonzero means make find_macro () fail. */
+ int flags; /* ME_RECURSE, ME_QUOTE_ARG, etc. */
+} MACRO_DEF;
+
+/* flags for MACRO_DEF */
+#define ME_RECURSE 0x01
+#define ME_QUOTE_ARG 0x02
+
+extern void execute_macro ();
+extern MACRO_DEF *find_macro ();
+extern char *expand_macro ();
+
+extern ITEXT *remember_itext ();
+extern void forget_itext ();
+extern void maybe_write_itext ();
+extern void write_region_to_macro_output ();
+extern void append_to_expansion_output ();
+extern void me_append_before_this_command ();
+extern void me_execute_string ();
+
+extern char *alias_expand ();
+extern int enclosure_command ();
+extern void enclosure_expand ();
+
+/* The @commands. */
+extern void cm_macro (), cm_rmacro (), cm_unmacro ();
+extern void cm_alias (), cm_definfoenclose ();
+
+#endif /* not MACRO_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/node.c b/gnu/usr.bin/texinfo/makeinfo/node.c
new file mode 100644
index 00000000000..bb649d3f098
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/node.c
@@ -0,0 +1,1568 @@
+/* node.c -- nodes for Texinfo.
+ $Id: node.c,v 1.1 2000/02/09 01:25:30 espie Exp $
+
+ Copyright (C) 1998, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "files.h"
+#include "footnote.h"
+#include "macro.h"
+#include "makeinfo.h"
+#include "node.h"
+#include "sectioning.h"
+#include "insertion.h"
+
+
+/* See comments in node.h. */
+NODE_REF *node_references = NULL;
+NODE_REF *node_node_references = NULL;
+TAG_ENTRY *tag_table = NULL;
+int node_number = -1;
+int current_section = 0;
+int outstanding_node = 0;
+
+/* Adding nodes, and making tags. */
+
+/* Start a new tag table. */
+void
+init_tag_table ()
+{
+ while (tag_table)
+ {
+ TAG_ENTRY *temp = tag_table;
+ free (temp->node);
+ free (temp->prev);
+ free (temp->next);
+ free (temp->up);
+ tag_table = tag_table->next_ent;
+ free (temp);
+ }
+}
+
+/* Write out the contents of the existing tag table.
+ INDIRECT_P says how to format the output (it depends on whether the
+ table is direct or indirect). */
+static void
+write_tag_table_internal (indirect_p)
+ int indirect_p;
+{
+ TAG_ENTRY *node;
+ int old_indent = no_indent;
+
+ no_indent = 1;
+ filling_enabled = 0;
+ must_start_paragraph = 0;
+ close_paragraph ();
+
+ if (!indirect_p)
+ {
+ no_indent = 1;
+ insert ('\n');
+ }
+
+ add_word_args ("\037\nTag Table:\n%s", indirect_p ? "(Indirect)\n" : "");
+
+ /* Do not collapse -- to -, etc., in node names. */
+ in_fixed_width_font++;
+
+ for (node = tag_table; node; node = node->next_ent)
+ {
+ if (node->flags & TAG_FLAG_ANCHOR)
+ { /* This reference is to an anchor. */
+ execute_string ("Ref: %s", node->node);
+ }
+ else
+ { /* This reference is to a node. */
+ execute_string ("Node: %s", node->node);
+ }
+ add_word_args ("\177%d\n", node->position);
+ }
+
+ add_word ("\037\nEnd Tag Table\n");
+
+ /* Do not collapse -- to -, etc., in node names. */
+ in_fixed_width_font--;
+
+ flush_output ();
+ no_indent = old_indent;
+}
+
+void
+write_tag_table ()
+{
+ write_tag_table_internal (0); /* Not indirect. */
+}
+
+void
+write_tag_table_indirect ()
+{
+ write_tag_table_internal (1);
+}
+
+/* Convert "top" and friends into "Top". */
+static void
+normalize_node_name (string)
+ char *string;
+{
+ if (strcasecmp (string, "Top") == 0)
+ strcpy (string, "Top");
+}
+
+char *
+get_node_token (expand)
+ int expand;
+{
+ char *string;
+
+ get_until_in_line (expand, ",", &string);
+
+ if (curchar () == ',')
+ input_text_offset++;
+
+ fix_whitespace (string);
+
+ /* Force all versions of "top" to be "Top". */
+ normalize_node_name (string);
+
+ return string;
+}
+
+/* Expand any macros and other directives in a node name, and
+ return the expanded name as an malloc'ed string. */
+char *
+expand_node_name (node)
+ char *node;
+{
+ char *result = node;
+
+ if (node)
+ {
+ /* Don't expand --, `` etc., in case somebody will want
+ to print the result. */
+ in_fixed_width_font++;
+ result = expansion (node, 0);
+ in_fixed_width_font--;
+ fix_whitespace (result);
+ normalize_node_name (result);
+ }
+ return result;
+}
+
+/* Look up NAME in the tag table, and return the associated
+ tag_entry. If the node is not in the table return NULL. */
+TAG_ENTRY *
+find_node (name)
+ char *name;
+{
+ TAG_ENTRY *tag = tag_table;
+ char *expanded_name;
+ char n1 = name[0];
+
+ while (tag)
+ {
+ if (tag->node[0] == n1 && strcmp (tag->node, name) == 0)
+ return tag;
+ tag = tag->next_ent;
+ }
+
+ if (!expensive_validation)
+ return NULL;
+
+ /* Try harder. Maybe TAG_TABLE has the expanded NAME, or maybe NAME
+ is expanded while TAG_TABLE has its unexpanded form. This may
+ slow down the search, but if they want this feature, let them
+ pay! If they want it fast, they should write every node name
+ consistently (either always expanded or always unexpaned). */
+ expanded_name = expand_node_name (name);
+ for (tag = tag_table; tag; tag = tag->next_ent)
+ {
+ if (STREQ (tag->node, expanded_name))
+ break;
+ /* If the tag name doesn't have the command prefix, there's no
+ chance it could expand into anything but itself. */
+ if (strchr (tag->node, COMMAND_PREFIX))
+ {
+ char *expanded_node = expand_node_name (tag->node);
+
+ if (STREQ (expanded_node, expanded_name))
+ {
+ free (expanded_node);
+ break;
+ }
+ free (expanded_node);
+ }
+ }
+ free (expanded_name);
+ return tag;
+}
+
+/* Similarly for next etc. references in a @node command, where we
+ don't care about most of the entries. */
+static void
+remember_node_node_reference (node)
+ char *node;
+{
+ NODE_REF *temp = xmalloc (sizeof (NODE_REF));
+ int number;
+
+ if (!node) return;
+ temp->next = node_node_references;
+ temp->node = xstrdup (node);
+ temp->type = followed_reference;
+ number = number_of_node (node);
+ if (number)
+ temp->number = number; /* Already assigned. */
+ else
+ {
+ node_number++;
+ temp->number = node_number;
+ }
+ node_node_references = temp;
+}
+
+/* Remember NODE and associates. */
+void
+remember_node (node, prev, next, up, position, line_no, flags)
+ char *node, *prev, *next, *up;
+ int position, line_no, flags;
+{
+ /* Check for existence of this tag already. */
+ if (validating)
+ {
+ TAG_ENTRY *tag = find_node (node);
+ if (tag)
+ {
+ line_error (_("Node `%s' previously defined at line %d"),
+ node, tag->line_no);
+ return;
+ }
+ }
+
+ if (!(flags & TAG_FLAG_ANCHOR))
+ {
+ /* Make this the current node. */
+ current_node = node;
+ }
+
+ /* Add it to the list. */
+ {
+ int number = number_of_node (node);
+
+ TAG_ENTRY *new = xmalloc (sizeof (TAG_ENTRY));
+ new->node = node;
+ new->prev = prev;
+ new->next = next;
+ new->up = up;
+ new->position = position;
+ new->line_no = line_no;
+ new->filename = node_filename;
+ new->touched = 0;
+ new->flags = flags;
+ if (number)
+ new->number = number; /* Already assigned. */
+ else
+ {
+ node_number++;
+ new->number = node_number;
+ }
+ new->next_ent = tag_table;
+ tag_table = new;
+ }
+
+ if (html)
+ { /* Note the references to the next etc. nodes too. */
+ remember_node_node_reference (next);
+ remember_node_node_reference (prev);
+ remember_node_node_reference (up);
+ }
+}
+
+/* Remember this node name for later validation use. This is used to
+ remember menu references while reading the input file. After the
+ output file has been written, if validation is on, then we use the
+ contents of `node_references' as a list of nodes to validate. */
+void
+remember_node_reference (node, line, type)
+ char *node;
+ int line;
+ enum reftype type;
+{
+ NODE_REF *temp = xmalloc (sizeof (NODE_REF));
+ int number = number_of_node (node);
+
+ temp->next = node_references;
+ temp->node = xstrdup (node);
+ temp->line_no = line;
+ temp->section = current_section;
+ temp->type = type;
+ temp->containing_node = xstrdup (current_node ? current_node : "");
+ temp->filename = node_filename;
+ if (number)
+ temp->number = number; /* Already assigned. */
+ else
+ {
+ node_number++;
+ temp->number = node_number;
+ }
+
+ node_references = temp;
+}
+
+static void
+isolate_nodename (nodename)
+ char *nodename;
+{
+ int i, c;
+ int paren_seen, paren;
+
+ if (!nodename)
+ return;
+
+ canon_white (nodename);
+ paren_seen = paren = i = 0;
+
+ if (*nodename == '.' || !*nodename)
+ {
+ *nodename = 0;
+ return;
+ }
+
+ if (*nodename == '(')
+ {
+ paren++;
+ paren_seen++;
+ i++;
+ }
+
+ for (; (c = nodename[i]); i++)
+ {
+ if (paren)
+ {
+ if (c == '(')
+ paren++;
+ else if (c == ')')
+ paren--;
+
+ continue;
+ }
+
+ /* If the character following the close paren is a space, then this
+ node has no more characters associated with it. */
+ if (c == '\t' ||
+ c == '\n' ||
+ c == ',' ||
+ ((paren_seen && nodename[i - 1] == ')') &&
+ (c == ' ' || c == '.')) ||
+ (c == '.' &&
+ ((!nodename[i + 1] ||
+ (cr_or_whitespace (nodename[i + 1])) ||
+ (nodename[i + 1] == ')')))))
+ break;
+ }
+ nodename[i] = 0;
+}
+
+/* This function gets called at the start of every line while inside a
+ menu. It checks to see if the line starts with "* ", and if so and
+ REMEMBER_REF is nonzero, remembers the node reference as type
+ REF_TYPE that this menu refers to. input_text_offset is at the \n
+ just before the menu line. If REMEMBER_REF is zero, REF_TYPE is unused. */
+#define MENU_STARTER "* "
+char *
+glean_node_from_menu (remember_ref, ref_type)
+ int remember_ref;
+ enum reftype ref_type;
+{
+ int i, orig_offset = input_text_offset;
+ char *nodename;
+ char *line, *expanded_line;
+ char *old_input = input_text;
+ size_t old_size = input_text_length;
+
+ if (strncmp (&input_text[input_text_offset + 1],
+ MENU_STARTER,
+ strlen (MENU_STARTER)) != 0)
+ return NULL;
+ else
+ input_text_offset += strlen (MENU_STARTER) + 1;
+
+ /* The menu entry might include macro calls, so we need to expand them. */
+ get_until ("\n", &line);
+ only_macro_expansion++; /* only expand macros in menu entries */
+ expanded_line = expansion (line, 0);
+ only_macro_expansion--;
+ free (line);
+ input_text = expanded_line;
+ input_text_offset = 0;
+ input_text_length = strlen (expanded_line);
+
+ get_until_in_line (0, ":", &nodename);
+ if (curchar () == ':')
+ input_text_offset++;
+
+ if (curchar () != ':')
+ {
+ free (nodename);
+ get_until_in_line (0, "\n", &nodename);
+ isolate_nodename (nodename);
+ }
+
+ input_text = old_input;
+ input_text_offset = orig_offset;
+ input_text_length = old_size;
+ free (expanded_line);
+ fix_whitespace (nodename);
+ normalize_node_name (nodename);
+ i = strlen (nodename);
+ if (i && nodename[i - 1] == ':')
+ nodename[i - 1] = 0;
+
+ if (remember_ref)
+ remember_node_reference (nodename, line_number, ref_type);
+
+ return nodename;
+}
+
+/* Set the name of the current output file. */
+void
+set_current_output_filename (fname)
+ const char *fname;
+{
+ if (current_output_filename)
+ free (current_output_filename);
+ current_output_filename = xstrdup (fname);
+}
+
+/* The order is: nodename, nextnode, prevnode, upnode.
+ If all of the NEXT, PREV, and UP fields are empty, they are defaulted.
+ You must follow a node command which has those fields defaulted
+ with a sectioning command (e.g. @chapter) giving the "level" of that node.
+ It is an error not to do so.
+ The defaults come from the menu in this node's parent. */
+void
+cm_node ()
+{
+ char *node, *prev, *next, *up;
+ int new_node_pos, defaulting, this_section;
+ int no_warn = 0;
+
+ if (strcmp (command, "nwnode") == 0)
+ no_warn = TAG_FLAG_NO_WARN;
+
+ /* Get rid of unmatched brace arguments from previous commands. */
+ discard_braces ();
+
+ /* There also might be insertions left lying around that haven't been
+ ended yet. Do that also. */
+ discard_insertions (1);
+
+ if (!html && !already_outputting_pending_notes)
+ {
+ close_paragraph ();
+ output_pending_notes ();
+ }
+
+ if (html && splitting && top_node_seen)
+ {
+ /* End the current split output file. */
+ close_paragraph ();
+ output_pending_notes ();
+ start_paragraph ();
+ /* Fixme: html: need a navigation bar here. */
+ add_word ("</body></html>\n");
+ close_paragraph ();
+ fclose (output_stream);
+ output_stream = NULL;
+ }
+
+ filling_enabled = indented_fill = 0;
+ new_node_pos = output_position;
+ if (!html || (html && splitting))
+ current_footnote_number = 1;
+
+ if (macro_expansion_output_stream && !executing_string)
+ append_to_expansion_output (input_text_offset + 1);
+
+ /* Do not collapse -- to -, etc., in node names. */
+ in_fixed_width_font++;
+
+ /* While expanding the @node line, leave any non-macros
+ intact, so that the macro-expanded output includes them. */
+ only_macro_expansion++;
+ node = get_node_token (1);
+ only_macro_expansion--;
+ next = get_node_token (0);
+ prev = get_node_token (0);
+ up = get_node_token (0);
+
+ if (verbose_mode)
+ printf (_("Formatting node %s...\n"), node);
+
+ if (macro_expansion_output_stream && !executing_string)
+ remember_itext (input_text, input_text_offset);
+
+ no_indent = 1;
+ if (!no_headers && !html)
+ {
+ add_word_args ("\037\nFile: %s, Node: ", pretty_output_filename);
+
+ if (macro_expansion_output_stream && !executing_string)
+ me_execute_string (node);
+ else
+ execute_string ("%s", node);
+ filling_enabled = indented_fill = 0;
+ }
+
+ /* Check for defaulting of this node's next, prev, and up fields. */
+ defaulting = (*next == 0 && *prev == 0 && *up == 0);
+
+ this_section = what_section (input_text + input_text_offset);
+
+ /* If we are defaulting, then look at the immediately following
+ sectioning command (error if none) to determine the node's
+ level. Find the node that contains the menu mentioning this node
+ that is one level up (error if not found). That node is the "Up"
+ of this node. Default the "Next" and "Prev" from the menu. */
+ if (defaulting)
+ {
+ NODE_REF *last_ref = NULL;
+ NODE_REF *ref = node_references;
+
+ if (this_section < 0 && !STREQ (node, "Top"))
+ {
+ char *polite_section_name = "top";
+ int i;
+
+ for (i = 0; section_alist[i].name; i++)
+ if (section_alist[i].level == current_section + 1)
+ {
+ polite_section_name = section_alist[i].name;
+ break;
+ }
+
+ line_error
+ (_("Node `%s' requires a sectioning command (e.g. %c%s)"),
+ node, COMMAND_PREFIX, polite_section_name);
+ }
+ else
+ {
+ if (strcmp (node, "Top") == 0)
+ {
+ /* Default the NEXT pointer to be the first menu item in
+ this node, if there is a menu in this node. We have to
+ try very hard to find the menu, as it may be obscured
+ by execution_strings which are on the filestack. For
+ every member of the filestack which has a FILENAME
+ member which is identical to the current INPUT_FILENAME,
+ search forward from that offset. */
+ int saved_input_text_offset = input_text_offset;
+ int saved_input_text_length = input_text_length;
+ char *saved_input_text = input_text;
+ FSTACK *next_file = filestack;
+
+ int orig_offset, orig_size;
+
+ /* No matter what, make this file point back at `(dir)'. */
+ free (up);
+ up = xstrdup ("(dir)"); /* html fixxme */
+
+ while (1)
+ {
+ orig_offset = input_text_offset;
+ orig_size =
+ search_forward (node_search_string, orig_offset);
+
+ if (orig_size < 0)
+ orig_size = input_text_length;
+
+ input_text_offset = search_forward ("\n@menu", orig_offset);
+ if (input_text_offset > -1
+ && cr_or_whitespace (input_text[input_text_offset + 6]))
+ {
+ char *nodename_from_menu = NULL;
+
+ input_text_offset =
+ search_forward ("\n* ", input_text_offset);
+
+ if (input_text_offset != -1)
+ nodename_from_menu = glean_node_from_menu (0, 0);
+
+ if (nodename_from_menu)
+ {
+ free (next);
+ next = nodename_from_menu;
+ break;
+ }
+ }
+
+ /* We got here, so it hasn't been found yet. Try
+ the next file on the filestack if there is one. */
+ if (next_file
+ && FILENAME_CMP (next_file->filename, input_filename)
+ == 0)
+ {
+ input_text = next_file->text;
+ input_text_offset = next_file->offset;
+ input_text_length = next_file->size;
+ next_file = next_file->next;
+ }
+ else
+ { /* No more input files to check. */
+ break;
+ }
+ }
+
+ input_text = saved_input_text;
+ input_text_offset = saved_input_text_offset;
+ input_text_length = saved_input_text_length;
+ }
+ }
+
+ /* Fix the level of the menu references in the Top node, iff it
+ was declared with @top, and no subsequent reference was found. */
+ if (top_node_seen && !non_top_node_seen)
+ {
+ /* Then this is the first non-@top node seen. */
+ int level;
+
+ level = set_top_section_level (this_section - 1);
+ non_top_node_seen = 1;
+
+ while (ref)
+ {
+ if (ref->section == level)
+ ref->section = this_section - 1;
+ ref = ref->next;
+ }
+
+ ref = node_references;
+ }
+
+ while (ref)
+ {
+ if (ref->section == (this_section - 1)
+ && ref->type == menu_reference
+ && strcmp (ref->node, node) == 0)
+ {
+ char *containing_node = ref->containing_node;
+
+ free (up);
+ up = xstrdup (containing_node);
+
+ if (last_ref
+ && last_ref->type == menu_reference
+ && strcmp (last_ref->containing_node, containing_node) == 0)
+ {
+ free (next);
+ next = xstrdup (last_ref->node);
+ }
+
+ while (ref->section == this_section - 1
+ && ref->next
+ && ref->next->type != menu_reference)
+ ref = ref->next;
+
+ if (ref->next && ref->type == menu_reference
+ && strcmp (ref->next->containing_node, containing_node) == 0)
+ {
+ free (prev);
+ prev = xstrdup (ref->next->node);
+ }
+ else if (!ref->next
+ && strcasecmp (ref->containing_node, "Top") == 0)
+ {
+ free (prev);
+ prev = xstrdup (ref->containing_node);
+ }
+ break;
+ }
+ last_ref = ref;
+ ref = ref->next;
+ }
+ }
+
+ /* Insert the correct args if we are expanding macros, and the node's
+ pointers weren't defaulted. */
+ if (macro_expansion_output_stream && !executing_string && !defaulting)
+ {
+ char *temp;
+ int op_orig = output_paragraph_offset;
+ int meta_pos_orig = meta_char_pos;
+ int extra = html ? strlen (node) : 0;
+
+ temp = xmalloc (7 + extra + strlen (next) + strlen (prev) + strlen (up));
+ sprintf (temp, "%s, %s, %s, %s", html ? node : "", next, prev, up);
+ me_execute_string (temp);
+ free (temp);
+
+ output_paragraph_offset = op_orig;
+ meta_char_pos = meta_pos_orig;
+ }
+
+ if (!*node)
+ {
+ line_error (_("No node name specified for `%c%s' command"),
+ COMMAND_PREFIX, command);
+ free (node);
+ free (next); next = NULL;
+ free (prev); prev= NULL;
+ free (up); up = NULL;
+ node_number++; /* else it doesn't get bumped */
+ }
+ else
+ {
+ if (!*next) { free (next); next = NULL; }
+ if (!*prev) { free (prev); prev = NULL; }
+ if (!*up) { free (up); up = NULL; }
+ remember_node (node, prev, next, up, new_node_pos, line_number, no_warn);
+ outstanding_node = 1;
+ }
+
+ if (html)
+ {
+ char *tem;
+
+ if (splitting)
+ { /* this code not operational, we do not currently split html */
+ char filename[20];
+
+ sprintf (filename, "node%d.html", number_of_node (node));
+ output_stream = fopen (filename, "w");
+ if (output_stream == NULL)
+ {
+ fs_error (filename);
+ xexit (1);
+ }
+ set_current_output_filename (filename);
+ /* FIXME: when this code is operational, we will need to
+ expand node, next, prev, and up before output. */
+ add_word_args ("<html><head><title>%s</title>", node);
+ if (next) add_link (next, "rel=next");
+ if (prev) add_link (prev, "rel=previous");
+ if (up) add_link (up, "rel=up");
+ add_word ("</head>\n<body>\n");
+ }
+
+ if (!splitting && no_headers)
+ { /* cross refs need a name="#anchor" even if we're not writing headers*/
+ add_word ("<a name=\"");
+ tem = expand_node_name (node);
+ add_anchor_name (tem, 0);
+ add_word ("\"></a>");
+ free (tem);
+ }
+
+ if (splitting || !no_headers)
+ { /* Navigation bar. The <p> avoids the links area running
+ on with old Lynxen. */
+ add_word_args ("<p>%s\n", splitting ? "" : "<hr>");
+ add_word_args ("%s<a name=\"", _("Node:"));
+ tem = expand_node_name (node);
+ add_anchor_name (tem, 0);
+ add_word_args ("\">%s</a>", tem);
+ free (tem);
+
+ if (next)
+ {
+ add_word (",\n");
+ add_word (_("Next:"));
+ add_word ("<a rel=next href=\"");
+ tem = expansion (next, 0);
+ add_anchor_name (tem, 1);
+ add_word_args ("\">%s</a>", tem);
+ free (tem);
+ }
+ if (prev)
+ {
+ add_word (",\n");
+ add_word (_("Previous:"));
+ add_word ("<a rel=previous href=\"");
+ tem = expansion (prev, 0);
+ add_anchor_name (tem, 1);
+ add_word_args ("\">%s</a>", tem);
+ free (tem);
+ }
+ if (up)
+ {
+ add_word (",\n");
+ add_word (_("Up:"));
+ add_word ("<a rel=up href=\"");
+ tem = expansion (up, 0);
+ add_anchor_name (tem, 1);
+ add_word_args ("\">%s</a>", tem);
+ free (tem);
+ }
+ /* html fixxme: we want a `top' or `contents' link here. */
+
+ add_word_args ("\n%s<br>\n", splitting ? "<hr>" : "");
+ }
+ }
+
+ else if (!no_headers)
+ {
+ if (macro_expansion_output_stream)
+ me_inhibit_expansion++;
+
+ /* These strings are not translatable. */
+ if (next)
+ {
+ execute_string (", Next: %s", next);
+ filling_enabled = indented_fill = 0;
+ }
+ if (prev)
+ {
+ execute_string (", Prev: %s", prev);
+ filling_enabled = indented_fill = 0;
+ }
+ if (up)
+ {
+ execute_string (", Up: %s", up);
+ filling_enabled = indented_fill = 0;
+ }
+ if (macro_expansion_output_stream)
+ me_inhibit_expansion--;
+ }
+
+ close_paragraph ();
+ no_indent = 0;
+
+ /* Change the section only if there was a sectioning command. */
+ if (this_section >= 0)
+ current_section = this_section;
+
+ if (current_node && STREQ (current_node, "Top"))
+ top_node_seen = 1;
+
+ filling_enabled = 1;
+ in_fixed_width_font--;
+}
+
+/* Cross-reference target at an arbitrary spot. */
+void
+cm_anchor (arg)
+ int arg;
+{
+ char *anchor;
+
+ if (arg == END)
+ return;
+
+ /* Parse the anchor text. */
+ anchor = get_xref_token (1);
+
+ /* In HTML mode, need to actually produce some output. */
+ if (html)
+ {
+ /* If this anchor is at the beginning of a new paragraph, make
+ sure a new paragraph is indeed started. */
+ if (!paragraph_is_open)
+ {
+ start_paragraph ();
+ if (!in_fixed_width_font || in_menu || in_detailmenu)
+ {
+ insert_string ("<p>");
+ in_paragraph = 1;
+ }
+ }
+ add_word ("<a name=\"");
+ add_anchor_name (anchor, 0);
+ add_word ("\"></a>");
+ }
+
+ /* Save it in the tag table. */
+ remember_node (anchor, NULL, NULL, NULL, output_position + output_column,
+ line_number, TAG_FLAG_ANCHOR);
+}
+
+/* Find NODE in REF_LIST. */
+static NODE_REF *
+find_node_reference (node, ref_list)
+ char *node;
+ NODE_REF *ref_list;
+{
+ NODE_REF *orig_ref_list = ref_list;
+ char *expanded_node;
+
+ while (ref_list)
+ {
+ if (strcmp (node, ref_list->node) == 0)
+ break;
+ ref_list = ref_list->next;
+ }
+
+ if (ref_list || !expensive_validation)
+ return ref_list;
+
+ /* Maybe NODE is not expanded yet. This may be SLOW. */
+ expanded_node = expand_node_name (node);
+ for (ref_list = orig_ref_list; ref_list; ref_list = ref_list->next)
+ {
+ if (STREQ (expanded_node, ref_list->node))
+ break;
+ if (strchr (ref_list->node, COMMAND_PREFIX))
+ {
+ char *expanded_ref = expand_node_name (ref_list->node);
+
+ if (STREQ (expanded_node, expanded_ref))
+ {
+ free (expanded_ref);
+ break;
+ }
+ free (expanded_ref);
+ }
+ }
+ free (expanded_node);
+ return ref_list;
+}
+
+void
+free_node_references ()
+{
+ NODE_REF *list, *temp;
+
+ list = node_references;
+
+ while (list)
+ {
+ temp = list;
+ free (list->node);
+ free (list->containing_node);
+ list = list->next;
+ free (temp);
+ }
+ node_references = NULL;
+}
+
+void
+free_node_node_references ()
+{
+ NODE_REF *list, *temp;
+
+ list = node_references;
+
+ while (list)
+ {
+ temp = list;
+ free (list->node);
+ list = list->next;
+ free (temp);
+ }
+ node_node_references = NULL;
+}
+
+/* Return the number assigned to a named node in either the tag_table
+ or node_references list or zero if no number has been assigned. */
+int
+number_of_node (node)
+ char *node;
+{
+ NODE_REF *temp_ref;
+ TAG_ENTRY *temp_node = find_node (node);
+
+ if (temp_node)
+ return temp_node->number;
+ else if ((temp_ref = find_node_reference (node, node_references)))
+ return temp_ref->number;
+ else if ((temp_ref = find_node_reference (node, node_node_references)))
+ return temp_ref->number;
+ else
+ return 0;
+}
+
+/* validation */
+
+/* Return 1 if TAG (at LINE) correctly validated, or 0 if not.
+ LABEL is the (translated) description of the type of reference --
+ Menu, Cross, Next, etc. */
+
+static int
+validate (tag, line, label)
+ char *tag;
+ int line;
+ char *label;
+{
+ TAG_ENTRY *result;
+
+ /* If there isn't a tag to verify, or if the tag is in another file,
+ then it must be okay. */
+ if (!tag || !*tag || *tag == '(')
+ return 1;
+
+ /* Otherwise, the tag must exist. */
+ result = find_node (tag);
+
+ if (!result)
+ {
+ line_number = line;
+ line_error (_("%s reference to nonexistent node `%s'"), label, tag);
+ return 0;
+ }
+ result->touched++;
+ return 1;
+}
+
+/* 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 *
+reftype_type_string (type)
+ enum reftype type;
+{
+ switch (type)
+ {
+ case menu_reference:
+ return _("Menu");
+ case followed_reference:
+ return _("Cross");
+ default:
+ return "Internal-bad-reference-type";
+ }
+}
+
+static void
+validate_other_references (ref_list)
+ NODE_REF *ref_list;
+{
+ char *old_input_filename = input_filename;
+
+ while (ref_list)
+ {
+ input_filename = ref_list->filename;
+ validate (ref_list->node, ref_list->line_no,
+ reftype_type_string (ref_list->type));
+ ref_list = ref_list->next;
+ }
+ input_filename = old_input_filename;
+}
+
+/* Validation of an info file.
+ Scan through the list of tag entries touching the Prev, Next, and Up
+ elements of each. It is an error not to be able to touch one of them,
+ except in the case of external node references, such as "(DIR)".
+
+ If the Prev is different from the Up,
+ then the Prev node must have a Next pointing at this node.
+
+ Every node except Top must have an Up.
+ The Up node must contain some sort of reference, other than a Next,
+ to this node.
+
+ If the Next is different from the Next of the Up,
+ then the Next node must have a Prev pointing at this node. */
+void
+validate_file (tag_table)
+ TAG_ENTRY *tag_table;
+{
+ char *old_input_filename = input_filename;
+ TAG_ENTRY *tags = tag_table;
+
+ while (tags)
+ {
+ TAG_ENTRY *temp_tag;
+ char *tem1, *tem2;
+
+ input_filename = tags->filename;
+ line_number = tags->line_no;
+
+ /* If this is a "no warn" node, don't validate it in any way. */
+ if (tags->flags & TAG_FLAG_NO_WARN)
+ {
+ tags = tags->next_ent;
+ continue;
+ }
+
+ /* If this node has a Next, then make sure that the Next exists. */
+ if (tags->next)
+ {
+ validate (tags->next, tags->line_no, _("Next"));
+
+ /* If the Next node exists, and there is no Up, then make sure
+ that the Prev of the Next points back. But do nothing if
+ we aren't supposed to issue warnings about this node. */
+ temp_tag = find_node (tags->next);
+ if (temp_tag && !(temp_tag->flags & TAG_FLAG_NO_WARN))
+ {
+ char *prev = temp_tag->prev;
+ int you_lose = !prev || !STREQ (prev, tags->node);
+
+ if (you_lose && expensive_validation)
+ {
+ tem1 = expand_node_name (prev);
+ tem2 = expand_node_name (tags->node);
+
+ if (STREQ (tem1, tem2))
+ you_lose = 0;
+ free (tem1);
+ free (tem2);
+ }
+ if (you_lose)
+ {
+ line_error (_("Next field of node `%s' not pointed to"),
+ tags->node);
+ line_number = temp_tag->line_no;
+ input_filename = temp_tag->filename;
+ line_error (_("This node (%s) has the bad Prev"),
+ temp_tag->node);
+ input_filename = tags->filename;
+ line_number = tags->line_no;
+ temp_tag->flags |= TAG_FLAG_PREV_ERROR;
+ }
+ }
+ }
+
+ /* Validate the Prev field if there is one, and we haven't already
+ complained about it in some way. You don't have to have a Prev
+ field at this stage. */
+ if (!(tags->flags & TAG_FLAG_PREV_ERROR) && tags->prev)
+ {
+ int valid_p = validate (tags->prev, tags->line_no, _("Prev"));
+
+ if (!valid_p)
+ tags->flags |= TAG_FLAG_PREV_ERROR;
+ else
+ { /* If the Prev field is not the same as the Up field,
+ then the node pointed to by the Prev field must have
+ a Next field which points to this node. */
+ int prev_equals_up = !tags->up || STREQ (tags->prev, tags->up);
+
+ if (!prev_equals_up && expensive_validation)
+ {
+ tem1 = expand_node_name (tags->prev);
+ tem2 = expand_node_name (tags->up);
+ prev_equals_up = STREQ (tem1, tem2);
+ free (tem1);
+ free (tem2);
+ }
+ if (!prev_equals_up)
+ {
+ temp_tag = find_node (tags->prev);
+
+ /* If we aren't supposed to issue warnings about the
+ target node, do nothing. */
+ if (!temp_tag || (temp_tag->flags & TAG_FLAG_NO_WARN))
+ /* Do nothing. */ ;
+ else
+ {
+ int you_lose = !temp_tag->next
+ || !STREQ (temp_tag->next, tags->node);
+
+ if (temp_tag->next && you_lose && expensive_validation)
+ {
+ tem1 = expand_node_name (temp_tag->next);
+ tem2 = expand_node_name (tags->node);
+ if (STREQ (tem1, tem2))
+ you_lose = 0;
+ free (tem1);
+ free (tem2);
+ }
+ if (you_lose)
+ {
+ line_error
+ (_("Prev field of node `%s' not pointed to"),
+ tags->node);
+ line_number = temp_tag->line_no;
+ input_filename = temp_tag->filename;
+ line_error (_("This node (%s) has the bad Next"),
+ temp_tag->node);
+ input_filename = tags->filename;
+ line_number = tags->line_no;
+ temp_tag->flags |= TAG_FLAG_NEXT_ERROR;
+ }
+ }
+ }
+ }
+ }
+
+ if (!tags->up
+ && !(tags->flags & TAG_FLAG_ANCHOR)
+ && strcasecmp (tags->node, "Top") != 0)
+ line_error (_("`%s' has no Up field"), tags->node);
+ else if (tags->up)
+ {
+ int valid_p = validate (tags->up, tags->line_no, _("Up"));
+
+ /* If node X has Up: Y, then warn if Y fails to have a menu item
+ or note pointing at X, if Y isn't of the form "(Y)". */
+ if (valid_p && *tags->up != '(')
+ {
+ NODE_REF *nref;
+ NODE_REF *tref = NULL;
+ NODE_REF *list = node_references;
+
+ for (;;)
+ {
+ nref = find_node_reference (tags->node, list);
+ if (!nref)
+ break;
+
+ if (strcmp (nref->containing_node, tags->up) == 0)
+ {
+ if (nref->type != menu_reference)
+ {
+ tref = nref;
+ list = nref->next;
+ }
+ else
+ break;
+ }
+ list = nref->next;
+ }
+
+ if (!nref)
+ {
+ if (!tref && expensive_validation)
+ {
+ /* Sigh... This might be AWFULLY slow, but if
+ they want this feature, they'll have to pay!
+ We do all the loop again expanding each
+ containing_node reference as we go. */
+ char *tags_up = expand_node_name (tags->up);
+ char *tem;
+
+ list = node_references;
+
+ for (;;)
+ {
+ nref = find_node_reference (tags->node, list);
+ if (!nref)
+ break;
+ tem = expand_node_name (nref->containing_node);
+ if (STREQ (tem, tags_up))
+ {
+ if (nref->type != menu_reference)
+ tref = nref;
+ else
+ {
+ free (tem);
+ break;
+ }
+ }
+ free (tem);
+ list = nref->next;
+ }
+ }
+ if (!nref && !tref)
+ {
+ temp_tag = find_node (tags->up);
+ line_number = temp_tag->line_no;
+ input_filename = temp_tag->filename;
+ line_error (
+ _("Node `%s' lacks menu item for `%s' despite being its Up target"),
+ tags->up, tags->node);
+ line_number = tags->line_no;
+ input_filename = tags->filename;
+ }
+ }
+ }
+ }
+ tags = tags->next_ent;
+ }
+
+ validate_other_references (node_references);
+ /* We have told the user about the references which didn't exist.
+ Now tell him about the nodes which aren't referenced. */
+
+ for (tags = tag_table; tags; tags = tags->next_ent)
+ {
+ /* If this node is a "no warn" node, do nothing. */
+ if (tags->flags & TAG_FLAG_NO_WARN)
+ {
+ tags = tags->next_ent;
+ continue;
+ }
+
+ /* Special hack. If the node in question appears to have
+ been referenced more than REFERENCE_WARNING_LIMIT times,
+ give a warning. */
+ if (tags->touched > reference_warning_limit)
+ {
+ input_filename = tags->filename;
+ line_number = tags->line_no;
+ warning (_("node `%s' has been referenced %d times"),
+ tags->node, tags->touched);
+ }
+
+ if (tags->touched == 0)
+ {
+ input_filename = tags->filename;
+ line_number = tags->line_no;
+
+ /* Notice that the node "Top" is special, and doesn't have to
+ be referenced. Anchors don't have to be referenced
+ either, you might define them for another document. */
+ if (strcasecmp (tags->node, "Top") != 0
+ && !(tags->flags & TAG_FLAG_ANCHOR))
+ warning (_("unreferenced node `%s'"), tags->node);
+ }
+ }
+ input_filename = old_input_filename;
+}
+
+
+/* Splitting */
+
+/* Return true if the tag entry pointed to by TAGS is the last node.
+ This means only anchors follow. */
+
+static int
+last_node_p (tags)
+ TAG_ENTRY *tags;
+{
+ int last = 1;
+ while (tags->next_ent) {
+ tags = tags->next_ent;
+ if (tags->flags & TAG_FLAG_ANCHOR)
+ ;
+ else
+ {
+ last = 0;
+ break;
+ }
+ }
+
+ return last;
+}
+
+
+/* Split large output files into a series of smaller files. Each file
+ is pointed to in the tag table, which then gets written out as the
+ original file. The new files have the same name as the original file
+ with a "-num" attached. SIZE is the largest number of bytes to allow
+ in any single split file. */
+void
+split_file (filename, size)
+ char *filename;
+ int size;
+{
+ char *root_filename, *root_pathname;
+ char *the_file, *filename_part ();
+ struct stat fileinfo;
+ long file_size;
+ char *the_header;
+ int header_size;
+ int dos_file_names = 0; /* if nonzero, don't exceed 8+3 limits */
+
+ /* Can only do this to files with tag tables. */
+ if (!tag_table)
+ return;
+
+ if (size == 0)
+ size = DEFAULT_SPLIT_SIZE;
+
+ if ((stat (filename, &fileinfo) != 0) ||
+ (((long) fileinfo.st_size) < SPLIT_SIZE_THRESHOLD))
+ return;
+ file_size = (long) fileinfo.st_size;
+
+ the_file = find_and_load (filename);
+ if (!the_file)
+ return;
+
+ root_filename = filename_part (filename);
+ root_pathname = pathname_part (filename);
+
+ /* Do we need to generate names of subfiles which don't exceed 8+3 limits? */
+ dos_file_names = !HAVE_LONG_FILENAMES (root_pathname ? root_pathname : ".");
+
+ if (!root_pathname)
+ root_pathname = xstrdup ("");
+
+ /* Start splitting the file. Walk along the tag table
+ outputting sections of the file. When we have written
+ all of the nodes in the tag table, make the top-level
+ pointer file, which contains indirect pointers and
+ tags for the nodes. */
+ {
+ int which_file = 1;
+ TAG_ENTRY *tags = tag_table;
+ char *indirect_info = NULL;
+
+ /* 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));
+ memcpy (the_header, the_file, header_size);
+
+ while (tags)
+ {
+ int file_top, file_bot, limit;
+
+ /* Have to include the Control-_. */
+ file_top = file_bot = tags->position;
+ limit = file_top + size;
+
+ /* If the rest of this file is only one node, then
+ that is the entire subfile. */
+ if (last_node_p (tags))
+ {
+ int i = tags->position + 1;
+ char last_char = the_file[i];
+
+ while (i < file_size)
+ {
+ if ((the_file[i] == '\037') &&
+ ((last_char == '\n') ||
+ (last_char == '\014')))
+ break;
+ else
+ last_char = the_file[i];
+ i++;
+ }
+ file_bot = i;
+ tags = tags->next_ent;
+ goto write_region;
+ }
+
+ /* Otherwise, find the largest number of nodes that can fit in
+ this subfile. */
+ for (; tags; tags = tags->next_ent)
+ {
+ if (last_node_p (tags))
+ {
+ /* This entry is the last node. Search forward for the end
+ of this node, and that is the end of this file. */
+ int i = tags->position + 1;
+ char last_char = the_file[i];
+
+ while (i < file_size)
+ {
+ if ((the_file[i] == '\037') &&
+ ((last_char == '\n') ||
+ (last_char == '\014')))
+ break;
+ else
+ last_char = the_file[i];
+ i++;
+ }
+ file_bot = i;
+
+ if (file_bot < limit)
+ {
+ tags = tags->next_ent;
+ goto write_region;
+ }
+ else
+ {
+ /* Here we want to write out everything before the last
+ node, and then write the last node out in a file
+ by itself. */
+ file_bot = tags->position;
+ goto write_region;
+ }
+ }
+
+ /* Write region only if this was a node, not an anchor. */
+ if (tags->next_ent->position > limit
+ && !(tags->flags & TAG_FLAG_ANCHOR))
+ {
+ if (tags->position == file_top)
+ tags = tags->next_ent;
+
+ file_bot = tags->position;
+
+ write_region:
+ {
+ int fd;
+ char *split_filename, *split_basename;
+ unsigned root_len = strlen (root_filename);
+
+ split_filename = xmalloc (10 + strlen (root_pathname)
+ + root_len);
+ split_basename = xmalloc (10 + root_len);
+ sprintf (split_basename, "%s-%d", root_filename, which_file);
+ if (dos_file_names)
+ {
+ char *dot = strchr (split_basename, '.');
+ unsigned base_len = strlen (split_basename);
+
+ if (dot)
+ { /* Make foobar.i1, .., foobar.i99, foobar.100, ... */
+ dot[1] = 'i';
+ memmove (which_file <= 99 ? dot + 2 : dot + 1,
+ split_basename + root_len + 1,
+ strlen (split_basename + root_len + 1) + 1);
+ }
+ else if (base_len > 8)
+ {
+ /* Make foobar-1, .., fooba-10, .., foob-100, ... */
+ unsigned numlen = base_len - root_len;
+
+ memmove (split_basename + 8 - numlen,
+ split_basename + root_len, numlen + 1);
+ }
+ }
+ sprintf (split_filename, "%s%s", root_pathname,
+ split_basename);
+
+ fd = open (split_filename, O_WRONLY|O_TRUNC|O_CREAT, 0666);
+ if (fd < 0
+ || 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)
+ {
+ perror (split_filename);
+ if (fd != -1)
+ close (fd);
+ xexit (1);
+ }
+
+ if (!indirect_info)
+ {
+ indirect_info = the_file + file_top;
+ sprintf (indirect_info, "\037\nIndirect:\n");
+ indirect_info += strlen (indirect_info);
+ }
+
+ sprintf (indirect_info, "%s: %d\n",
+ split_basename, file_top);
+
+ free (split_basename);
+ free (split_filename);
+ indirect_info += strlen (indirect_info);
+ which_file++;
+ break;
+ }
+ }
+ }
+ }
+
+ /* We have sucessfully created the subfiles. Now write out the
+ original again. We must use `output_stream', or
+ write_tag_table_indirect () won't know where to place the output. */
+ output_stream = fopen (filename, "w");
+ if (!output_stream)
+ {
+ perror (filename);
+ xexit (1);
+ }
+
+ {
+ int distance = indirect_info - the_file;
+ fwrite (the_file, 1, distance, output_stream);
+
+ /* Inhibit newlines. */
+ paragraph_is_open = 0;
+
+ write_tag_table_indirect ();
+ fclose (output_stream);
+ free (the_header);
+ free (the_file);
+ return;
+ }
+ }
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/node.h b/gnu/usr.bin/texinfo/makeinfo/node.h
new file mode 100644
index 00000000000..3539f88f480
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/node.h
@@ -0,0 +1,111 @@
+/* node.h -- declarations for Node.
+ $Id: node.h,v 1.1.1.1 2000/02/09 01:25:30 espie Exp $
+
+ Copyright (C) 1996, 97, 98, 99 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Brian Fox (bfox@ai.mit.edu). */
+
+#ifndef NODE_H
+#define NODE_H
+
+/* The various references that we know about. */
+/* What we remember for each node. */
+typedef struct tentry
+{
+ struct tentry *next_ent;
+ char *node; /* Name of this node. */
+ char *prev; /* Name of "Prev:" for this node. */
+ char *next; /* Name of "Next:" for this node. */
+ char *up; /* Name of "Up:" for this node. */
+ int position; /* Output file position of this node. */
+ int line_no; /* Defining line in source file. */
+ char *filename; /* The file that this node was found in. */
+ int touched; /* Nonzero means this node has been referenced. */
+ int flags;
+ int number; /* Number for this node, relevant for HTML
+ splitting -- from use+define order, not just
+ define. */
+} TAG_ENTRY;
+
+/* If node-a has a "Next" for node-b, but node-b has no "Prev" for node-a,
+ we turn on this flag bit in node-b's tag entry. This means that when
+ it is time to validate node-b, we don't report an additional error
+ if there was no "Prev" field. */
+#define TAG_FLAG_PREV_ERROR 1
+#define TAG_FLAG_NEXT_ERROR 2
+#define TAG_FLAG_UP_ERROR 4
+#define TAG_FLAG_NO_WARN 8
+#define TAG_FLAG_IS_TOP 16
+#define TAG_FLAG_ANCHOR 32
+
+/* Menu reference, *note reference, and validation hacking. */
+
+/* A structure to remember references with. A reference to a node is
+ either an entry in a menu, or a cross-reference made with [px]ref. */
+typedef struct node_ref
+{
+ struct node_ref *next;
+ char *node; /* Name of node referred to. */
+ char *containing_node; /* Name of node containing this reference. */
+ int line_no; /* Line number where the reference occurs. */
+ int section; /* Section level where the reference occurs. */
+ char *filename; /* Name of file where the reference occurs. */
+ enum reftype type; /* Type of reference, either menu or note. */
+ int number; /* Number for this node, relevant for
+ HTML splitting -- from use+define
+ order, not just define. */
+} NODE_REF;
+
+/* The linked list of such structures. */
+extern NODE_REF *node_references;
+
+/* A similar list for references occuring in @node next
+ and similar references, needed for HTML. */
+extern NODE_REF *node_node_references;
+
+/* List of all nodes. */
+extern TAG_ENTRY *tag_table;
+
+/* Counter for setting node_ref.number; zero is Top. */
+extern int node_number;
+
+/* The current node's section level. */
+extern int current_section;
+
+/* Nonzero when the next sectioning command should generate an anchor
+ corresponding to the current node in HTML mode. */
+extern int outstanding_node;
+
+extern TAG_ENTRY *find_node ();
+
+/* A search string which is used to find a line defining a node. */
+DECLARE (char *, node_search_string, "\n@node ");
+
+/* Extract node name from a menu item. */
+extern char *glean_node_from_menu ();
+
+/* Remember a node for later validation. */
+extern void remember_node_reference ();
+
+/* Remember the name of the current output file. */
+extern void set_current_output_filename ();
+
+/* Expand macros and commands in the node name and canonicalize
+ whitespace in the resulting expansion. */
+extern char *expand_node_name ();
+
+#endif /* NODE_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/sectioning.c b/gnu/usr.bin/texinfo/makeinfo/sectioning.c
new file mode 100644
index 00000000000..5ec18dfd5b0
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/sectioning.c
@@ -0,0 +1,691 @@
+/* sectioning.c -- all related stuff @chapter, @section... @contents
+ $Id: sectioning.c,v 1.1.1.1 2000/02/09 01:25:31 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#include "system.h"
+#include "cmds.h"
+#include "macro.h"
+#include "makeinfo.h"
+#include "node.h"
+#include "toc.h"
+#include "sectioning.h"
+
+/* See comment in sectioning.h. */
+section_alist_type section_alist[] = {
+ { "unnumberedsubsubsec", 5, ENUM_SECT_NO, TOC_YES },
+ { "unnumberedsubsec", 4, ENUM_SECT_NO, TOC_YES },
+ { "unnumberedsec", 3, ENUM_SECT_NO, TOC_YES },
+ { "unnumbered", 2, ENUM_SECT_NO, TOC_YES },
+
+ { "appendixsubsubsec", 5, ENUM_SECT_APP, TOC_YES }, /* numbered like A.X.X.X */
+ { "appendixsubsec", 4, ENUM_SECT_APP, TOC_YES },
+ { "appendixsec", 3, ENUM_SECT_APP, TOC_YES },
+ { "appendixsection", 3, ENUM_SECT_APP, TOC_YES },
+ { "appendix", 2, ENUM_SECT_APP, TOC_YES },
+
+ { "subsubsec", 5, ENUM_SECT_YES, TOC_YES },
+ { "subsubsection", 5, ENUM_SECT_YES, TOC_YES },
+ { "subsection", 4, ENUM_SECT_YES, TOC_YES },
+ { "section", 3, ENUM_SECT_YES, TOC_YES },
+ { "chapter", 2, ENUM_SECT_YES, TOC_YES },
+
+ { "subsubheading", 5, ENUM_SECT_NO, TOC_NO },
+ { "subheading", 4, ENUM_SECT_NO, TOC_NO },
+ { "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 }
+};
+
+/* The argument of @settitle, used for HTML. */
+char *title = NULL;
+
+
+#define APPENDIX_MAGIC 1024
+#define UNNUMBERED_MAGIC 2048
+
+/* Number memory for every level @chapter, @section,
+ @subsection, @subsubsection. */
+static int numbers [] = { 0, 0, 0, 0 };
+
+/* enum_marker == APPENDIX_MAGIC then we are counting appendencies
+ enum_marker == UNNUMBERED_MAGIC then we are within unnumbered area.
+ Handling situations like this:
+ @unnumbered ..
+ @section ... */
+static int enum_marker = 0;
+
+/* Organized by level commands. That is, "*" == chapter, "=" == section. */
+static char *scoring_characters = "*=-.";
+
+/* Amount to offset the name of sectioning commands to levels by. */
+static int section_alist_offset = 0;
+
+
+/* num == ENUM_SECT_NO means unnumbered (should never call this)
+ num == ENUM_SECT_YES means numbered
+ num == ENUM_SECT_APP means numbered like A.1 and so on */
+char *
+get_sectioning_number (level, num)
+ int level;
+ int num;
+{
+ static char s[100]; /* should ever be enough for 99.99.99.99
+ Appendix A.1 */
+
+ char *p;
+ int i;
+
+ s[0] = 0;
+
+ /* create enumeration in front of chapter, section, subsection and so on. */
+ for (i = 0; i < level; i++)
+ {
+ p = s + strlen (s);
+ if ((i == 0) && (enum_marker == APPENDIX_MAGIC))
+ sprintf (p, "%c.", numbers[i] + 64); /* Should be changed to
+ be more portable */
+ else
+ sprintf (p, "%d.", numbers[i]);
+ }
+
+ /* the last number is never followed by a dot */
+ p = s + strlen (s);
+ if ((num == ENUM_SECT_APP)
+ && (i == 0)
+ && (enum_marker == APPENDIX_MAGIC))
+ sprintf (p, _("Appendix %c "), numbers[i] + 64);
+ else
+ sprintf (p, "%d ", numbers[i]);
+
+ return s;
+}
+
+
+/* Set the level of @top to LEVEL. Return the old level of @top. */
+int
+set_top_section_level (level)
+ int level;
+{
+ int i, result = -1;
+
+ for (i = 0; section_alist[i].name; i++)
+ if (strcmp (section_alist[i].name, "top") == 0)
+ {
+ result = section_alist[i].level;
+ section_alist[i].level = level;
+ break;
+ }
+ return result;
+}
+
+
+/* return the index of the given sectioning command in section_alist */
+int
+search_sectioning (text)
+ char *text;
+{
+ int i;
+ char *t;
+
+ /* 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)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+/* Return an integer which identifies the type section present in TEXT. */
+int
+what_section (text)
+ char *text;
+{
+ int index, j;
+ char *temp;
+ int return_val;
+
+ find_section_command:
+ for (j = 0; text[j] && cr_or_whitespace (text[j]); j++);
+ if (text[j] != COMMAND_PREFIX)
+ return -1;
+
+ text = text + j + 1;
+
+ /* We skip @c, @comment, and @?index commands. */
+ if ((strncmp (text, "comment", strlen ("comment")) == 0) ||
+ (text[0] == 'c' && cr_or_whitespace (text[1])) ||
+ (strcmp (text + 1, "index") == 0))
+ {
+ while (*text++ != '\n');
+ goto find_section_command;
+ }
+
+ /* Handle italicized sectioning commands. */
+ if (*text == 'i')
+ text++;
+
+ for (j = 0; text[j] && !cr_or_whitespace (text[j]); j++);
+
+ temp = xmalloc (1 + j);
+ strncpy (temp, text, j);
+ temp[j] = 0;
+
+ index = search_sectioning (temp);
+ free (temp);
+ if (index >= 0)
+ {
+ return_val = section_alist[index].level + section_alist_offset;
+ if (return_val < 0)
+ return_val = 0;
+ else if (return_val > 5)
+ return_val = 5;
+ return return_val;
+ }
+ return -1;
+}
+
+
+void
+sectioning_underscore (cmd)
+ char *cmd;
+{
+ char character;
+ char *temp;
+ int level;
+
+ temp = xmalloc (2 + strlen (cmd));
+ temp[0] = COMMAND_PREFIX;
+ strcpy (&temp[1], cmd);
+ level = what_section (temp);
+ free (temp);
+ level -= 2;
+
+ if (level < 0)
+ level = 0;
+
+ if (html)
+ sectioning_html (level, cmd);
+ else
+ {
+ character = scoring_characters[level];
+ insert_and_underscore (level, character, cmd);
+ }
+}
+
+/* insert_and_underscore and sectioning_html are the
+ only functions which call this.
+ I have created this, because it was exactly the same
+ code in both functions. */
+static char *
+handle_enum_increment (level, index)
+ int level;
+ int index;
+{
+ /* special for unnumbered */
+ if (number_sections && section_alist[index].num == ENUM_SECT_NO)
+ {
+ if (level == 0
+ && enum_marker != UNNUMBERED_MAGIC)
+ enum_marker = UNNUMBERED_MAGIC;
+ }
+ /* enumerate only things which are allowed */
+ if (number_sections && section_alist[index].num)
+ {
+ /* reset the marker if we get into enumerated areas */
+ if (section_alist[index].num == ENUM_SECT_YES
+ && level == 0
+ && enum_marker == UNNUMBERED_MAGIC)
+ enum_marker = 0;
+ /* This is special for appendix; if we got the first
+ time an appendix command then we are entering appendix.
+ Thats the point we have to start countint with A, B and so on. */
+ if (section_alist[index].num == ENUM_SECT_APP
+ && level == 0
+ && enum_marker != APPENDIX_MAGIC)
+ {
+ enum_marker = APPENDIX_MAGIC;
+ numbers [0] = 0; /* this means we start with Appendix A */
+ }
+
+ /* only increment counters if we are not in unnumbered
+ area. This handles situations like this:
+ @unnumbered .... This sets enum_marker to UNNUMBERED_MAGIC
+ @section .... */
+ if (enum_marker != UNNUMBERED_MAGIC)
+ {
+ int i;
+
+ /* 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));
+ }
+ } /* if (number_sections)... */
+
+ return xstrdup ("");
+}
+
+
+/* Insert the text following input_text_offset up to the end of the line
+ in a new, separate paragraph. Directly underneath it, insert a
+ line of WITH_CHAR, the same length of the inserted text. */
+void
+insert_and_underscore (level, with_char, cmd)
+ int level;
+ int with_char;
+ char *cmd;
+{
+ int i, len;
+ int index;
+ int old_no_indent;
+ unsigned char *starting_pos, *ending_pos;
+ char *temp;
+
+ close_paragraph ();
+ filling_enabled = indented_fill = 0;
+ old_no_indent = no_indent;
+ no_indent = 1;
+
+ if (macro_expansion_output_stream && !executing_string)
+ append_to_expansion_output (input_text_offset + 1);
+
+ get_rest_of_line (0, &temp);
+ starting_pos = output_paragraph + output_paragraph_offset;
+
+ index = search_sectioning (cmd);
+ if (index < 0)
+ {
+ /* should never happen, but a poor guy, named Murphy ... */
+ warning (_("Internal error (search_sectioning) \"%s\"!"), cmd);
+ return;
+ }
+
+ /* This is a bit tricky: we must produce "X.Y SECTION-NAME" in the
+ Info output and in TOC, but only SECTION-NAME in the macro-expanded
+ output. */
+
+ /* Step 1: produce "X.Y" and add it to Info output. */
+ add_word (handle_enum_increment (level, index));
+
+ /* Step 2: add "SECTION-NAME" to both Info and macro-expanded output. */
+ if (macro_expansion_output_stream && !executing_string)
+ {
+ char *temp1 = xmalloc (2 + strlen (temp));
+ sprintf (temp1, "%s\n", temp);
+ remember_itext (input_text, input_text_offset);
+ me_execute_string (temp1);
+ free (temp1);
+ }
+ else
+ execute_string ("%s\n", temp);
+
+ /* Step 3: pluck "X.Y SECTION-NAME" from the output buffer and
+ insert it into the TOC. */
+ ending_pos = output_paragraph + output_paragraph_offset;
+ if (section_alist[index].toc == TOC_YES)
+ toc_add_entry (substring (starting_pos, ending_pos - 1),
+ level, current_node, NULL);
+
+ free (temp);
+
+ len = (ending_pos - starting_pos) - 1;
+ for (i = 0; i < len; i++)
+ add_char (with_char);
+ insert ('\n');
+ close_paragraph ();
+ filling_enabled = 1;
+ no_indent = old_no_indent;
+}
+
+/* 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;
+ char *cmd;
+{
+ static int toc_ref_count = 0;
+ int index;
+ int old_no_indent;
+ unsigned char *starting_pos, *ending_pos;
+ char *temp, *toc_anchor = NULL;
+
+ close_paragraph ();
+ filling_enabled = indented_fill = 0;
+ old_no_indent = no_indent;
+ no_indent = 1;
+
+ add_word_args ("<h%d>", level + 1); /* level 0 is <h1> */
+
+ /* If we are outside of any node, produce an anchor that
+ the TOC could refer to. */
+ if (!current_node || !*current_node)
+ {
+ starting_pos = output_paragraph + output_paragraph_offset;
+ add_word_args ("<a name=\"TOC%d\">", toc_ref_count++);
+ toc_anchor = substring (starting_pos + 9,
+ output_paragraph + output_paragraph_offset);
+ }
+ starting_pos = output_paragraph + output_paragraph_offset;
+
+ if (macro_expansion_output_stream && !executing_string)
+ append_to_expansion_output (input_text_offset + 1);
+
+ get_rest_of_line (0, &temp);
+
+ index = search_sectioning (cmd);
+ if (index < 0)
+ {
+ /* should never happen, but a poor guy, named Murphy ... */
+ warning (_("Internal error (search_sectioning) \"%s\"!"), cmd);
+ return;
+ }
+
+ /* Produce "X.Y" and add it to HTML output. */
+ add_word (handle_enum_increment (level, index));
+
+ /* add the section name to both HTML and macro-expanded output. */
+ if (macro_expansion_output_stream && !executing_string)
+ {
+ remember_itext (input_text, input_text_offset);
+ me_execute_string (temp);
+ write_region_to_macro_output ("\n", 0, 1);
+ }
+ else
+ execute_string ("%s", temp);
+
+ ending_pos = output_paragraph + output_paragraph_offset;
+
+ /* Pluck ``X.Y SECTION-NAME'' from the output buffer and insert it
+ into the TOC. */
+ if (section_alist[index].toc == TOC_YES)
+ toc_add_entry (substring (starting_pos, ending_pos),
+ level, current_node, toc_anchor);
+
+ free (temp);
+
+ if (outstanding_node)
+ outstanding_node = 0;
+
+ add_word_args ("</h%d>", level+1);
+ close_paragraph();
+ filling_enabled = 1;
+ no_indent = old_no_indent;
+}
+
+
+/* Shift the meaning of @section to @chapter. */
+void
+cm_raisesections ()
+{
+ discard_until ("\n");
+ section_alist_offset--;
+}
+
+/* Shift the meaning of @chapter to @section. */
+void
+cm_lowersections ()
+{
+ discard_until ("\n");
+ section_alist_offset++;
+}
+
+/* The command still works, but prints a warning message in addition. */
+void
+cm_ideprecated (arg, start, end)
+ int arg, start, end;
+{
+ warning (_("%c%s is obsolete; use %c%s instead"),
+ COMMAND_PREFIX, command, COMMAND_PREFIX, command + 1);
+ sectioning_underscore (command + 1);
+}
+
+
+/* Treat this just like @unnumbered. The only difference is
+ in node defaulting. */
+void
+cm_top ()
+{
+ /* It is an error to have more than one @top. */
+ if (top_node_seen && strcmp (current_node, "Top") != 0)
+ {
+ TAG_ENTRY *tag = tag_table;
+
+ line_error (_("Node with %ctop as a section already exists"),
+ COMMAND_PREFIX);
+
+ while (tag)
+ {
+ if (tag->flags & TAG_FLAG_IS_TOP)
+ {
+ int old_line_number = line_number;
+ char *old_input_filename = input_filename;
+
+ line_number = tag->line_no;
+ input_filename = tag->filename;
+ line_error (_("Here is the %ctop node"), COMMAND_PREFIX);
+ input_filename = old_input_filename;
+ line_number = old_line_number;
+ return;
+ }
+ tag = tag->next_ent;
+ }
+ }
+ else
+ {
+ TAG_ENTRY *top_node = find_node ("Top");
+ top_node_seen = 1;
+
+ /* It is an error to use @top before you have used @node. */
+ if (!tag_table)
+ {
+ char *top_name;
+
+ get_rest_of_line (0, &top_name);
+ line_error (_("%ctop used before %cnode, defaulting to %s"),
+ COMMAND_PREFIX, COMMAND_PREFIX, top_name);
+ execute_string ("@node Top, , (dir), (dir)\n@top %s\n", top_name);
+ free (top_name);
+ return;
+ }
+ else if (html && splitting)
+ {
+ char *next = top_node ? top_node->next : NULL;
+
+ add_word ("<p>");
+ if (next)
+ {
+ add_word (_("Next:"));
+ add_word ("<a rel=next href=\"");
+ add_anchor_name (next, 1);
+ add_word ("\">");
+ execute_string (next);
+ add_word ("</a>\n");
+ }
+ }
+
+ cm_unnumbered ();
+
+ /* The most recently defined node is the top node. */
+ tag_table->flags |= TAG_FLAG_IS_TOP;
+
+ /* Now set the logical hierarchical level of the Top node. */
+ {
+ int orig_offset = input_text_offset;
+
+ input_text_offset = search_forward (node_search_string, orig_offset);
+
+ if (input_text_offset > 0)
+ {
+ int this_section;
+
+ /* We have encountered a non-top node, so mark that one exists. */
+ non_top_node_seen = 1;
+
+ /* Move to the end of this line, and find out what the
+ sectioning command is here. */
+ while (input_text[input_text_offset] != '\n')
+ input_text_offset++;
+
+ if (input_text_offset < input_text_length)
+ input_text_offset++;
+
+ this_section = what_section (input_text + input_text_offset);
+
+ /* If we found a sectioning command, then give the top section
+ a level of this section - 1. */
+ if (this_section != -1)
+ set_top_section_level (this_section - 1);
+ }
+ input_text_offset = orig_offset;
+ }
+ }
+}
+
+/* The remainder of the text on this line is a chapter heading. */
+void
+cm_chapter ()
+{
+ sectioning_underscore ("chapter");
+}
+
+/* The remainder of the text on this line is a section heading. */
+void
+cm_section ()
+{
+ sectioning_underscore ("section");
+}
+
+/* The remainder of the text on this line is a subsection heading. */
+void
+cm_subsection ()
+{
+ sectioning_underscore ("subsection");
+}
+
+/* The remainder of the text on this line is a subsubsection heading. */
+void
+cm_subsubsection ()
+{
+ sectioning_underscore ("subsubsection");
+}
+
+/* The remainder of the text on this line is an unnumbered heading. */
+void
+cm_unnumbered ()
+{
+ sectioning_underscore ("unnumbered");
+}
+
+/* The remainder of the text on this line is an unnumbered section heading. */
+void
+cm_unnumberedsec ()
+{
+ sectioning_underscore ("unnumberedsec");
+}
+
+/* The remainder of the text on this line is an unnumbered
+ subsection heading. */
+void
+cm_unnumberedsubsec ()
+{
+ sectioning_underscore ("unnumberedsubsec");
+}
+
+/* The remainder of the text on this line is an unnumbered
+ subsubsection heading. */
+void
+cm_unnumberedsubsubsec ()
+{
+ sectioning_underscore ("unnumberedsubsubsec");
+}
+
+/* The remainder of the text on this line is an appendix heading. */
+void
+cm_appendix ()
+{
+ sectioning_underscore ("appendix");
+}
+
+/* The remainder of the text on this line is an appendix section heading. */
+void
+cm_appendixsec ()
+{
+ sectioning_underscore ("appendixsec");
+}
+
+/* The remainder of the text on this line is an appendix subsection heading. */
+void
+cm_appendixsubsec ()
+{
+ sectioning_underscore ("appendixsubsec");
+}
+
+/* The remainder of the text on this line is an appendix
+ subsubsection heading. */
+void
+cm_appendixsubsubsec ()
+{
+ sectioning_underscore ("appendixsubsubsec");
+}
+
+/* Compatibility functions substitute for chapter, section, etc. */
+void
+cm_majorheading ()
+{
+ sectioning_underscore ("majorheading");
+}
+
+void
+cm_chapheading ()
+{
+ sectioning_underscore ("chapheading");
+}
+
+void
+cm_heading ()
+{
+ sectioning_underscore ("heading");
+}
+
+void
+cm_subheading ()
+{
+ sectioning_underscore ("subheading");
+}
+
+void
+cm_subsubheading ()
+{
+ sectioning_underscore ("subsubheading");
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/sectioning.h b/gnu/usr.bin/texinfo/makeinfo/sectioning.h
new file mode 100644
index 00000000000..2941088f1f3
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/sectioning.h
@@ -0,0 +1,80 @@
+/* sectioning.h -- all related stuff @chapter, @section... @contents
+ $Id: sectioning.h,v 1.1.1.1 2000/02/09 01:25:31 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#ifndef SECTIONING_H
+#define SECTIONING_H
+
+/* Sectioning. */
+extern void
+ cm_chapter (), cm_unnumbered (), cm_appendix (), cm_top (),
+ cm_section (), cm_unnumberedsec (), cm_appendixsec (),
+ cm_subsection (), cm_unnumberedsubsec (), cm_appendixsubsec (),
+ cm_subsubsection (), cm_unnumberedsubsubsec (), cm_appendixsubsubsec (),
+ cm_heading (), cm_chapheading (), cm_subheading (), cm_subsubheading (),
+ cm_majorheading (), cm_raisesections (), cm_lowersections (),
+
+ cm_ideprecated ();
+
+extern void
+ sectioning_underscore (), insert_and_underscore ();
+
+extern int what_section ();
+
+
+
+/* is needed in node.c */
+extern int set_top_section_level ();
+
+extern void sectioning_html ();
+extern int what_section ();
+
+/* The argument of @settitle, used for HTML. */
+extern char *title;
+
+
+/* Here is a structure which associates sectioning commands with
+ an integer that reflects the depth of the current section. */
+typedef struct
+{
+ char *name;
+ int level; /* I can't replace the levels with defines
+ because it is changed during run */
+ int num; /* ENUM_SECT_NO means no enumeration...
+ ENUM_SECT_YES means enumerated version
+ ENUM_SECT_APP appendix (Character enumerated
+ at first position */
+ int toc; /* TOC_NO means do not enter in toc;
+ TOC_YES means enter it in toc */
+} section_alist_type;
+
+extern section_alist_type section_alist[];
+
+/* enumerate sections */
+#define ENUM_SECT_NO 0
+#define ENUM_SECT_YES 1
+#define ENUM_SECT_APP 2
+
+/* make entries into toc no/yes */
+#define TOC_NO 0
+#define TOC_YES 1
+
+
+#endif /* not SECTIONING_H */
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.am b/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.am
new file mode 100644
index 00000000000..3e502ed4f32
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.am
@@ -0,0 +1,18 @@
+## Makefile.am for texinfo/tests/makeinfo.
+## Run automake in ../.. to produce Makefile.in from this.
+
+TESTS = cond \
+ html-extrali html-min html-manuals html-para html-title \
+ menu-whitespace \
+ no-headers \
+ node-expand node-value node-whitespace \
+ top top2
+
+noinst_SCRIPTS = $(TESTS)
+
+EXTRA_DIST = $(noinst_SCRIPTS) \
+ cond.txi \
+ html-extrali.txi html-min.txi html-para.txi html-title.txi \
+ menu-whitespace.txi \
+ node-expand.txi node-value.txi node-whitespace.txi \
+ top.txi top2.txi
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.in b/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.in
new file mode 100644
index 00000000000..50dedc8403c
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/Makefile.in
@@ -0,0 +1,223 @@
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+DATADIRNAME = @DATADIRNAME@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GT_NO = @GT_NO@
+GT_YES = @GT_YES@
+INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+TERMLIBS = @TERMLIBS@
+USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+l = @l@
+
+TESTS = cond html-extrali html-min html-manuals html-para html-title menu-whitespace no-headers node-expand node-value node-whitespace top top2
+
+
+noinst_SCRIPTS = $(TESTS)
+
+EXTRA_DIST = $(noinst_SCRIPTS) cond.txi html-extrali.txi html-min.txi html-para.txi html-title.txi menu-whitespace.txi node-expand.txi node-value.txi node-whitespace.txi top.txi top2.txi
+
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = ../../config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+
+DIST_COMMON = Makefile.am Makefile.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = gtar
+GZIP_ENV = --best
+all: all-redirect
+.SUFFIXES:
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps makeinfo/tests/Makefile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+tags: TAGS
+TAGS:
+
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+
+subdir = makeinfo/tests
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+ cp -pr $$d/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file || :; \
+ fi; \
+ done
+check-TESTS: $(TESTS)
+ @failed=0; all=0; \
+ srcdir=$(srcdir); export srcdir; \
+ for tst in $(TESTS); do \
+ if test -f $$tst; then dir=.; \
+ else dir="$(srcdir)"; fi; \
+ if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \
+ all=`expr $$all + 1`; \
+ echo "PASS: $$tst"; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="$$failed of $$all tests failed"; \
+ fi; \
+ dashes=`echo "$$banner" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am:
+install-exec: install-exec-am
+
+install-data-am:
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am:
+uninstall: uninstall-am
+all-am: Makefile $(SCRIPTS)
+all-redirect: all-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs:
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am: mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am: clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am: distclean-generic clean-am
+
+distclean: distclean-am
+
+maintainer-clean-am: maintainer-clean-generic distclean-am
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-am
+
+.PHONY: tags distdir check-TESTS info-am info dvi-am dvi check check-am \
+installcheck-am installcheck install-exec-am install-exec \
+install-data-am install-data install-am install uninstall-am uninstall \
+all-redirect all-am all installdirs mostlyclean-generic \
+distclean-generic clean-generic maintainer-clean-generic clean \
+mostlyclean distclean maintainer-clean
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/cond b/gnu/usr.bin/texinfo/makeinfo/tests/cond
new file mode 100644
index 00000000000..30c28bdd25a
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/cond
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Test conditional text.
+
+: ${srcdir=.}
+
+# Default Info output.
+../makeinfo -o cond.out $srcdir/cond.txi || exit 1
+egrep 'This is (ifnothtml|ifinfo|ifnottex) text' cond.out >/dev/null \
+ || exit 2
+test `fgrep ' text.' cond.out | wc -l` -eq 3 || exit 3
+
+# Default HTML output.
+../makeinfo --html -o cond.out $srcdir/cond.txi || exit 1
+egrep 'This is (html|ifhtml|ifnotinfo|ifnottex) text' cond.out >/dev/null \
+ || exit 2
+test `fgrep ' text.' cond.out | wc -l` -eq 4 || exit 3
+
+# --ifhtml off, --ifinfo off, --iftex off.
+../makeinfo --no-ifhtml --no-ifinfo --no-iftex -o cond.out $srcdir/cond.txi || exit 1
+egrep 'This is ifnot(html|info|tex) text' cond.out >/dev/null \
+ || exit 2
+test `fgrep ' text.' cond.out | wc -l` -eq 3 || exit 3
+
+# Do we really need to test all the other permutations?
+
+# --ifhtml on, --ifinfo on, --iftex on.
+../makeinfo --ifhtml --ifinfo --iftex -o cond.out $srcdir/cond.txi || exit 1
+egrep 'This is (html|ifhtml|ifinfo|tex|iftex) text' cond.out >/dev/null \
+ || exit 2
+test `fgrep ' text.' cond.out | wc -l` -eq 5 || exit 3
+
+rm -f cond.out cond.info
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/cond.txi b/gnu/usr.bin/texinfo/makeinfo/tests/cond.txi
new file mode 100644
index 00000000000..b60242322dc
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/cond.txi
@@ -0,0 +1,40 @@
+\input texinfo
+@setfilename cond.info
+
+@node Top
+
+@html
+This is html text.
+@end html
+
+@ifhtml
+This is ifhtml text.
+@end ifhtml
+
+@ifnothtml
+This is ifnothtml text.
+@end ifnothtml
+
+
+@ifinfo
+This is ifinfo text.
+@end ifinfo
+
+@ifnotinfo
+This is ifnotinfo text.
+@end ifnotinfo
+
+
+@tex
+This is tex text.
+@end tex
+
+@iftex
+This is iftex text.
+@end iftex
+
+@ifnottex
+This is ifnottex text.
+@end ifnottex
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali b/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali
new file mode 100644
index 00000000000..22ecd896ad7
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Test no extra <li> from @menu.
+
+li_count=`../makeinfo --html -o - ${srcdir-.}/html-extrali.txi 2>/dev/null \
+| grep '<li>' \
+| wc -l`
+
+if test "$li_count" -ne 1; then
+ echo "$li_count <li>s instead of one." >&2
+ exit 1
+else
+ exit 0
+fi
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali.txi b/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali.txi
new file mode 100644
index 00000000000..281aa7b3193
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-extrali.txi
@@ -0,0 +1,11 @@
+\input texinfo
+@setfilename menuli.info
+
+@c extra <li> generated after <menu>
+@c From: Marius Groeger <mag@sysgo.de>, 13nov98.
+
+@menu
+* entry1::
+@end menu
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-manuals b/gnu/usr.bin/texinfo/makeinfo/tests/html-manuals
new file mode 100644
index 00000000000..5e9523c820e
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-manuals
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Test that all the distribution manuals can be converted to HTML.
+
+: ${srcdir=.}
+
+for manual in info.texi info-stnd.texi texinfo.txi; do
+ base=`echo $manual | sed 's/\.te*xi$//'`
+ ../makeinfo --html -I$srcdir/../../doc --no-split \
+ $srcdir/../../doc/$manual -o $base.html \
+ || exit 1
+ rm -f $base.html
+done
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-min b/gnu/usr.bin/texinfo/makeinfo/tests/html-min
new file mode 100644
index 00000000000..e5971530afc
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-min
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Test that a minimal Texinfo file can be converted to HTML.
+
+../makeinfo --html ${srcdir-.}/html-min.txi
+exit_status=$?
+
+rm -f html-min.html
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-min.txi b/gnu/usr.bin/texinfo/makeinfo/tests/html-min.txi
new file mode 100644
index 00000000000..116519e0611
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-min.txi
@@ -0,0 +1,12 @@
+\input texinfo
+@setfilename html-min.info
+@settitle HTML min test
+
+@node Top
+@top Top of HTML min test
+
+Top.
+
+Second paragraph.
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-para b/gnu/usr.bin/texinfo/makeinfo/tests/html-para
new file mode 100644
index 00000000000..ba3191bf18f
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-para
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Test that paragraph beginnings in HTML work ok.
+
+../makeinfo --html ${srcdir-.}/html-para.txi
+exit_status=$?
+
+rm -f html-para.html
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-para.txi b/gnu/usr.bin/texinfo/makeinfo/tests/html-para.txi
new file mode 100644
index 00000000000..c6e34fd2513
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-para.txi
@@ -0,0 +1,24 @@
+\input texinfo
+@setfilename html-para.info
+@settitle HTML paragraph beginning test
+
+@c <p> is emitted at paragraph beginning, which makes the text
+@c between START and END not exactly what some cm_xxx functions
+@c expect, when they are called by pop_and_call_brace.
+
+@set val @@value@{@}
+@definfoenclose foo,\\,//
+
+@node Top
+@top Top of HTML paragraph test
+
+@value{val} should work at the beginning of a new paragraph.
+
+@dotless{i} dotless should not trigger error messages at the beginning
+of a new paragraph.
+
+@sc{small-caps} should work at the beginning of a new paragraph.
+
+@foo{@@definfoenclose} should work at the beginning of a new paragraph.
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-title b/gnu/usr.bin/texinfo/makeinfo/tests/html-title
new file mode 100644
index 00000000000..425226155dd
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-title
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Test that titles with @ commands don't produce markup in the <title>.
+# (And that the @ commands get expanded.)
+
+if ../makeinfo --html ${srcdir-.}/html-title.txi; then
+ grep '^<title>@[^<>]*</title>$' html-title.html >/dev/null
+ exit_status=$?
+else
+ exit_status=1
+fi
+
+#rm -f html-title.html
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/html-title.txi b/gnu/usr.bin/texinfo/makeinfo/tests/html-title.txi
new file mode 100644
index 00000000000..2e2f25c579f
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/html-title.txi
@@ -0,0 +1,12 @@
+\input texinfo
+@setfilename html-title.info
+@settitle @@title @sc{html} @code{test}
+
+@node Top
+@top Top of @@title @sc{html} @code{test}
+
+Top.
+
+Second paragraph.
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace b/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace
new file mode 100644
index 00000000000..d512fc1bcb9
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Test that a minimal Texinfo file can be converted to HTML.
+
+: ${srcdir=.}
+input=`basename $0`.txi
+
+../makeinfo -o /dev/null $srcdir/$input
+exit $?
+
+Date: 07 Dec 1998 11:23:44 +0100
+From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+To: bug-texinfo@gnu.org
+Subject: Makeinfo mishandles defaulted node links
+
+The following example demonstrates a bug in makeinfo:
+
+$ cat top.texi
+@setfilename top.info
+
+@node Top
+@top Top
+
+@menu
+* first::
+@end menu
+
+@node first
+@chapter first
+
+@menu @c
+* second::
+@end menu
+
+@node second
+@section second
+$ makeinfo top.texi
+Making info file `top.info' from `top.texi'.
+./top.texi:3: Next field of node `Top' not pointed to.
+./top.texi:17: This node (second) has the bad Prev.
+makeinfo: Removing output file `/home/as/test/top.info' due to errors; use --force to preserve.
+
+Makeinfo is being confused by the whitespace after @menu, or rather by its
+absence.
+
+
+1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/node.c (cm_node): When searching for @menu don't
+ require a space after it.
+
+--- texinfo-3.12b/makeinfo/node.c.~1~ Mon Oct 26 23:14:59 1998
++++ texinfo-3.12b/makeinfo/node.c Sun Dec 6 00:23:59 1998
+@@ -523,9 +523,10 @@
+ orig_size = size_of_input_text;
+
+ input_text_offset =
+- search_forward ("\n@menu ", orig_offset);
++ search_forward ("\n@menu", orig_offset);
+
+- if (input_text_offset > -1)
++ if (input_text_offset > -1
++ && cr_or_whitespace (input_text[input_text_offset + 6]))
+ {
+ char *nodename_from_menu = NULL;
+
+
+--
+Andreas Schwab "And now for something
+schwab@issan.cs.uni-dortmund.de completely different"
+schwab@gnu.org
+
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace.txi b/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace.txi
new file mode 100644
index 00000000000..fd1c39f7ebf
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/menu-whitespace.txi
@@ -0,0 +1,18 @@
+@setfilename top.info
+
+@node Top
+@top Top
+
+@menu
+* first::
+@end menu
+
+@node first
+@chapter first
+
+@menu @c
+* second::
+@end menu
+
+@node second
+@section second
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/no-headers b/gnu/usr.bin/texinfo/makeinfo/tests/no-headers
new file mode 100644
index 00000000000..17570bb6f48
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/no-headers
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Test that info.texi works with --no-headers (this includes node
+# pointer defaulting).
+
+: ${srcdir=.}
+docdir=$srcdir/../../doc
+
+../makeinfo --no-headers -o /dev/null -I$docdir info.texi
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-expand b/gnu/usr.bin/texinfo/makeinfo/tests/node-expand
new file mode 100644
index 00000000000..12a67a43f82
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-expand
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Test command expansion in node names.
+
+: ${srcdir=.}
+
+../makeinfo --commands-in-node-names $srcdir/node-expand.txi
+test -s node-expand.info
+exit_status=$?
+
+rm -f node-expand.info
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-expand.txi b/gnu/usr.bin/texinfo/makeinfo/tests/node-expand.txi
new file mode 100644
index 00000000000..42cb614d308
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-expand.txi
@@ -0,0 +1,64 @@
+\input texinfo.tex @c -*-texinfo-*-
+
+@setfilename node-expand.info
+
+@c Makeinfo should expand non-macros such as @@ and @value
+@c in node names and node references, including menus.
+@c This file deliberately references "Node 1" both via
+@c @value and directly; this should not trigger any errors,
+@c as long as --commands-in-node-names is used.
+@c Index entries should all be expanded as well.
+
+@set node1 Node 1
+
+@ifnottex
+
+@node Top, (dir), (dir), (dir)
+@top
+
+@end ifnottex
+
+@menu
+* @value{node1} ::
+* @@node `2'::
+* ``node'' with---tricks::
+@end menu
+
+@xref{@@node `2'}.
+
+@node @value{node1}, @@node `2', Top, Top
+@chapter Chapter 1
+
+@cindex entry for chapter 1
+This is chapter 1.
+@xref{@@node `2'}.
+
+@set sec1 Section 1.1
+
+@menu
+* @value{sec1}::
+@end menu
+
+@node Section 1.1, , Node 1, Node 1
+@comment node-name, next, previous, up
+
+@cindex entry for section 1.1
+This is section 1.1.
+
+@node @@node `2', ``node'' with---tricks, @value{node1}, Top
+@comment node-name, next, previous, up
+@chapter Node 2
+
+@cindex entry for chapter 2
+This is chapter 2.
+@xref{@value{node1}}. @xref{Node 1}.
+@xref{``node'' with---tricks, Node with some tricks}.
+
+@node ``node'' with---tricks, , @@node `2', Top
+
+@cindex tricks
+Another node.
+
+@printindex cp
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-value b/gnu/usr.bin/texinfo/makeinfo/tests/node-value
new file mode 100644
index 00000000000..90c250bc17b
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-value
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Test @value expansion in node names.
+
+: ${srcdir=.}
+
+../makeinfo $srcdir/node-value.txi
+grep -v "No Value" node-value.info >/dev/null
+exit_status=$?
+
+rm -f node-value.info
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-value.txi b/gnu/usr.bin/texinfo/makeinfo/tests/node-value.txi
new file mode 100644
index 00000000000..ba1173f9a89
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-value.txi
@@ -0,0 +1,15 @@
+\input texinfo
+@setfilename node-value.info
+@set a--foo bar
+
+@node Top, @value{a--foo}, (dir), (dir)
+@top Var @value{a--foo}
+@value{a--foo}
+
+@node @value{a--foo}, BarFoo, Top, (dir)
+@chapter BarFoo
+
+@node BarFoo, , @value{a--foo}, (dir)
+@chapter bar
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace b/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace
new file mode 100644
index 00000000000..7cb568554dc
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Test whitespace collapse in node names.
+
+: ${srcdir=.}
+
+../makeinfo $srcdir/node-whitespace.txi
+test -s node-whitespace.info
+exit_status=$?
+
+rm -f node-whitespace.info
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace.txi b/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace.txi
new file mode 100644
index 00000000000..df1253fc507
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/node-whitespace.txi
@@ -0,0 +1,30 @@
+\input texinfo.tex @c -*-texinfo-*-
+
+@setfilename node-whitespace.info
+
+@c Makeinfo should collapse whitespace in node names.
+
+@ifnottex
+
+@node Top
+@top
+
+@end ifnottex
+
+@menu
+* Chap 1.3 ::
+* Chap 1.4 :Chap 1.4.
+@end menu
+
+@node Chap 1.3
+@chapter Chap 1.3
+
+Can I reach here?
+
+@node Chap 1.4
+@chapter Another space test
+
+How about here?
+@xref{Chap 1.3}.
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/top b/gnu/usr.bin/texinfo/makeinfo/tests/top
new file mode 100644
index 00000000000..852194a71cd
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/top
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Test that a top node can be ignored.
+
+: ${srcdir=.}
+../makeinfo $srcdir/top.txi || exit 1
+
+# Expected warnings due to use of @ifinfo instead of @ifnottex.
+../makeinfo --no-split --no-warn --html $srcdir/top.txi -o top.html || exit 1
+
+rm -f top*.html top.info
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/top.txi b/gnu/usr.bin/texinfo/makeinfo/tests/top.txi
new file mode 100644
index 00000000000..e8c3cbbc078
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/top.txi
@@ -0,0 +1,25 @@
+\input texinfo
+@setfilename top.info
+@settitle top test
+
+@c This traditional top node uses @ifinfo for testing.
+@c Therefore there will be warnings when processing with --html.
+@c The solution is to use @ifnottex instead.
+
+@ifinfo
+@node Top
+@top Top test
+
+Typical top node.
+@end ifinfo
+
+@menu
+* Subnode::
+@end menu
+
+@node Subnode
+@chapter Subnode
+
+Subnode.
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/top2 b/gnu/usr.bin/texinfo/makeinfo/tests/top2
new file mode 100644
index 00000000000..d38984654d5
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/top2
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Test that a bare top node does not crash with --html.
+
+: ${srcdir=.}
+
+# But this input file is erroneous, so throw away errors.
+../makeinfo --force -o top2.html --html $srcdir/top2.txi 2>/dev/null
+test -s top2.html
+exit_status=$?
+rm -f top2.html
+exit $exit_status
diff --git a/gnu/usr.bin/texinfo/makeinfo/tests/top2.txi b/gnu/usr.bin/texinfo/makeinfo/tests/top2.txi
new file mode 100644
index 00000000000..ade7214b0c2
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/tests/top2.txi
@@ -0,0 +1,7 @@
+\input texinfo
+@setfilename top.info
+
+@node start
+@top
+
+@bye
diff --git a/gnu/usr.bin/texinfo/makeinfo/toc.c b/gnu/usr.bin/texinfo/makeinfo/toc.c
new file mode 100644
index 00000000000..447ad5d0388
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/toc.c
@@ -0,0 +1,476 @@
+/* toc.c -- table of contents handling.
+ $Id: toc.c,v 1.1.1.1 2000/02/09 01:25:31 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#include "system.h"
+#include "makeinfo.h"
+#include "cmds.h"
+#include "files.h"
+#include "macro.h"
+#include "node.h"
+#include "lang.h"
+#include "makeinfo.h"
+#include "sectioning.h"
+#include "toc.h"
+
+
+
+
+/* array of toc entries */
+static TOC_ENTRY_ELT **toc_entry_alist = NULL;
+
+/* toc_counter start from 0 ... n for every @chapter, @section ... */
+static int toc_counter = 0;
+
+/* the file where we found the @contents directive */
+char *contents_filename;
+
+/* the file where we found the @shortcontents directive */
+char *shortcontents_filename;
+
+static const char contents_placebo[] = "\n...Table of Contents...\n";
+static const char shortcontents_placebo[] = "\n...Short Contents...\n";
+static const char lots_of_stars[] =
+"***************************************************************************";
+
+
+/* Routine to add an entry to the table of contents */
+int
+toc_add_entry (tocname, level, node_name, anchor)
+ char *tocname;
+ int level;
+ char *node_name;
+ char *anchor;
+{
+ char *tocname_and_node, *expanded_node, *s, *d;
+
+ if (!node_name)
+ node_name = "";
+
+ /* I assume that xrealloc behaves like xmalloc if toc_entry_alist is
+ NULL */
+ toc_entry_alist = xrealloc (toc_entry_alist,
+ (toc_counter + 1) * sizeof (TOC_ENTRY_ELT *));
+
+ toc_entry_alist[toc_counter] = xmalloc (sizeof (TOC_ENTRY_ELT));
+
+ if (html)
+ {
+ /* We need to insert the expanded node name into the TOC, so
+ that when we eventually output the TOC, its <A REF= link will
+ point to the <A NAME= tag created by cm_node in the navigation
+ bar. We cannot expand the containing_node member, for the
+ reasons explained in the WARNING below. We also cannot wait
+ with the node name expansion until the TOC is actually output,
+ since by that time the macro definitions may have been changed.
+ So instead we store in the tocname member the expanded node
+ name and the TOC name concatenated together (with the necessary
+ HTML markup), since that's how they are output. */
+ if (!anchor)
+ s = expanded_node = expand_node_name (node_name);
+ else
+ expanded_node = anchor;
+ /* Sigh... Need to HTML-escape the expanded node name like
+ add_anchor_name does, except that we are not writing this to
+ the output, so can't use add_anchor_name... */
+ /* The factor 5 in the next allocation is because the maximum
+ expansion of HTML-escaping is for the & character, which is
+ output as "&amp;". 2 is for "> that separates node from tocname. */
+ d = tocname_and_node = (char *)xmalloc (2 + 5 * strlen (expanded_node)
+ + strlen (tocname) + 1);
+ if (!anchor)
+ {
+ for (; *s; s++)
+ {
+ if (*s == '&')
+ {
+ strcpy (d, "&amp;");
+ d += 5;
+ }
+ else if (! URL_SAFE_CHAR (*s))
+ {
+ sprintf (d, "%%%x", (unsigned char) *s);
+ /* do this manually since sprintf returns char * on
+ SunOS 4 and other old systems. */
+ while (*d)
+ d++;
+ }
+ else
+ *d++ = *s;
+ }
+ strcpy (d, "\">");
+ }
+ else
+ /* Section outside any node, they provided explicit anchor. */
+ strcpy (d, anchor);
+ strcat (d, tocname);
+ free (tocname); /* it was malloc'ed by substring() */
+ free (expanded_node);
+ toc_entry_alist[toc_counter]->name = tocname_and_node;
+ }
+ else
+ toc_entry_alist[toc_counter]->name = tocname;
+ /* WARNING! The node name saved in containing_node member must
+ be the node name with _only_ macros expanded (the macros in
+ the node name are expanded by cm_node when it grabs the name
+ from the @node directive). Non-macros, like @value, @@ and
+ other @-commands must NOT be expanded in containing_node,
+ because toc_find_section_of_node looks up the node name where
+ they are also unexpanded. You *have* been warned! */
+ toc_entry_alist[toc_counter]->containing_node = xstrdup (node_name);
+ toc_entry_alist[toc_counter]->level = level;
+ toc_entry_alist[toc_counter]->number = toc_counter;
+
+ /* have to be done at least */
+ return toc_counter++;
+}
+
+/* Return the name of a chapter/section/subsection etc. that
+ corresponds to the node NODE. If the node isn't found,
+ return NULL.
+
+ WARNING! This function relies on NODE being unexpanded
+ except for macros (i.e., @value, @@, and other non-macros
+ should NOT be expanded), because the containing_node member
+ stores unexpanded node names.
+
+ Note that this function returns the first section whose
+ containing node is NODE. Thus, they will lose if they use
+ more than a single chapter structioning command in a node,
+ or if they have a node without any structuring commands. */
+char *
+toc_find_section_of_node (node)
+ char *node;
+{
+ int i;
+
+ if (!node)
+ node = "";
+ for (i = 0; i < toc_counter; i++)
+ if (STREQ (node, toc_entry_alist[i]->containing_node))
+ return toc_entry_alist[i]->name;
+
+ return NULL;
+}
+
+/* free up memory used by toc entries */
+void
+toc_free ()
+{
+ int i;
+
+ if (toc_counter)
+ {
+ for (i = 0; i < toc_counter; i++)
+ {
+ free (toc_entry_alist[i]->name);
+ free (toc_entry_alist[i]->containing_node);
+ free (toc_entry_alist[i]);
+ }
+
+ free (toc_entry_alist);
+ toc_entry_alist = NULL; /* to be sure ;-) */
+ toc_counter = 0; /* to be absolutley sure ;-) */
+ }
+}
+
+
+/* print table of contents in HTML, may be we can produce a standalone
+ HTML file? */
+static void
+contents_update_html (fp)
+ FILE *fp;
+{
+ int i;
+ int k;
+ int last_level;
+
+ /* does exist any toc? */
+ if (!toc_counter)
+ /* no, so return to sender ;-) */
+ return;
+
+ flush_output (); /* in case we are writing stdout */
+
+ fprintf (fp, "\n<h1>%s</h1>\n<ul>\n", _("Table of Contents"));
+
+ last_level = toc_entry_alist[0]->level;
+
+ for (i = 0; i < toc_counter; i++)
+ {
+ if (toc_entry_alist[i]->level > last_level)
+ {
+ /* unusual, but it is possible
+ @chapter ...
+ @subsubsection ... ? */
+ for (k = 0; k < (toc_entry_alist[i]->level-last_level); k++)
+ fputs ("<ul>\n", fp);
+ }
+ else if (toc_entry_alist[i]->level < last_level)
+ {
+ /* @subsubsection ...
+ @chapter ... this IS usual.*/
+ for (k = 0; k < (last_level-toc_entry_alist[i]->level); k++)
+ fputs ("</ul>\n", fp);
+ }
+
+ fprintf (fp, "<li><a href=\"#%s</a>\n", toc_entry_alist[i]->name);
+
+ last_level = toc_entry_alist[i]->level;
+ }
+
+ /* Go back to start level. */
+ if (toc_entry_alist[0]->level < last_level)
+ for (k = 0; k < (last_level-toc_entry_alist[0]->level); k++)
+ fputs ("</ul>\n", fp);
+
+ fputs ("</ul>\n\n", fp);
+}
+
+/* print table of contents in ASCII (--no-headers)
+ May be we should create a new command line switch --ascii ? */
+static void
+contents_update_info (fp)
+ FILE *fp;
+{
+ int i;
+ int k;
+
+ if (!toc_counter)
+ return;
+
+ flush_output (); /* in case we are writing stdout */
+
+ fprintf (fp, "%s\n%.*s\n\n", _("Table of Contents"),
+ (int) strlen (_("Table of Contents")), lots_of_stars);
+
+ for (i = 0; i < toc_counter; i++)
+ {
+ if (toc_entry_alist[i]->level == 0)
+ fputs ("\n", fp);
+
+ /* indention with two spaces per level, should this
+ changed? */
+ for (k = 0; k < toc_entry_alist[i]->level; k++)
+ fputs (" ", fp);
+
+ fprintf (fp, "%s\n", toc_entry_alist[i]->name);
+ }
+ fputs ("\n\n", fp);
+}
+
+/* shortcontents in HTML; Should this produce a standalone file? */
+static void
+shortcontents_update_html (fp)
+ FILE *fp;
+{
+ int i;
+
+ /* does exist any toc? */
+ if (!toc_counter)
+ return;
+
+ flush_output (); /* in case we are writing stdout */
+
+ fprintf (fp, "\n<h1>%s</h1>\n<ul>\n", _("Short Contents"));
+
+ for (i = 0; i < toc_counter; i++)
+ {
+ if ((toc_entry_alist[i])->level == 0)
+ {
+ fputs ("<li>", fp);
+ fprintf (fp, "<a href=\"#%s\n", toc_entry_alist[i]->name);
+ }
+ }
+
+ fputs ("</ul>\n\n", fp);
+}
+
+/* short contents in ASCII (--no-headers).
+ May be we should create a new command line switch --ascii ? */
+static void
+shortcontents_update_info (fp)
+ FILE *fp;
+{
+ int i;
+
+ if (!toc_counter)
+ return;
+
+ flush_output (); /* in case we are writing stdout */
+
+ fprintf (fp, "%s\n%.*s\n\n", _("Short Contents"),
+ (int) strlen (_("Short Contents")), lots_of_stars);
+
+ for (i = 0; i < toc_counter; i++)
+ {
+ if ((toc_entry_alist[i])->level == 0)
+ fprintf (fp, "%s\n", toc_entry_alist[i]->name);
+ }
+ fputs ("\n\n", fp);
+}
+
+
+static FILE *toc_fp;
+static char *toc_buf;
+
+static int
+rewrite_top (fname, placebo)
+ const char *fname, *placebo;
+{
+ int idx;
+
+ toc_buf = find_and_load (fname);
+
+ if (!toc_buf)
+ {
+ /* Can't rewrite standard output. No point in complaining. */
+ if (!STREQ (fname, "-"))
+ fs_error (fname);
+ return -1;
+ }
+
+ idx = search_forward (placebo, 0);
+
+ if (idx < 0)
+ {
+ error (_("%s: TOC should be here, but it was not found"), fname);
+ return -1;
+ }
+
+ toc_fp = fopen (fname, "w");
+ if (!toc_fp)
+ {
+ fs_error (fname);
+ return -1;
+ }
+
+ if (fwrite (toc_buf, 1, idx, toc_fp) != idx)
+ {
+ fs_error (fname);
+ return -1;
+ }
+
+ return idx + strlen (placebo);
+}
+
+static void
+contents_update ()
+{
+ int cont_idx = rewrite_top (contents_filename, contents_placebo);
+
+ if (cont_idx < 0)
+ return;
+
+ if (html)
+ contents_update_html (toc_fp);
+ else
+ contents_update_info (toc_fp);
+
+ if (fwrite (toc_buf + cont_idx, 1, input_text_length - cont_idx, toc_fp)
+ != input_text_length - cont_idx
+ || fclose (toc_fp) != 0)
+ fs_error (contents_filename);
+}
+
+static void
+shortcontents_update ()
+{
+ int cont_idx = rewrite_top (shortcontents_filename, shortcontents_placebo);
+
+ if (cont_idx < 0)
+ return;
+
+ if (html)
+ shortcontents_update_html (toc_fp);
+ else
+ shortcontents_update_info (toc_fp);
+
+ if (fwrite (toc_buf + cont_idx, 1, input_text_length - cont_idx - 1, toc_fp)
+ != input_text_length - cont_idx - 1
+ || fclose (toc_fp) != 0)
+ fs_error (shortcontents_filename);
+}
+
+void
+toc_update ()
+{
+ if (!html && !no_headers)
+ return;
+
+ if (contents_filename)
+ contents_update ();
+ if (shortcontents_filename)
+ shortcontents_update ();
+}
+
+void
+cm_contents (arg)
+ int arg;
+{
+ if ((html || no_headers) && arg == START)
+ {
+ if (contents_filename)
+ {
+ free (contents_filename);
+ contents_filename = NULL;
+ }
+
+ if (contents_filename && STREQ (contents_filename, "-"))
+ {
+ if (html)
+ contents_update_html (stdout);
+ else
+ contents_update_info (stdout);
+ }
+ else
+ {
+ contents_filename = xstrdup (current_output_filename);
+ insert_string (contents_placebo); /* just mark it, for now */
+ }
+ }
+}
+
+void
+cm_shortcontents (arg)
+ int arg;
+{
+ if ((html || no_headers) && arg == START)
+ {
+ if (shortcontents_filename)
+ {
+ free (shortcontents_filename);
+ shortcontents_filename = NULL;
+ }
+
+ if (shortcontents_filename && STREQ (shortcontents_filename, "-"))
+ {
+ if (html)
+ shortcontents_update_html (stdout);
+ else
+ shortcontents_update_info (stdout);
+ }
+ else
+ {
+ shortcontents_filename = xstrdup (current_output_filename);
+ insert_string (shortcontents_placebo); /* just mark it, for now */
+ }
+ }
+}
diff --git a/gnu/usr.bin/texinfo/makeinfo/toc.h b/gnu/usr.bin/texinfo/makeinfo/toc.h
new file mode 100644
index 00000000000..ec99eea335c
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/toc.h
@@ -0,0 +1,49 @@
+/* toc.h -- table of contents handling.
+ $Id: toc.h,v 1.1.1.1 2000/02/09 01:25:31 espie Exp $
+
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */
+
+#ifndef TOC_H
+#define TOC_H
+
+/* the file where we found the @contents directive */
+extern char *contents_filename;
+
+/* the file where we found the @shortcontents directive */
+extern char *shortcontents_filename;
+
+/* Structure to hold one entry for the toc. */
+typedef struct toc_entry_elt {
+ char *name;
+ char *containing_node; /* Name of node containing this section. */
+ int number; /* counting number from 0...n independent from
+ chapter/section can be used for anchors or
+ references to it. */
+ int level; /* level: chapter, section, subsection... */
+} TOC_ENTRY_ELT;
+
+/* all routines which have relationship with TOC should start with
+ toc_ (this is a kind of name-space) */
+extern int toc_add_entry (); /* return the number for the toc-entry */
+extern void toc_free ();
+extern char *toc_find_section_of_node ();
+
+extern void cm_contents (), cm_shortcontents ();
+
+#endif /* not TOC_H */
diff --git a/gnu/usr.bin/texinfo/missing b/gnu/usr.bin/texinfo/missing
index 79a3e4ed66b..7789652e877 100644
--- a/gnu/usr.bin/texinfo/missing
+++ b/gnu/usr.bin/texinfo/missing
@@ -41,9 +41,11 @@ Supported PROGRAM values:
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
- bison touch file \`y.tab.c'
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
- yacc touch file \`y.tab.c'"
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
@@ -80,15 +82,17 @@ WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`configure.in'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in`
- if test -z "$files"; then
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in`
- test -z "$files" || files="$files.in"
- else
- files=`echo "$files" | sed -e 's/:/ /g'`
- fi
- test -z "$files" && files="config.h.in"
- touch $files
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
;;
automake)
@@ -97,9 +101,9 @@ WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print \
- | sed 's/^\(.*\).am$/touch \1.in/' \
- | sh
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
;;
bison|yacc)
@@ -108,7 +112,51 @@ WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
- touch y.tab.c
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
;;
makeinfo)
diff --git a/gnu/usr.bin/texinfo/po/POTFILES.in b/gnu/usr.bin/texinfo/po/POTFILES.in
index 8debb07e931..7f08ea7833e 100644
--- a/gnu/usr.bin/texinfo/po/POTFILES.in
+++ b/gnu/usr.bin/texinfo/po/POTFILES.in
@@ -11,12 +11,26 @@ info/infodoc.c
info/m-x.c
info/makedoc.c
info/nodemenu.c
+info/pcterm.c
info/session.c
info/tilde.c
info/variables.c
info/window.c
lib/getopt.c
+lib/system.h
+makeinfo/cmds.c
+makeinfo/defun.c
+makeinfo/files.c
+makeinfo/footnote.c
+makeinfo/html.c
+makeinfo/index.c
+makeinfo/insertion.c
+makeinfo/lang.c
+makeinfo/macro.c
makeinfo/makeinfo.c
makeinfo/multi.c
+makeinfo/node.c
+makeinfo/sectioning.c
+makeinfo/toc.c
util/install-info.c
util/texindex.c
diff --git a/gnu/usr.bin/texinfo/po/cs.gmo b/gnu/usr.bin/texinfo/po/cs.gmo
new file mode 100644
index 00000000000..64580ada015
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/cs.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/cs.po b/gnu/usr.bin/texinfo/po/cs.po
new file mode 100644
index 00000000000..4c6d5ee777c
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/cs.po
@@ -0,0 +1,2655 @@
+# Czech translations for GNU texinfo
+# Copyright (C) 1997 Free Software Foundation, Inc.
+# Vladimir Michl <Vladimir.Michl@upol.cz>, 1997.
+#
+# Notes: 2 untranslated messages, It's ok.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: texinfo 3.12c\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-02-17 02:05+01:00\n"
+"Last-Translator: Vladimir Michl <Vladimir.Michl@upol.cz>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr "Posun na následující znak"
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr "Posun na pøedcházející znak"
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr "Pøesun na zaèátek tohoto øádku"
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr "Pøesun na konec tohoto øádku"
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr "Posun na následující slovo"
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr "Posun na pøedcházející slovo"
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr "Smazání znaku pod kurzorem"
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr "Smazání prvního znaku vlevo od kurzoru"
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr "Zru¹ení nebo pøeru¹ení operace"
+
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr "Akceptování (nebo vnucené dokonèení) tohoto øádku"
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr "Vlo¾ení dal¹ího znaku bez interpretace jeho funkce"
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr "Vlo¾ení tohoto znaku"
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr "Vlo¾ení tabelátoru"
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr "Pøemístìní znaku na pozici"
+
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr "Vlo¾ení toho co bylo naposled smazáno"
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr "Kruhový buffer smazaných oblastí je prázdný"
+
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr "Vlo¾ení naposledy smazaného úseku"
+
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr "Smazání v¹eho od kurzoru a¾ do konce øádku"
+
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr "Smazání v¹eho od zaèátku øádku do kurzoru"
+
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr "Smazání slova, od kurzoru do konce slova"
+
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr "Smazání slova, od zaèátku slova do kurzoru"
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr "Nekompletní"
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr "Seznam mo¾ných doplnìní"
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr "Doplnìní neexistují"
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr "Jedinné doplnìní"
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr "Jedno doplnìní:\n"
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr "%d doplnìní:\n"
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr "Vlo¾ení doplnìní"
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr "Hledám doplnìní..."
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr "Odrolování obsahu okna s doplnìními"
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr "Poznámky pod èarou nelze zobrazit"
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr ""
+"Zobrazení poznámek pod èarou, vztahujících se k tomuto uzlu, v jiném oknì"
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr "Vyhledání øetìzce v rejstøíku tohoto souboru"
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr "Jsou hledány polo¾ky rejstøíku..."
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr "®ádný rejstøík nebyl nalezen."
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr "Polo¾ka rejstøíku: "
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+"Posun na dal¹í polo¾ku rejstøíku, odpovídající øetìzci z minulého pøíkazu "
+"`\\[index-search]'"
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr "Není zadán øetìzec, který se má vyhledávat v rejstøíku(cích)."
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr "Nejsou polo¾ky rejstøíku."
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr "Ji¾ není %spolo¾ka rejstøíku, která obsahuje \"%s\"."
+
+#: info/indices.c:383
+msgid "more "
+msgstr "dal¹í "
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr "TOTO NELZE VIDÌT"
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr "Nalezeno \"%s\" v %s. (`\\[next-index-match]' - hledání dal¹í.)"
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr "Prohledávám tyto rejstøíky \"%s\"..."
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+"Vyhledání øetìzce ve v¹ech známých rejstøících info souborù a vytvoøení menu"
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr "Hledat v rejstøíku odkaz na:"
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+"\n"
+"* Menu: Uzly jejich¾ rejstøíky obsahují \"%s\":\n"
+
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr "Více informací mù¾ete získat pomocí pøepínaèe --help.\n"
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+" Copyright (C) %s 1996 Free Software Foundation, Inc.\n"
+" Toto je volné programové vybavení, které je zcela BEZ ZÁRUKY. Podmínky "
+"pro\n"
+"kopírování a roz¹iøování naleznete v Obecné veøejné licenci GNU (GNU "
+"General\n"
+"Public Licence). Více informací získáte ve zdrojových textech v souboru\n"
+"COPYING.\n"
+
+#: info/info.c:461
+#, fuzzy, c-format
+msgid "no index entries found for `%s'\n"
+msgstr "¾ádné polo¾ky nebyly nalezeny\n"
+
+#: info/info.c:530
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [INFO-SOUBOR [POLO®KA-MENU...]]\n"
+"\n"
+" Umo¾òuje èíst dokumentaci v Info formátu. Komplexnìj¹í popis, jak "
+"pou¾ívat\n"
+"program Info, získáte zadáním `info info options' do pøíkazového øádku.\n"
+"\n"
+"Pøepínaèe:\n"
+"--directory=ADRESÁØ kromì promìnné INFOPATH prohledává i tento\n"
+" ADRESÁØ\n"
+"--dribble=SOUBOR ulo¾í klávesy, které stiskl u¾ivatel do "
+"SOUBORu\n"
+"--file=SOUBOR zadání info souboru, který se má prohlí¾et\n"
+"--index-search=ØETÌZEC skok na uzel urèený v rejstøíku ØETÌZCEM\n"
+"--node=JMÉNO_UZLU zadání uzlù, v prvním nav¹tíveném info "
+"souboru\n"
+"--output=SOUBOR vypisuje nav¹tívené uzly do SOUBORu\n"
+"--restore=SOUBOR klávesy, které mají být automaticky po\n"
+" spu¹tení infa stisknuty, ète ze SOUBORu\n"
+"--subnodes rekurzivnì vypí¹e polo¾ky menu\n"
+"%s--help vypí¹e tuto nápovìdu a skonèí\n"
+"--version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" První argument, jestli¾e je zadán, je chápán jako jméno info souboru, "
+"který\n"
+"má být èten. Zbývající argumenty jsou chápány jako jména polo¾ek menu,\n"
+"které mají být po spu¹tìní nav¹tíveny. Takto se lze jednodu¹e pøesunout do\n"
+"uzlu, který máte zájem si pøeèíst. Napøíklad `info emacs buffers'.\n"
+"\n"
+" Chyby v programu oznamujte na adrese <bug-texinfo@gnu.org> (pouze "
+"anglicky),\n"
+"obecné otázky smìøujte na <help-texinfo@gnu.org>. Pøipomínky k pøekladu\n"
+"zasílejte na adresu <cs@li.org> (èesky).\n"
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "Uzel `%s' nelze zru¹it"
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "Uzel `%s' nelze zru¹it"
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "Permanentní okno nelze smazat"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "Permanentní okno nelze smazat"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "V uzlu \"%s\" není menu."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "V tomto uzlu není køí¾ový odkaz."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "V tomto uzlu není køí¾ový odkaz."
+
+#: info/info.c:612
+#, fuzzy, c-format
+msgid "No `%s' pointer for this node."
+msgstr "Není ukazatel na dal¹í uzel."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "Posun na zaèátek tohoto uzlu"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "Posun na zaèátek tohoto uzlu"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+#, fuzzy
+msgid "Basic Commands in Info Windows\n"
+msgstr "Základní pøíkazy v Info oknech"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr ""
+
+#: info/infodoc.c:48
+#, fuzzy, c-format
+msgid " %-10s Quit this help.\n"
+msgstr " q Celkové ukonèení Infa."
+
+#: info/infodoc.c:49
+#, fuzzy, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr " q Celkové ukonèení Infa."
+
+#: info/infodoc.c:50
+#, fuzzy, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr " h Vyvolání prùvodce Infem."
+
+#: info/infodoc.c:52
+#, fuzzy
+msgid "Moving within a node:\n"
+msgstr "Pøesun uvnitø uzlu:"
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr ""
+
+#: info/infodoc.c:54
+#, fuzzy, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr " SPC Následující stránka."
+
+#: info/infodoc.c:55
+#, fuzzy, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr " DEL Pøedchozí stránka."
+
+#: info/infodoc.c:56
+#, fuzzy, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr " b Pøesun na zaèátek aktuálního uzlu."
+
+#: info/infodoc.c:57
+#, fuzzy, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr " e Pøesun na konec tohoto uzlu."
+
+#: info/infodoc.c:58
+#, fuzzy, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr " SPC Následující stránka."
+
+#: info/infodoc.c:59
+#, fuzzy, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr " DEL Pøedchozí stránka."
+
+# Udìlat patch na podtr¾ení
+#: info/infodoc.c:61
+#, fuzzy
+msgid "Selecting other nodes:\n"
+msgstr "Výbìr dal¹ích uzlù:"
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr ""
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr " n Pøesun na \"dal¹í\" uzel tohoto uzlu."
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr " p Pøesun na \"pøedchozí\" uzel tohoto uzlu."
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr " u Pøesun \"nahoru\" z aktuálního uzelu."
+
+#: info/infodoc.c:66
+#, fuzzy, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr " m Vybrání polo¾ky menu zadané pomocí jména."
+
+#: info/infodoc.c:67
+#, fuzzy
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr " Vybírání polo¾ky menu zpùsobí zobrazení tohoto uzlu."
+
+#: info/infodoc.c:68
+#, fuzzy, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr " f Následování køí¾ového odkazu. Ètení jména odkazu."
+
+#: info/infodoc.c:69
+#, fuzzy, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr " l Pøesun na poslední zobrazený uzel v tomto oknì."
+
+#: info/infodoc.c:70
+#, fuzzy, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr " TAB Skok na dal¹í hypertextový odkaz v tomto uzlu."
+
+#: info/infodoc.c:71
+#, fuzzy, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr " RET Následování hypertextového odkazu pod kurzorem."
+
+#: info/infodoc.c:72
+#, fuzzy, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr " d Pøesun do `adresáøového' uzlu. Rovnocenné s `g (DIR)'."
+
+#: info/infodoc.c:73
+#, fuzzy, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr " d Pøesun do `adresáøového' uzlu. Rovnocenné s `g (DIR)'."
+
+#: info/infodoc.c:75
+#, fuzzy
+msgid "Other commands:\n"
+msgstr "Dal¹í pøíkazy: "
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr ""
+
+#: info/infodoc.c:77
+#, fuzzy, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr " 1-9 Výbìr první ... deváté polo¾ky menu uzlu."
+
+#: info/infodoc.c:78
+#, fuzzy, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr " 0 Zobrazení poslední polo¾ky menu uzlu."
+
+#: info/infodoc.c:79
+#, fuzzy, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr " i Hledání zadaného øetìzce v rejstøíku tohoto Info souboru a výbìr"
+
+#: info/infodoc.c:80
+#, fuzzy
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr " uzlu, na který ukazuje první nalezená polo¾ka."
+
+#: info/infodoc.c:81
+#, fuzzy, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr " g Pøesun na uzel zadaný pomocí jména."
+
+#: info/infodoc.c:82
+#, fuzzy
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr " Také mù¾ete zadat jméno souboru ve tvaru (SOUBOR)UZEL."
+
+#: info/infodoc.c:83
+#, fuzzy, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr " s Hledání zadaného øetìzce v tomto Info souboru."
+
+#: info/infodoc.c:84 info/infodoc.c:86
+#, fuzzy
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+" a zobrazení uzlu, ve kterém je nalezen dal¹í výskyt tohoto øetìzce."
+
+#: info/infodoc.c:85
+#, fuzzy, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr " s Hledání zadaného øetìzce v tomto Info souboru."
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr ""
+
+#: info/infodoc.c:261
+#, fuzzy
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr "Základní pøíkazy v Info oknech"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+"Následující pøíkazy mohou být vykonány pouze pomocí M-x:\n"
+"\n"
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr ""
+"--- Pou¾ijte `\\[history-node]' nebo `\\[kill-node]' pro ukonèení ---\n"
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr "Zobrazení nápovìdy"
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr "Zobrazení Info uzlu `(info)Help'"
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr "Zobrazení dokumentace ke KLÁVESE"
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr "Popis klávesy: %s"
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr "ESC %s je nedefinováno."
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr "%s je nedefinováno."
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr "Klávesa %s je definována pro pøíkaz %s."
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr ""
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr "Kde je pøíkaz: "
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr "Pøíkaz `%s' není na ¾ádné klávese"
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr "Pøíkaz %s mù¾e být vyvolán pouze pomocí %s."
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr "Pøíkaz %s mù¾e být vyvolán pomocí %s."
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr "Funkce `%s' není známa"
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr "Zadání jména pøíkazu a následné zobrazení jeho popisu"
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr "Popis pøíkazu: "
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr "Zadání jména pøíkazu v zobrazovacím poli a jeho vykonání"
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr "Pøíkaz zobrazovacího pole nelze vykonat zde."
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr "Nastavení vý¹ky obrazovky"
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr "Vý¹ka obrazovky (%d): "
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+"Pøi zpracování zdrojového souboru jsou vkládány tyto soubory:\n"
+"\n"
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr "Se souborem %s nelze pracovat.\n"
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+"\n"
+"* Menu:\n"
+" (Soubor)Uzel Øádkù Velikost Soubor\n"
+" ------------ ----- -------- ------"
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+" Zde je seznam uzlù, které jste poslední dobou nav¹tívil. Vyberte jeden\n"
+"z tohoto menu, nebo u¾ijte `\\[history-node]' v tomto oknì.\n"
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr "Vytvoøení okna obsahujícího menu v¹ech aktuálnì nav¹tívených uzlù"
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr "Zobrazení uzlu, který byl zobrazen pøed tímto"
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr "Vyberte nav¹tívený uzel: "
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr "Odkaz se ztratil! (%s)."
+
+#: info/session.c:169
+#, fuzzy, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+" Vítejte v programu Info verze %s. \"\\[get-help-window]\" - nápovìda, "
+"\"\\[menu-item]\" - polo¾ka menu."
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr "Posun dolù na dal¹í øádek"
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr "Posun nahoru na pøedchozí øádek"
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr "Pøesun na konec øádku"
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr "Pøesun na zaèátek øádku"
+
+#: info/session.c:884 makeinfo/node.c:1092
+#, fuzzy
+msgid "Next"
+msgstr "Dal¹í"
+
+#: info/session.c:887
+#, fuzzy
+msgid "Following Next node..."
+msgstr "Pøechod na dal¹í uzel..."
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr "Zobrazování první polo¾ky menu..."
+
+#: info/session.c:915
+#, fuzzy
+msgid "Selecting Next node..."
+msgstr "Zobrazování dal¹ího uzelu..."
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr ""
+
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr "V tomto dokumentu ji¾ nejsou dal¹í uzly."
+
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
+msgstr "Pro tento uzel není pøedchozí uzel."
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+#, fuzzy
+msgid "Moving Prev in this window."
+msgstr "Pøesun na pøedchozí uzel v tomto oknì."
+
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr "V tomto dokumentu ji¾ není pro tento uzel pøedchozí nebo vy¹¹í uzel."
+
+#: info/session.c:1053
+#, fuzzy
+msgid "Moving Up in this window."
+msgstr "Pøesun nahoru v tomto oknì."
+
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
+msgstr "Pøesun na poslední polo¾ku menu pøedchozího uzlu."
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr "Pøesun na následující uzel nebo na první ni¾¹í v uzlové struktuøe"
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr "Pøesun na pøedchozí uzel nebo na první vy¹¹í v uzlové struktuøe"
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr "Posun o stránku dolù v tomto oknì"
+
+#: info/session.c:1192
+#, fuzzy
+msgid "Scroll forward in this window and set default window size"
+msgstr "Posun o stránku dolù v tomto oknì"
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr "Posun o stránku nahoru v tomto oknì"
+
+#: info/session.c:1244
+#, fuzzy
+msgid "Scroll backward in this window and set default window size"
+msgstr "Posun o stránku nahoru v tomto oknì"
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr "Posun na zaèátek tohoto uzlu"
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr "Posun na konec tohoto uzlu"
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr ""
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr ""
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr ""
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr ""
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr "Výbìr následujícího okna"
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr "Výbìr pøedchozího okna"
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr "Rozdìlení aktuálního okna"
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr "Smazání aktuálního okna"
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr "Permanentní okno nelze smazat"
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr "Smazání v¹ech ostatních oknen"
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr "Posun druhého okna o stránku dolù"
+
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr "Posun druhého okna o stránku zpìt"
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr "Zmìna velikosti okna"
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr "Zvìt¹ení nebo zmen¹ení oken na obrazovce tak, aby byla stejnì velká"
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr ""
+"Zmìna stavu zalamování v aktuálním oknì (zapnuto->vypni, vypnuto->zapni)"
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+#, fuzzy
+msgid "Select the Next node"
+msgstr "Zobrazení následujícího uzlu"
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+#, fuzzy
+msgid "Select the Prev node"
+msgstr "Zobrazení pøedchozího uzlu"
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+#, fuzzy
+msgid "Select the Up node"
+msgstr "Zobrazení vy¹¹ího uzlu"
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr "Zobrazení posledního uzlu v tomto souboru"
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr "Toto okno nemá více dal¹ích uzlù"
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr "Zobrazení prvního uzlu v tomto souboru"
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr "Zobrazení poslední polo¾ky menu tohoto uzlu"
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr "Zobrazení této polo¾ky menu"
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr "V tomto menu není %d. polo¾ka"
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr "Polo¾ka menu (%s): "
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr "Polo¾ka menu: "
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr "Následování køí¾ového odkazu (%s): "
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr "Následování køí¾ového odkazu: "
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr "Zadání jména polo¾ky menu a následné zobrazení"
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr ""
+"Zadání jména poznámky pod èarou nebo køí¾ového odkazu a následné zobrazení"
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr "Pøesun na zaèátek menu tohoto uzlu"
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr ""
+"Nav¹tívení tolika polo¾ek menu, kolik je mo¾no. Ka¾dá polo¾ka v jiném oknì."
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr "Zadání jména uzlu a jeho následné zobrazení"
+
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr "Pøesun na uzel: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "V uzlu \"%s\" není menu."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "Polo¾ka menu \"%s\" v uzlu \"%s\" není."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr "Uzel, na který se \"%s\" odkazuje, nelze v \"%s\" najít."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr "Ètení seznamu menu zaèínajíce v adresáøi a pokraèujíce dále"
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr "Následování menu: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr ""
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr ""
+
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr "Zadání jména manuálové stránky a následné zobrazení"
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr "Manuálová stránka: "
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr "Zobrazení nejvy¹¹ího uzlu v tomto souboru"
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr "Zobrazení uzlu `(dir)'"
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr "Zru¹ení uzlu (%s): "
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr "Uzel `%s' nelze zru¹it"
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr "Poslední uzel nelze zru¹it"
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr "Zobrazení poslední dobou nejvíce nav¹tìvovaných uzlù"
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr "Zru¹ení tohoto uzlu"
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr "Zadání jména souboru a jeho následné zobrazení"
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr "Nalezení souboru: "
+
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
+msgstr "Nemohu najít \"%s\"."
+
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
+msgstr "Výstupní soubor \"%s\" nelze vytvoøit."
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr "Dokonèeno."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
+msgstr "Zapisuji uzel \"%s\"..."
+
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr "Poslání obsahu tohoto uzlu pøíkazu INFO_PRINT_COMMAND"
+
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr "Rouru do \"%s\" nelze otevøít."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
+msgstr "Probíhá tisk uzelu \"%s\"..."
+
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
+msgstr "Probíhá hledání podsouboru \"%s\"..."
+
+#: info/session.c:3516
+#, fuzzy
+msgid "Read a string and search for it case-sensitively"
+msgstr "Pøeètení øetìzce a jeho vyhledání"
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr "Pøeètení øetìzce a jeho vyhledání"
+
+#: info/session.c:3531
+#, fuzzy
+msgid "Read a string and search backward for it"
+msgstr "Pøeètení øetìzce a jeho vyhledání"
+
+#: info/session.c:3573
+#, fuzzy, c-format
+msgid "%s%sfor string [%s]: "
+msgstr "%s øetìzce [%s]: "
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr "Zpìtné hledání"
+
+#: info/session.c:3574
+msgid "Search"
+msgstr "Hledání"
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr ""
+
+#: info/session.c:3575
+msgid " "
+msgstr ""
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr "Nebylo nalezeno."
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr ""
+
+#: info/session.c:3636 info/session.c:3646
+#, fuzzy
+msgid "No previous search string"
+msgstr "Není zadán øetìzec, který se má vyhledávat v rejstøíku(cích)."
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr ""
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr "Vyhledávání zadávaného øetìzce hned pøi zadávání"
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr "zpìtné interaktivní hledání: "
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr "interaktivní hledání: "
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr "Bezvýsledné "
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr "Pøesun na pøedcházející køí¾ový odkaz"
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr "Pøesun na následující køí¾ový odkaz"
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr "Zobrazení odkazu nebo polo¾ky menu, která je na tomto øádku"
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr "Zru¹ení aktuální operace"
+
+#: info/session.c:4292
+msgid "Quit"
+msgstr "Ukonèení operace"
+
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
+msgstr "Pøesun kurzoru na zadaný øádek okna"
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr "Pøekreslení obrazovky"
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr "Ukonèení Infa"
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr "Neznámý pøíkaz (%s)."
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr "Sekvence kláves \"\" je neplatná"
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr "Sekvence kláves \"%s\" je neplatná"
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr "Pøidání této èíslice do aktuálního èíselného argumentu"
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr "Zaèátek (nebo dìlení ètyømi) aktuálního èíselného argumentu"
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr "Vnitønì u¾íváno funkcí \\[universal-argument]"
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr "readline: Nedostatek virtuální pamìti!\n"
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr "Je-li zapnuto, pak se poznámky pod èarou objevují a mizí automaticky"
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr "Je-li zapnuto, vytvoøení a smazání okna, mìní velikost ostatních oken"
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr "Je-li zapnuto, pak místo varovného pípnutí blikne obrazovka"
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr "Je-li zapnuto, pak chyby zpùsobí varovné pípnutí"
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr ""
+"Je-li zapnuto, pak Info zapomíná odkomprimovanou èást komprimovaných souborù"
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr "Je-li zapnuto, pak je hledaný øetìzec v nalezeném výrazu zvýraznìn"
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr "Øídí co se stane, kdy¾ je po¾adován posun o stranu na konci uzlu"
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr ""
+"Poèet øádkù, o které posunout okno, kdy¾ se kurzor dostane mimo viditelnou "
+"èást"
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr "Je-li zapnuto, pak Info akceptuje a zobrazuje znaky z normy ISO Latin"
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr "Zobrazení popisu promìnné"
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr "Popis promìnné: "
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr "Nastavení hodnoty Info promìnné"
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr "Nastavení promìnné: "
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr "Nastavení promìnné %s na hodnotu (%d): "
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr "Nastavení promìnné %s na hodnotu (%s): "
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr "--*** Znaèky jsou zastatalé ***"
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr "-----Info: (), øádkù ----, "
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr "-%s---Info: %s, øádkù: %d --%s--"
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr "-%s%s-Info: (%s)%s, øádkù: %d --%s--"
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr " Podsoubor: %s"
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: pøepínaè `%s' není jednoznaèný\n"
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `--%s' musí být zadán bez argumentu\n"
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `%c%s' musí být zadán bez argumentu\n"
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: pøepínaè `%s' vy¾aduje argument\n"
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neznámý pøepínaè `--%s'\n"
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznámý pøepínaè `%c%s'\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: pøepínaè vy¾aduje argument -- %c\n"
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: pøepínaè `-W %s' není jednoznaèný\n"
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `-W %s' musí být zadán bez argumentu\n"
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+#, fuzzy
+msgid "March"
+msgstr "Hledání"
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr ""
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr ""
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr ""
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr ""
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr ""
+
+#: makeinfo/cmds.c:754
+#, fuzzy, c-format
+msgid "%c%s is obsolete"
+msgstr "%c%s chbìjící uzavírací závorka"
+
+#: makeinfo/cmds.c:814
+#, fuzzy, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "%c%s po¾aduje jméno"
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr ""
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr "asis"
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr "none"
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr ""
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr ""
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr ""
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr ""
+
+#: makeinfo/defun.c:368
+#, fuzzy
+msgid "Variable"
+msgstr "Nastavení promìnné: "
+
+#: makeinfo/defun.c:371
+#, fuzzy
+msgid "User Option"
+msgstr "Vlo¾ení doplnìní"
+
+#: makeinfo/defun.c:375
+#, fuzzy
+msgid "Instance Variable"
+msgstr "Popis promìnné: "
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr ""
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr ""
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+#, fuzzy
+msgid "on"
+msgstr "none"
+
+#: makeinfo/defun.c:656
+#, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr ""
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr ""
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr ""
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr ""
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr ""
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr ""
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr ""
+
+#: makeinfo/index.c:212
+#, fuzzy, c-format
+msgid "Unknown index `%s'"
+msgstr "Neznámý pøíkaz `%s'"
+
+#: makeinfo/index.c:382
+#, fuzzy, c-format
+msgid "Index `%s' already exists"
+msgstr "polo¾ka menu `%s' ji¾ pro soubor `%s' existuje"
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr ""
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr ""
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr ""
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr ""
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr ""
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr ""
+
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr ""
+
+#: makeinfo/insertion.c:481
+#, fuzzy, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s: pøepínaè vy¾aduje argument -- %c\n"
+
+#: makeinfo/insertion.c:623
+#, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr ""
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr ""
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr ""
+
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr ""
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr ""
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr ""
+
+#: makeinfo/insertion.c:1074
+#, fuzzy, c-format
+msgid "Unmatched `%c%s'"
+msgstr "Nepárová }"
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr ""
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr ""
+
+#: makeinfo/insertion.c:1175
+#, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr ""
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr ""
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr ""
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr ""
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr ""
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr ""
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr ""
+
+#: makeinfo/macro.c:138
+#, fuzzy, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "Funkce `%s' není známa"
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr ""
+
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr ""
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr ""
+
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr ""
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr ""
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: varování: "
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "Pøíli¹ mnoho chyb! Konec.\n"
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "©patnì umístìný znak %c"
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Více informací získáte pøíkazem `%s --help'.\n"
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:391
+#, fuzzy, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... TEXINFO-SOUBOR...\n"
+"\n"
+" Pøekládá Texinfový zdrojový soubor to mnoha rùzných formátù:\n"
+"Info soubory vhodné pro on-line ètení Emacsem nebo samostatným GNU Info\n"
+"prohlí¾eèem (implicitní); èistý text (pøepínaèem --no-headers); nebo HTML\n"
+"(pøepínaèem --html).\n"
+"\n"
+"Pøepínaèe:\n"
+"-D PROMÌNNÁ definuje promìnnou, jako pøíkaz @set\n"
+"-I ADRESÁØ pøidá ADRESÁØ na konec seznamu adresáøù, ve kterých\n"
+"-P ADRESÁØ pøídá ADRESÁØ na zaèátek seznamu adresáøù, ve "
+"kterých\n"
+" jsou hledány soubory pro @include\n"
+"-U PROMÌNNÁ oddefinuje promìnnou, jako pøíkazem @clear\n"
+"--error-limit=ÈÍSLO skonèí, kdy¾ se objeví ÈÍSLO chyb (implicitnì %d)\n"
+"--fill-column=ÈÍSLO definuje délku øádku ve znacích (implicitnì %d)\n"
+"--footnote-style=STYL ve výstupu budou poznámky pod èarou podle "
+"STYLu:\\n\"\n"
+" `separate' pro umístìní poznámek pod èarou\n"
+" do zvlá¹tního uzlu,\n"
+" `end' pro umístìní poznámek pod èarou na konec "
+"uzlu,\n"
+" ve kterém jsou definovány (implicitní).\n"
+"--force vypí¹e výstup, i kdy¾ byly nalezeny chyby\n"
+"--help vypí¹e tuto nápovìdu a skonèí\n"
+"--html zapí¹e výstup v HTML formátu\n"
+"--ifhtml zpùsobí zpracování @ifhtml a @html, i kdy¾ není\n"
+" výstupem formát HTML\n"
+"--ifinfo zpùsobí zpracování @ifinfo, i kdy¾ je výstupem HTML\n"
+"--iftex zpùsobí zpracování @iftex a @tex\n"
+"--macro-expand=VÝST-SOUBOR, -E VÝST-SOUBOR výstupem bude originální "
+"zdrojový\n"
+" kód s expandovanými makry do souboru VÝST-SOUBOR \n"
+"--no-headers potlaèí oddìlovaèe uzlù a jejich hlavièky\n"
+"--no-ifhtml zpùsobí nevykonávání @ifhtml a @html\n"
+"--no-ifinfo zpùsobí nevykonávání @ifinfo\n"
+"--no-iftex zpùsobí nevykonávání @iftex a @tex\n"
+"--no-split potlaèí rozdìlování velkých výstupních info souborù\n"
+" nebo generování jednoho HTML souboru na uzel\n"
+"--no-validate potlaèí kontrolu køí¾ových odkazù\n"
+"--no-warn potlaèí výpis varování (ne v¹ak chyb)\n"
+"--output=SOUB, -o SOUB výstup do SOUBoru, ignoruje pøíkaz @setfilename\n"
+"--paragraph-indent=HODN odsadí odstavce HODN mezerami (implicitnì %d).\n"
+" jestli¾e je HODN `none' neodsazuje; jestli¾e je "
+"HODN\n"
+" `asis' zanechá ji¾ existující odsazení.\n"
+"--reference-limit=ÈÍSLO oznámí, bude-li køí¾ových odkazù více ne¾ ÈÍSLO\n"
+" (implicitnì %d).\n"
+"-v, --verbose vypisuje bli¾¹í informace o zpracovávání\n"
+"--version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Implicitní nastavení pro podmínky @if... zále¾í na výstupním formátu:\n"
+"pøi generování HTML je zapnut pøepínaè --ifhtml a ostatní jsou vypnuty;\n"
+"pøi generování Info souboru nebo èistého textu je zapnut pøepínaè --ifinfo\n"
+"a ostatní jsou vypnuty.\n"
+"\n"
+" Chyby v programu oznamujte na adrese <bug-texinfo@gnu.org> (pouze "
+"anglicky),\n"
+"obecné otázky smìøujte na <help-texinfo@gnu.org>. Pøipomínky k pøekladu\n"
+"zasílejte na <cs@li.org> (èesky).\n"
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: %s argument musí být èíslo ne `%s'.\n"
+
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "Výstup %s pro expanzi makra nelze otevøít"
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "Pro expanzi makra nelze zadat více ne¾ jeden výstup"
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: argument pro --paragraph-indent musí být èíslo|`none'|`asis', ale ne "
+"`%s'.\n"
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+"%s: argument k --footnote-style musí být `separate'|`end', ale ne `%s'.\n"
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr "%s: chybí argument jména souboru.\n"
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr "Oèekáváno `%s'"
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr "Soubor `%s' nenalezen v `%s'"
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+"%s: Vynechávám expanzi makra na stdout a expanze jde jako Info výstup.\n"
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "Vytváøím %s soubor `%s' ze souboru `%s'.\n"
+
+#: makeinfo/makeinfo.c:1358
+#, fuzzy, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr ""
+"Toto je Info soubor %s, produkován programem Makeinfo verze %s ze souboru "
+"%s\n"
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: Výstupní soubor maker `%s' byl odstranìn, proto¾e byly nalezeny chyby;\n"
+"u¾ijte pøepínaè --force k ponechání souboru.\n"
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: Výstupní soubor `%s' byl odstranìn, proto¾e byly nalezeny chyby;\n"
+"u¾ijte pøepínaè --force k ponechání souboru.\n"
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr "Neznámý pøíkaz `%s'"
+
+#: makeinfo/makeinfo.c:1657
+#, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr "Pou¾ijte závorky k zadání pøíkazu jako argumentu @%s"
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr "%c%s oèekáváno `{...}'"
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "Nepárová }"
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "Funkce neexistuje!"
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr "%c%s chbìjící uzavírací závorka"
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr "`.' nebo `,' musí následovat za køí¾ovým odkazem, ale ne za %c"
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr "®ádný .png nebo .jpg soubor pro `%s'"
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr "soubor `%s' v pøíkazu @image je neèitelný: %s"
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr "pøíkaz @image postrádá jméno souboru"
+
+#: makeinfo/makeinfo.c:3259
+#, fuzzy, c-format
+msgid "{No value for `%s'}"
+msgstr "{Pro \"%s\" není hodnota}"
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr "%c%s po¾aduje jméno"
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr "Vstupní soubor skonèil a pøíkaz `@end %s' nebyl nalezen"
+
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr ""
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "ignoruji zbloudilý text `%s' po pøíkazu @multitable"
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr "Pøíli¹ mnoho sloupcù v multitabulkové polo¾ce (max %d)"
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr "sloupec #%d v multitabulce nelze vybrat"
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "pøíkaz `@tab' ignorován, je mimo multitabulku"
+
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "** Vícesloupcový výstup z posledního øádku:\n"
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* sloupec #%d: výstup = %s\n"
+
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr ""
+
+#: makeinfo/node.c:514
+#, fuzzy, c-format
+msgid "Formatting node %s...\n"
+msgstr "Zapisuji uzel \"%s\"..."
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr ""
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr ""
+
+#: makeinfo/node.c:774
+#, fuzzy
+msgid "Node:"
+msgstr "Dal¹í"
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+#, fuzzy
+msgid "Next:"
+msgstr "Dal¹í"
+
+#: makeinfo/node.c:793
+#, fuzzy
+msgid "Previous:"
+msgstr "Pøedchozí"
+
+#: makeinfo/node.c:803
+#, fuzzy
+msgid "Up:"
+msgstr "Nahoru"
+
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr ""
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr ""
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr ""
+
+#: makeinfo/node.c:1115
+#, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr ""
+
+#: makeinfo/node.c:1119
+#, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr ""
+
+#: makeinfo/node.c:1133
+#, fuzzy
+msgid "Prev"
+msgstr "Pøedchozí"
+
+#: makeinfo/node.c:1176
+#, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr ""
+
+#: makeinfo/node.c:1180
+#, c-format
+msgid "This node (%s) has the bad Next"
+msgstr ""
+
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr ""
+
+#: makeinfo/node.c:1197
+#, fuzzy
+msgid "Up"
+msgstr "Nahoru"
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr ""
+
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr ""
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr ""
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr ""
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr ""
+
+#: makeinfo/sectioning.c:468
+#, fuzzy, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "%c%s chbìjící uzavírací závorka"
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr ""
+
+#: makeinfo/sectioning.c:496
+#, fuzzy, c-format
+msgid "Here is the %ctop node"
+msgstr "Zobrazení vy¹¹ího uzlu"
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr ""
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr ""
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr ""
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr ""
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: varování: "
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "virtuální pamì» vyèerpána"
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr " pro %s"
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr "Více informací získáte pøíkazem `%s --help'.\n"
+
+#: util/install-info.c:389
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [INFO-SOUBOR [DIR-SOUBOR]]\n"
+"\n"
+"Instaluje nebo ma¾e polo¾ky ze souboru INFO-SOUBOR v Info adresáøi "
+"DIR-SOUBOR.\n"
+"\n"
+"Pøepínaèe:\n"
+"--delete sma¾e existující polo¾ky INFO-SOUBORu z DIS=SOUBORU;\n"
+" nevkládá ¾ádné nové.\n"
+"--dir-file=JMÉNO zadání jména adresáøového souboru Infa. Rovnocenné\n"
+" s pou¾itím argumentu DIR-SOUBOR.\n"
+"--entry=TEXT vlo¾í text jako polo¾ku Info adresáøe. TEXT musí mít "
+"formát\n"
+" jako øádek polo¾ky Info menu, plus nula nebo více extra\n"
+" øádkù zaèínajících mezerou. Jestli¾e zadáte více ne¾ "
+"jednu\n"
+" polo¾ku, budou pøidány v¹echny. Jestli¾e nezadáte ¾ádnou\n"
+" polo¾ku, budou získány z informací v Info souboru.\n"
+"--help vypí¹e tuto nápovìdu a skonèí\n"
+"--info-file=SOUBOR zadání Info souboru pro instalaci do Info adresáøe.\n"
+" Rovnocenné s argumentem INFO-SOUBOR.\n"
+"--info-dir=ADRESÁØ stejné jako --dir-file=ADRESÁØ/dir.\n"
+"--item=TEXT stejné jako --entry=TEXT.\n"
+"--quiet potlaèí varování.\n"
+"--remove stejné jako --delete.\n"
+"--section=SEKCE vlo¾í polo¾ky adresáøe do sekce SEKCE Info adresáøe.\n"
+" Jestli¾e je zadáno více sekcí, jsou v¹echny polo¾ky\n"
+" pøidány do v¹ech zadaných sekcí. Jestli¾e nejsou zadány\n"
+" ¾ádné sekce, pak jsou sekce získány z Info souboru.\n"
+"--version vypí¹e oznaèení verze a skonèí.\n"
+"\n"
+" Chyby v programu oznamujte na adrese <bug-texinfo@gnu.org> (pouze "
+"anglicky),\n"
+"obecné otázky smìøujte na <help-texinfo@gnu.org>. Pøipomínky\n"
+"k pøekladu zasílejte na <cs@li.org> (èesky).\n"
+
+#: util/install-info.c:442
+#, fuzzy, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+" Toto je soubor .../info/dir, který obsahuje nejvy¹¹í uzly hierarchie\n"
+"Info dokumentù a je nazýván (dir)Top. Kdy¾ poprvé spustíte Info dostanete\n"
+"se do tohoto uzlu.\n"
+"^_\n"
+"Soubor: dir Uzel: Top Toto je vrchol INFO stromu\n"
+"\n"
+" Tento (Adresáøový uzel) obsahuje menu hlavních témat.\n"
+" Stiskem \"q\" Info ukonèíte, stiskem \"?\" získáte seznam v¹ech Info "
+"pøíkazù,\n"
+" stiskem \"d\" se vrátíte sem, stiskem \"h\" získáte nápovìdu pro "
+"zaèáteèníky,\n"
+" napsáním \"mEmacs\" si zobrazíte manuál k Emacsu, ...\n"
+"\n"
+" Pokud chcete v Emacsu zobrazit obsah polo¾ky menu nebo následovat "
+"køí¾ový\n"
+" odkaz, mù¾ete to provést kliknutím prostøedním tlaèítkem my¹i.\n"
+"\n"
+"* Menu:\n"
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr "%s: %s nelze èíst a %s nelze vytvoøit\n"
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr ""
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY bez odpovídajícího END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY bez pøedchozího START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr "%s: Info adresáø zadejte pouze jednou.\n"
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr "%s: Info soubor zadejte pouze jednou.\n"
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr "nadbyteèný argument `%s' v pøíkazovém øádku"
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr ""
+"Vstupní soubor nezadán; pou¾itím pøepínaèe --help získáte bli¾¹í informace."
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr ""
+"Adresáø nebyl zadán; pou¾itím pøepínaèe `--help' získáte bli¾¹í informace"
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr "v Info adresáøi `%s' není ¾ádná polo¾ka"
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr "polo¾ka menu `%s' ji¾ pro soubor `%s' existuje"
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr "pro `%s' nebyly nalezeny ¾ádné polo¾ky"
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "vypí¹e tuto nápovìdu a skonèí"
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr "zanechá doèasné soubory po ukonèení"
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr "nezanechá doèasné soubory po ukonèení"
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr "zapí¹e výstup do SOUBORu"
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr "vypí¹e oznaèení verze a skonèí"
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR...\n"
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr "Generuje seøazený rejstøík pro ka¾dý TeXovský výstupní SOUBOR.\n"
+
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr "SOUBOR... je obvykle `foo.%c%c' pro dokument `foo.texi'.\n"
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Pøepínaèe:\n"
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"\n"
+" Chyby v programu oznamujte na adrese <bug-texinfo@gnu.org> (pouze "
+"anglicky),\n"
+"obecné otázky smìøujte na <help-texinfo@gnu.org>. Pøipomínky k pøekladu\n"
+"zasílejte na <cs@li.org> (èesky).\n"
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr "%s: není texinfovský rejstøík"
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr "soubor %s nepovedlo se znovu otevøít"
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr ""
+
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr "polo¾ka %s následuje za polo¾kou se sekundárním jménem"
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr "%s; v souboru `%s'.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TEXINFO-FILE...\n"
+#~ "\n"
+#~ "Translate Texinfo source documentation to various other formats:\n"
+#~ "Info files suitable for reading online with Emacs or standalone GNU Info\n"
+#~ "(by default); plain text (with --no-headers); or HTML (with --html).\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -D VAR define a variable, as with @set.\n"
+#~ " -I DIR append DIR to the @include search path.\n"
+#~ " -P DIR prepend DIR to the @include search path.\n"
+#~ " -U VAR undefine a variable, as with @clear.\n"
+#~ " --commands-in-node-names allow @ commands in node names.\n"
+#~ " --error-limit=NUM quit after NUM errors (default %d).\n"
+#~ " --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+#~ " --footnote-style=STYLE output footnotes according to STYLE:\n"
+#~ " `separate' to place footnotes in their own "
+#~ "node,\n"
+#~ " `end' to place the footnotes at the end of the\n"
+#~ " node in which they are defined (the default).\n"
+#~ " --force preserve output even if errors.\n"
+#~ " --help display this help and exit.\n"
+#~ " --html output HTML rather than Info format;\n"
+#~ " implies --no-split.\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [PØEPÍNAÈ]... TEXINFO-SOUBOR...\n"
+#~ "\n"
+#~ " Pøekládá Texinfový zdrojový soubor to mnoha rùzných formátù:\n"
+#~ "Info soubory vhodné pro on-line ètení Emacsem nebo samostatným GNU Info\n"
+#~ "prohlí¾eèem (implicitní); èistý text (pøepínaèem --no-headers); nebo HTML\n"
+#~ "(pøepínaèem --html).\n"
+#~ "\n"
+#~ "Pøepínaèe:\n"
+#~ "-D PROMÌNNÁ definuje promìnnou, jako pøíkaz @set\n"
+#~ "-I ADRESÁØ pøidá ADRESÁØ na konec seznamu adresáøù, ve kterých\n"
+#~ "-P ADRESÁØ pøídá ADRESÁØ na zaèátek seznamu adresáøù, ve "
+#~ "kterých\n"
+#~ " jsou hledány soubory pro @include\n"
+#~ "-U PROMÌNNÁ oddefinuje promìnnou, jako pøíkazem @clear\n"
+#~ "--error-limit=ÈÍSLO skonèí, kdy¾ se objeví ÈÍSLO chyb (implicitnì %d)\n"
+#~ "--fill-column=ÈÍSLO definuje délku øádku ve znacích (implicitnì %d)\n"
+#~ "--footnote-style=STYL ve výstupu budou poznámky pod èarou podle "
+#~ "STYLu:\\n\"\n"
+#~ " `separate' pro umístìní poznámek pod èarou\n"
+#~ " do zvlá¹tního uzlu,\n"
+#~ " `end' pro umístìní poznámek pod èarou na konec "
+#~ "uzlu,\n"
+#~ " ve kterém jsou definovány (implicitní).\n"
+#~ "--force vypí¹e výstup, i kdy¾ byly nalezeny chyby\n"
+#~ "--help vypí¹e tuto nápovìdu a skonèí\n"
+#~ "--html zapí¹e výstup v HTML formátu\n"
+#~ "--ifhtml zpùsobí zpracování @ifhtml a @html, i kdy¾ není\n"
+#~ " výstupem formát HTML\n"
+#~ "--ifinfo zpùsobí zpracování @ifinfo, i kdy¾ je výstupem HTML\n"
+#~ "--iftex zpùsobí zpracování @iftex a @tex\n"
+#~ "--macro-expand=VÝST-SOUBOR, -E VÝST-SOUBOR výstupem bude originální "
+#~ "zdrojový\n"
+#~ " kód s expandovanými makry do souboru VÝST-SOUBOR \n"
+#~ "--no-headers potlaèí oddìlovaèe uzlù a jejich hlavièky\n"
+#~ "--no-ifhtml zpùsobí nevykonávání @ifhtml a @html\n"
+#~ "--no-ifinfo zpùsobí nevykonávání @ifinfo\n"
+#~ "--no-iftex zpùsobí nevykonávání @iftex a @tex\n"
+#~ "--no-split potlaèí rozdìlování velkých výstupních info souborù\n"
+#~ " nebo generování jednoho HTML souboru na uzel\n"
+#~ "--no-validate potlaèí kontrolu køí¾ových odkazù\n"
+#~ "--no-warn potlaèí výpis varování (ne v¹ak chyb)\n"
+#~ "--output=SOUB, -o SOUB výstup do SOUBoru, ignoruje pøíkaz @setfilename\n"
+#~ "--paragraph-indent=HODN odsadí odstavce HODN mezerami (implicitnì %d).\n"
+#~ " jestli¾e je HODN `none' neodsazuje; jestli¾e je "
+#~ "HODN\n"
+#~ " `asis' zanechá ji¾ existující odsazení.\n"
+#~ "--reference-limit=ÈÍSLO oznámí, bude-li køí¾ových odkazù více ne¾ ÈÍSLO\n"
+#~ " (implicitnì %d).\n"
+#~ "-v, --verbose vypisuje bli¾¹í informace o zpracovávání\n"
+#~ "--version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Implicitní nastavení pro podmínky @if... zále¾í na výstupním formátu:\n"
+#~ "pøi generování HTML je zapnut pøepínaè --ifhtml a ostatní jsou vypnuty;\n"
+#~ "pøi generování Info souboru nebo èistého textu je zapnut pøepínaè --ifinfo\n"
+#~ "a ostatní jsou vypnuty.\n"
+#~ "\n"
+#~ " Chyby v programu oznamujte na adrese <bug-texinfo@gnu.org> (pouze "
+#~ "anglicky),\n"
+#~ "obecné otázky smìøujte na <help-texinfo@gnu.org>. Pøipomínky k pøekladu\n"
+#~ "zasílejte na <cs@li.org> (èesky).\n"
+
+#, fuzzy
+#~ msgid " %-10s Quit this help (that's a zero not an oh).\n"
+#~ msgstr " CTRL-x 0 Ukonèení prohlí¾ení nápovìdy."
+
+#~ msgid "Virtual memory exhausted in %s ()! Needed %d bytes."
+#~ msgstr "Virtuální pamì» vyèerpána ve funkci %s ()! %d bajtù je potøebných."
+
+#~ msgid " times"
+#~ msgstr " krát"
+
+#~ msgid "%d times"
+#~ msgstr "%d krát"
+
+#~ msgid "multitable item not in active multitable"
+#~ msgstr "multitabulková polo¾ka není v aktivní multitabulce"
diff --git a/gnu/usr.bin/texinfo/po/de.gmo b/gnu/usr.bin/texinfo/po/de.gmo
index 5636eb828b2..cba41ab7123 100644
--- a/gnu/usr.bin/texinfo/po/de.gmo
+++ b/gnu/usr.bin/texinfo/po/de.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/de.po b/gnu/usr.bin/texinfo/po/de.po
index 081cce67a6a..b83c3bc9844 100644
--- a/gnu/usr.bin/texinfo/po/de.po
+++ b/gnu/usr.bin/texinfo/po/de.po
@@ -1,19 +1,45 @@
# German messages for GNU Texinfo
-# Copyright © 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright © 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+# Karl Eichwalder <ke@gnu.franken.de>, 1999.
+# Karl Eichwalder <ke@suse.de>, 1997, 1998, 1999.
# Karl Eichwalder <ke@ke.Central.DE>, 1996.
-# Karl Eichwalder <ke@SuSE.DE>, 1997,1998.
+#
+# 1999-08-18 07:48:14 CEST
+# Update: version 3.12q.
+# -ke-
+#
+# 1999-07-28 08:56:22 CEST
+# Update: version 3.12n.
+# -ke-
+#
+# 1999-04-20 21:51:54 CEST
+# Update: version 3.12h.
+# reuse getopt translations from wget.
+# -ke-
+#
+# 1999-02-06 20:24:24 MET
+# Update: version 3.12c.
+# -ke-
+#
+# 1998-05-03 12:25:13 MEST
+# Cosmetic changes.
+# -ke-
+#
+# 1998-04-05 18:25:42 MEST
+# Hints by "Carl Friedrich Spilcke-Liss" <carl-friedriech.spilcke-liss@ensae.fr>.
+# -ke-
#
# 1998-02-28 14:29:49 MET
# Revised for 3.11b
-# I refuse to translate getopt.c strings
+# I refuse to translate getopt.c strings.
# -ke-
#
msgid ""
msgstr ""
-"Project-Id-Version: texinfo 3.11\n"
-"POT-Creation-Date: 1998-03-03 13:32-0500\n"
-"PO-Revision-Date: 1998-02-28 14:32+01:00\n"
-"Last-Translator: Karl Eichwalder <ke@SuSE.DE>\n"
+"Project-Id-Version: texinfo 3.12q\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-07-28 08:55+02:00\n"
+"Last-Translator: Karl Eichwalder <ke@gnu.franken.de>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
@@ -24,12 +50,12 @@ msgstr ""
#. Echo Area Movement Commands
#.
#. ****************************************************************
-#: info/echo-area.c:283 info/session.c:698
+#: info/echo-area.c:283 info/session.c:711
msgid "Move forward a character"
msgstr "Ein Zeichen vorwärts bewegen"
#. Move point backward in the node.
-#: info/echo-area.c:295 info/session.c:714
+#: info/echo-area.c:295 info/session.c:727
msgid "Move backward a character"
msgstr "Ein Zeichen rückwärts bewegen"
@@ -42,11 +68,11 @@ msgid "Move to the end of this line"
msgstr "Zum Ende dieser Zeile bewegen"
#. Move forward a word in the input line.
-#: info/echo-area.c:320 info/session.c:732
+#: info/echo-area.c:320 info/session.c:745
msgid "Move forward a word"
msgstr "Ein Wort vorwärts bewegen"
-#: info/echo-area.c:360 info/session.c:781
+#: info/echo-area.c:360 info/session.c:794
msgid "Move backward a word"
msgstr "Ein Wort rückwärts bewegen"
@@ -120,14 +146,13 @@ msgstr "Das dem Cursor folgende Wort killen"
msgid "Kill the word preceding the cursor"
msgstr "Das dem Cursor vorangehende Wort killen"
-# checkit
#: info/echo-area.c:871
msgid "Not complete"
msgstr "Nicht vollständig"
#: info/echo-area.c:916
msgid "List possible completions"
-msgstr "Mögliche Vervollständigungen listen"
+msgstr "Mögliche Vervollständigungen auflisten"
#: info/echo-area.c:929
msgid "No completions"
@@ -146,11 +171,11 @@ msgstr "Eine Vervollständigung:\n"
msgid "%d completions:\n"
msgstr "%d Vervollständigungen:\n"
-#: info/echo-area.c:1088
+#: info/echo-area.c:1089
msgid "Insert completion"
msgstr "Vervollständigung einfügen"
-#: info/echo-area.c:1221
+#: info/echo-area.c:1222
msgid "Building completions..."
msgstr "Bilde Vervollständigungen..."
@@ -158,15 +183,15 @@ msgstr "Bilde Vervollständigungen..."
#. Scroll the "other" window. If there is a window showing completions, scroll
#. that one, otherwise scroll the window which was active on entering the read
#. function.
-#: info/echo-area.c:1319
+#: info/echo-area.c:1320
msgid "Scroll the completions window"
msgstr "Vervollständigungs-Fenster »scrollen«"
-#: info/footnotes.c:206
+#: info/footnotes.c:212
msgid "Footnotes could not be displayed"
msgstr "Fußnoten können nicht angezeigt werden"
-#: info/footnotes.c:232
+#: info/footnotes.c:238
msgid "Show the footnotes associated with this node in another window"
msgstr "Zeige die mit diesem Node verbundenen Fußnoten im anderen Fenster"
@@ -225,22 +250,22 @@ msgstr ""
"»%s« in %s gefunden. (»\\[next-index-match]« versucht nächsten Eintrag zu "
"finden.)"
-#: info/indices.c:533
+#: info/indices.c:549
#, c-format
msgid "Scanning indices of \"%s\"..."
msgstr "Index von »%s« wird durchsucht..."
-#: info/indices.c:616
+#: info/indices.c:632
msgid "Grovel all known info file's indices for a string and build a menu"
msgstr ""
"Durchsuche durch alle bekannten Info-Datei-Indices nach einer Zeichenkette "
"und bilde ein Menü"
-#: info/indices.c:620
+#: info/indices.c:636
msgid "Index apropos: "
msgstr "Index apropos: "
-#: info/indices.c:650
+#: info/indices.c:666
#, c-format
msgid ""
"\n"
@@ -249,13 +274,13 @@ msgstr ""
"\n"
"* Menü: Nodes, deren Indices »%s« beinhalten:\n"
-#: info/info.c:212
-msgid "Try --help for more information."
-msgstr "»--help« gibt weitere Informationen."
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr "»--help« gibt weitere Informationen.\n"
# Hier de-Standard-Formulierung einsetzen!
-#: info/info.c:231 makeinfo/makeinfo.c:1089 util/install-info.c:530
-#: util/texindex.c:338
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -268,149 +293,455 @@ msgstr ""
"Kopierbedingung. Es gibt KEINERLEI Garantie, nicht einmal für die\n"
"TAUGLICHKEIT oder die VERWENDBARKEIT ZU EINEM ANGEGEBENEN ZWECK.\n"
-#: info/info.c:363
-msgid "no entries found\n"
-msgstr "Keine Einträge gefunden\n"
-
-#: info/info.c:406
-msgid "There is no menu in this node."
-msgstr "Es gibt kein Menü in diesem Node."
-
-#: info/info.c:437
-#, c-format
-msgid "There is no menu item \"%s\" in this node."
-msgstr "Es gibt keinen Menüpunkt »%s« in diesem Node."
-
-#: info/info.c:501
+#: info/info.c:461
#, c-format
-msgid "Unable to find the node referenced by \"%s\"."
-msgstr "Kann keinen von »%s« referenzierten Node finden."
+msgid "no index entries found for `%s'\n"
+msgstr "Keine Einträge für »%s« gefunden\n"
-#: info/info.c:602
-#, c-format
+# Die "." am Zeilenende habe ich entfernt. -ke-
+#: info/info.c:530
+#, fuzzy, c-format
msgid ""
-"Usage: %s [OPTION]... [INFO-FILE [MENU-ITEM...]]\n"
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
"\n"
"Read documentation in Info format.\n"
-"For more complete documentation on how to use Info, run `info info "
-"options'.\n"
"\n"
"Options:\n"
-"--directory DIR add DIR to INFOPATH.\n"
-"--dribble FILENAME remember user keystrokes in FILENAME.\n"
-"--file FILENAME specify Info file to visit.\n"
-"--node NODENAME specify nodes in first visited Info file.\n"
-"--output FILENAME output selected nodes to FILENAME.\n"
-"--restore FILENAME read initial keystrokes from FILENAME.\n"
-"--subnodes recursively output menu items.\n"
-"--help display this help and exit.\n"
-"--version display version information and exit.\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
"\n"
-"The first argument, if present, is the name of the Info file to read.\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
"Any remaining arguments are treated as the names of menu\n"
-"items in the initial node visited. For example, `info emacs buffers'\n"
-"moves to the node `buffers' in the info file `emacs'.\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
"\n"
-"Email bug reports to bug-texinfo@gnu.org."
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
msgstr ""
"Syntax: %s [OPTION]... [INFO-DATEI [MENU-EINTRAG...]]\n"
"\n"
-"Um Dokumentation zu lesen, die im Info-Format vorliegt.\n"
-"Für eine ausführlichere Anleitung, wie Info zu benutzen ist, »info info\n"
-"options« eingeben.\n"
+"Dokumentation lesen, die im Info-Format vorliegt.\n"
"\n"
"Optionen:\n"
-" --directory VERZ VERZ zu INFOPATH hinzufügen\n"
-" --dribble DATEI Tasteneingaben des Benutzers in DATEI merken\n"
-" --file DATEI zu besuchende Info-DATEI angeben\n"
-" --node KNOTEN Knoten in der ersten zu besuchenden Info-Datei "
+" --directory=VERZ VERZ dem INFOPATH hinzufügen\n"
+" --dribble=DATEI Tasteneingaben des Benutzers in DATEI merken\n"
+" --file=DATEI zu besuchende Info-DATEI angeben\n"
+" --help diese Hilfe anzeigen\n"
+" --index-search=Kette zu einem Knoten gehen, auf den der Indexeintrag "
+"KETTE\n"
+" zeigt\n"
+" --node=KNOTEN Knoten in der ersten zu besuchenden Info-Datei "
"angeben\n"
-" --output DATEI ausgewählte Knoten nach DATEI ausgeben\n"
-" --restore DATEI die beginnenden Tasteneingaben von DATEI lesen\n"
-" --subnodes Menüpunkte rekursiv ausgeben\n"
-" --help diese Hilfe anzeigen\n"
-" --version Programmversion anzeigen\n"
+" --output=DATEI ausgewählte Knoten nach DATEI ausgeben\n"
+" --restore=DATEI die beginnenden Tasteneingaben von DATEI lesen\n"
+" --show-options, --usage\n"
+" zum Knoten mit den Optionen für den Befehlsaufruf "
+"gehen\n"
+" --subnodes Menüpunkte rekursiv ausgeben\n"
+"%s --vi-keys vi- und less-artige Tastenbindungen benutzen\n"
+" --version Programmversion anzeigen\n"
"\n"
-"Verbleibende Parameter werden als Namen von Menüpunkten des zuerst "
+"Der erste Parameter, der keine Option ist, ist der Menüeintrag, von dem aus\n"
+"gestartet werden soll; nach diesem Menüeintrag wird in allen »dir«-Datei\n"
+"gemäß dem INFOPATH gesucht.\n"
+"Wenn kein Menüeintrag angegeben wird, packt info alle »dir«-Dateien "
+"zusammen\n"
+"und zeigt das Ergebnis an.\n"
+"Verbleibende Parameter werden als Namen von Menüeinträgen des zuerst "
"besuchten\n"
-"Knotens angesehen. Man kann sich einfach zum gewünschten Knoten bewegen,\n"
-"indem man die Namen der Menüpunkte angibt, die den Weg dorthin bezeichnen;\n"
-"z. B. »info emacs buffers«.\n"
+"Knotens angesehen.\n"
"\n"
-"Fehler (\"bugs\") bitte an <bug-texinfo@gnu.org> melden.<\n"
+"Beispiele:\n"
+" info Das oberste »dir«-Menü anzeigen\n"
+" info emacs Beim emacs-Knoten im obersten »dir«-Menü "
+"beginnen\n"
+" info emacs buffers Beim buffers-Knoten im emacs-Manual beginnen\n"
+" info --show-options emacs Beim Knoten mit den "
+"emacs-Kommandozeilen-Optionen\n"
+" beginnen\n"
+" info -f ./foo.info Datei ./foo.info anzeigen\n"
"\n"
-"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig."
+"Fehler (\"Bugs\") bitte an <bug-texinfo@gnu.org> melden,\n"
+"allgemeine Fragen und Gedankenaustausch an <help-texinfo@gnu.org>.\n"
+"\n"
+"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n"
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "Kann Knoten »%s« nicht killen"
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "Kann Knoten »%s« nicht killen"
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "Ein permanentes Fenster kann nicht gelöscht werden"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "Ein permanentes Fenster kann nicht gelöscht werden"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "Kein Menü im Knoten »%s«."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "Keine Querverweise in diesem Knoten."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "Keine Querverweise in diesem Knoten."
+
+#: info/info.c:612
+#, fuzzy, c-format
+msgid "No `%s' pointer for this node."
+msgstr "Kein »Next«-Verweis bei diesem Knoten."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "Zum Anfang dieses Knotens bewegen"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "Zum Anfang dieses Knotens bewegen"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr "Grundbefehle in Info-Fenstern\n"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr "*****************************\n"
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr " %-10s Diese Hilfe beenden.\n"
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr " %-10s Info gänzlich beenden.\n"
#: info/infodoc.c:50
-msgid "Basic Commands in Info Windows"
-msgstr "Grundbefehle in Info-Fenstern"
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr " %-10s Das Info-Tutorial aufrufen.\n"
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr "Innerhalb eines Knotens bewegen:\n"
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr "----------------------\n"
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr " %-10s Eine Seite vorwärts blättern.\n"
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr " %-10s Eine Seite rückwärts blättern.\n"
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr " %-10s Zum Beginn dieses Knotens gehen.\n"
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr " %-10s Zum Ende dieses Knotens gehen.\n"
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr " %-10s Eine Seite vorwärts blättern.\n"
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr " %-10s Eine Seite rückwärts blättern.\n"
+
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr "Andere Knoten auswählen:\n"
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr "----------------------\n"
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr " %-10s Zum \"nächsten\" Knoten dieses Knotens bewegen.\n"
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr " %-10s Zum \"vorangehenden\" Knoten dieses Knotens bewegen.\n"
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr " %-10s \"hinauf\" von diesem Knoten bewegen.\n"
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr " %-10s Menüpunkt mit Namensangabe wählen.\n"
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+" Auswahl eines Menüpunkts wird einen anderen Knoten auswählen.\n"
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr " %-10s Einem Querverweis folgen. Namen eines Verweises lesen.\n"
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr ""
+" %-10s Zum letzten Knoten bewegen, der in diesem Fenster sichtbar war.\n"
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr " %-10s Zum nächsten Hypertext-Link dieses Knotens springen.\n"
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr " %-10s Dem Hypertext-Link unter dem Cursor folgen.\n"
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr ""
+" %-10s Zum »directory«-Knoten bewegen. Gleichbedeutend mit »g (DIR)«.\n"
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr ""
+" %-10s Zum »directory«-Knoten bewegen. Gleichbedeutend mit »g (DIR)«.\n"
+
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr "Andere Befehle:\n"
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr "---------------\n"
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr ""
+" %-10s Ersten ... neunten Punkt des Menüs dieses Knotens auswählen.\n"
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr " %-10s Letzten Punkt des Menüs dieses Knotens auswählen.\n"
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+" %-10s Nach einer Zeichenkette in den Indexeinträgen dieser Info-Datei\n"
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+" suchen und den Knoten auswählen, bezeichnet vom ersten gefundenen "
+"Eintrag.\n"
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr " %-10s Zum Knoten mit Namensangabe bewegen.\n"
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr ""
+" Ein Dateiname kann dabei sein, wie bei (DATEINAME)KNOTEN.\n"
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr ""
+" %-10s Diese Info-Datei nach einer angegebenen Zeichenkette durchsuchen\n"
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+" und den Knoten auswählen, in dem das nächste Vorkommen gefunden "
+"wurde.\n"
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr ""
+" %-10s Diese Info-Datei nach einer angegebenen Zeichenkette durchsuchen\n"
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr "Der momentane Suchpfa ist:\n"
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+"Befehle, die in Info-Fenstern verfügbar sind:\n"
+"\n"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+"Befehle, die in der Echo-Area verfügbar sind:\n"
+"\n"
-#: info/infodoc.c:211
+#: info/infodoc.c:280
msgid ""
"The following commands can only be invoked via M-x:\n"
"\n"
msgstr "Die folgenden Befehle können nur via M-x aufgerufen werden:\n"
-#: info/infodoc.c:228
+#: info/infodoc.c:301
msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
msgstr ""
"--- »\\[history-node]« oder »\\[kill-node]« benutzen, um zu beenden ---\n"
#. Create or move to the help window.
-#: info/infodoc.c:328
+#: info/infodoc.c:411
msgid "Display help message"
msgstr "Diesen Hilfe-Text anzeigen"
#. Show the Info help node. This means that the "info" file is installed
#. where it can easily be found on your system.
-#: info/infodoc.c:346
+#: info/infodoc.c:429
msgid "Visit Info node `(info)Help'"
msgstr "Info-Node »(info)Help« besuchen"
-#: info/infodoc.c:470
+#: info/infodoc.c:555
msgid "Print documentation for KEY"
msgstr "Dokumentation für KEY ausgeben"
-#: info/infodoc.c:483
+#: info/infodoc.c:568
#, c-format
msgid "Describe key: %s"
msgstr "Beschreibe Taste: %s"
-#: info/infodoc.c:492
+#: info/infodoc.c:577
#, c-format
msgid "ESC %s is undefined."
msgstr "ESC %s ist nicht definiert."
-#: info/infodoc.c:509
+#: info/infodoc.c:594
#, c-format
msgid "%s is undefined."
msgstr "%s ist nicht definiert."
-#: info/infodoc.c:535
+#: info/infodoc.c:620
#, c-format
msgid "%s is defined to %s."
msgstr "%s ist definiert als %s."
-#: info/infodoc.c:731
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr "Anzeigen, was einzugeben ist, um einen gegebenen Befehl auszuführen"
+
+#: info/infodoc.c:816
msgid "Where is command: "
msgstr "Wo ist der Befehl: "
-#: info/infodoc.c:753
+#: info/infodoc.c:838
#, c-format
msgid "`%s' is not on any keys"
msgstr "»%s« liegt auf keiner Taste"
-#: info/infodoc.c:759
+#: info/infodoc.c:844
#, c-format
msgid "%s can only be invoked via %s."
msgstr "%s kann nur via %s aufgerufen werden."
-#: info/infodoc.c:762
+#: info/infodoc.c:847
#, c-format
msgid "%s can be invoked via %s."
msgstr "%s kann via %s aufgerufen werden."
-#: info/infodoc.c:766
+#: info/infodoc.c:851
#, c-format
msgid "There is no function named `%s'"
msgstr "Es gibt keine Funktion mit Namen »%s«"
@@ -442,7 +773,7 @@ msgid "Set screen height to (%d): "
msgstr "Bildschirm-Höhe auf (%d) setzen: "
# checkit
-#: info/makedoc.c:126
+#: info/makedoc.c:132
msgid ""
" Source files groveled to make this file include:\n"
"\n"
@@ -450,7 +781,7 @@ msgstr ""
" Quelldatei \"groveled\", damit diese Datei enthält:\n"
"\n"
-#: info/makedoc.c:450
+#: info/makedoc.c:465
#, c-format
msgid "Couldn't manipulate the file %s.\n"
msgstr "Datei »%s« ist nicht zu verändern.\n"
@@ -467,7 +798,7 @@ msgstr ""
" (Datei)Knoten Zeilen Größe Beinhaltet Datei\n"
" ------------- ------ ----- ----------------"
-#: info/nodemenu.c:197
+#: info/nodemenu.c:199
msgid ""
"Here is the menu of nodes you have recently visited.\n"
"Select one from this menu, or use `\\[history-node]' in another window.\n"
@@ -476,174 +807,181 @@ msgstr ""
"Einen von diesem Menü auswählen oder »\\[history-node]« im anderen Fenster\n"
"benutzen.\n"
-#: info/nodemenu.c:217
+#: info/nodemenu.c:219
msgid "Make a window containing a menu of all of the currently visited nodes"
msgstr ""
"Veranlassen, dass ein Fenster ein Menü aller aktuell besuchten Knoten enthält"
-#: info/nodemenu.c:297
+#: info/nodemenu.c:299
msgid "Select a node which has been previously visited in a visible window"
msgstr ""
"Einen Knoten auswählen, der zuvor in einem sichtbaren Fenster besucht wurde"
-#: info/nodemenu.c:309
+#: info/nodemenu.c:311
msgid "Select visited node: "
msgstr "Besuchten Knoten auswählen: "
-#: info/nodemenu.c:329 info/session.c:1996
+#: info/nodemenu.c:331 info/session.c:2146
#, c-format
msgid "The reference disappeared! (%s)."
msgstr "Der Verweispunkt ist verschwunden! (%s)."
-#: info/session.c:162
-#, c-format
+#: info/session.c:169
+#, fuzzy, c-format
msgid ""
-"Welcome to Info version %s. \"\\[get-help-window]\" for help, "
-"\"\\[menu-item]\" for menu item."
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
msgstr ""
"Willkommen bei Info Version %s. \"\\[get-help-window]\" um Hilfe zu "
"bekommen,\n"
"mit \"\\[menu-item]\" Menüpunkt anzeigen."
#. Move WINDOW's point down to the next line if possible.
-#: info/session.c:629
+#: info/session.c:642
msgid "Move down to the next line"
msgstr "Eine Zeile nach unten bewegen"
#. Move WINDOW's point up to the previous line if possible.
-#: info/session.c:644
+#: info/session.c:657
msgid "Move up to the previous line"
msgstr "Eine Zeile nach oben bewegen"
#. Move WINDOW's point to the end of the true line.
-#: info/session.c:659
+#: info/session.c:672
msgid "Move to the end of the line"
msgstr "Zum Ende dieser Zeile bewegen"
#. Move WINDOW's point to the beginning of the true line.
-#: info/session.c:679
+#: info/session.c:692
msgid "Move to the start of the line"
msgstr "Zum Anfang der Zeile bewegen"
-#: info/session.c:855
-msgid " times"
-msgstr "mal"
-
-#: info/session.c:857
-#, c-format
-msgid "%d times"
-msgstr "%d mal"
-
-#: info/session.c:895
-msgid "No \"Next\" pointer for this node."
-msgstr "Kein »Next«-Verweis bei diesem Knoten."
-
-#: info/session.c:898
-msgid "Following \"Next\" node..."
-msgstr "»Next«-Knoten folgend..."
-
-# checkit
-# üs? -ke-
-#: info/session.c:899 info/session.c:927 info/session.c:999
-#: info/session.c:1717
+#: info/session.c:884 makeinfo/node.c:1092
msgid "Next"
msgstr ""
-#: info/session.c:915
+#: info/session.c:887
+msgid "Following Next node..."
+msgstr "Folge »Next«-Knoten..."
+
+#: info/session.c:904
msgid "Selecting first menu item..."
-msgstr "Ersten Menüpunkt auswählen..."
+msgstr "Wähle ersten Menüpunkt aus..."
-# checkit
-#: info/session.c:926
-msgid "Selecting \"Next\" node..."
-msgstr "Den Knoten \"Next\" auswählen..."
+#: info/session.c:915
+msgid "Selecting Next node..."
+msgstr "Wähle »Next«-Knoten aus..."
-# checkit
-# üs? -ke-
-#: info/session.c:950 info/session.c:1063 info/session.c:1733
-msgid "Up"
-msgstr ""
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr "%d mal aufwärts bewegen (»Up«), dann der Nächste (»Next«)."
-#: info/session.c:1020
-msgid "No more nodes."
-msgstr "Keine \"Nodes\" mehr"
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr "Keine weiteren Knoten in diesem Dokument."
-#: info/session.c:1044
-msgid "No \"Prev\" for this node."
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
msgstr "Kein »Prev« bei diesem Knoten."
# checkit
#. Move to the previous node. If this node now contains a menu,
#. and we have not inhibited movement to it, move to the node
#. corresponding to the last menu item.
-#: info/session.c:1047 info/session.c:1100
-msgid "Moving \"Prev\" in this window."
-msgstr "Nach »Prev« in diesem Fenster bewegen."
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
+msgstr "Zum nächsten (»Prev«) in diesem Fenster bewegen."
-# checkit
-# üs? -ke-
-#: info/session.c:1048 info/session.c:1101 info/session.c:1725
-msgid "Prev"
-msgstr ""
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr "Kein »Prev« oder »Up« für diesen Knoten innerhalb dieses Dokuments."
-#: info/session.c:1059
-msgid "No \"Prev\" or \"Up\" for this node."
-msgstr "Kein »Prev« oder »Up« bei diesem Knoten."
-
-#: info/session.c:1062
-msgid "Moving \"Up\" in this window."
+#: info/session.c:1053
+msgid "Moving Up in this window."
msgstr "Nach »Up« in diesem Fenster bewegen."
-#: info/session.c:1110
-msgid "Moving to \"Prev\"'s last menu item."
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
msgstr "Nach dem letzten Menüpunkt von »Prev« bewegen."
-#: info/session.c:1121
+#: info/session.c:1112
msgid "Move forwards or down through node structure"
msgstr "Vorwärts oder abwärts durch die Knotenstruktur bewegen"
-#: info/session.c:1137
+#: info/session.c:1128
msgid "Move backwards or up through node structure"
msgstr "Zurück oder aufwärts durch die Knotenstruktur bewegen"
#. Show the next screen of WINDOW's node.
-#: info/session.c:1152
+#: info/session.c:1143
msgid "Scroll forward in this window"
msgstr "In diesem Fenster vorwärts »scrollen«"
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr ""
+"In diesem Fenster vorwärts »scrollen« und die Standard-Fenstergröße setzen"
+
#. Show the previous screen of WINDOW's node.
-#: info/session.c:1197
+#: info/session.c:1200
msgid "Scroll backward in this window"
msgstr "In diesem Fenster rückwärts »scrollen«"
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr ""
+"In diesem Fenster rückwärts »scrollen« und die Standard-Fenstergröße setzen"
+
#. Move to the beginning of the node.
-#: info/session.c:1237
+#: info/session.c:1252
msgid "Move to the start of this node"
msgstr "Zum Anfang dieses Knotens bewegen"
#. Move to the end of the node.
-#: info/session.c:1244
+#: info/session.c:1259
msgid "Move to the end of this node"
msgstr "Zum Ende dieses Knotens bewegen"
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr "Zeilenweise abwärts scrollen"
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr "Zeilenweise zurück scrollen"
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr "Einen halben Bildschirm abwärts scrollen"
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr "Einen halben Bildschirm zurück scrollen"
+
#. ****************************************************************
#.
#. Commands for Manipulating Windows
#.
#. ****************************************************************
#. Make the next window in the chain be the active window.
-#: info/session.c:1257
+#: info/session.c:1356
msgid "Select the next window"
msgstr "Das nächste Fenster auswählen"
#. Make the previous window in the chain be the active window.
-#: info/session.c:1296
+#: info/session.c:1395
msgid "Select the previous window"
msgstr "Das vorige Fenster auswählen"
#. Split WINDOW into two windows, both showing the same node. If we
#. are automatically tiling windows, re-tile after the split.
-#: info/session.c:1347
+#: info/session.c:1446
msgid "Split the current window"
msgstr "Aktuelles Fenster unterteilen"
@@ -651,287 +989,335 @@ msgstr "Aktuelles Fenster unterteilen"
#. automatically displaying footnotes, show or remove the footnotes
#. window. If we are automatically tiling windows, re-tile after the
#. deletion.
-#: info/session.c:1428
+#: info/session.c:1527
msgid "Delete the current window"
msgstr "Aktuelles Fenster löschen"
-#: info/session.c:1436
+#: info/session.c:1535
msgid "Cannot delete a permanent window"
msgstr "Ein permanentes Fenster kann nicht gelöscht werden"
#. Just keep WINDOW, deleting all others.
-#: info/session.c:1469
+#: info/session.c:1568
msgid "Delete all other windows"
msgstr "Alle anderen Fenster löschen"
#. Scroll the "other" window of WINDOW.
-#: info/session.c:1515
+#: info/session.c:1614
msgid "Scroll the other window"
msgstr "Das andere Fenster »scrollen«"
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr "Das andere Fenster rückwärts blättern"
+
#. Change the size of WINDOW by AMOUNT.
-#: info/session.c:1535
+#: info/session.c:1641
msgid "Grow (or shrink) this window"
msgstr "Aktuelles Fenster vergrößern (oder verkleinern)"
-#: info/session.c:1546
+#: info/session.c:1652
msgid "Divide the available screen space among the visible windows"
msgstr ""
"Den vorhandenen Bildschirmplatz unter allen sichtbaren Fenstern aufteilen"
-#: info/session.c:1553
+#: info/session.c:1659
msgid "Toggle the state of line wrapping in the current window"
msgstr "Den Status des Zeilenumbruchs im aktuellen Fenster umschalten"
#. Make WINDOW display the "Next:" node of the node currently being
#. displayed.
-#: info/session.c:1714
-msgid "Select the `Next' node"
+#: info/session.c:1838
+msgid "Select the Next node"
msgstr "Den »Next«-Knoten auswählen"
#. Make WINDOW display the "Prev:" node of the node currently being
#. displayed.
-#: info/session.c:1722
-msgid "Select the `Prev' node"
+#: info/session.c:1846
+msgid "Select the Prev node"
msgstr "Den »Prev«-Knoten auswählen"
#. Make WINDOW display the "Up:" node of the node currently being
#. displayed.
-#: info/session.c:1730
-msgid "Select the `Up' node"
-msgstr "Den »Up«-Knoten auswählen"
+#: info/session.c:1854
+msgid "Select the Up node"
+msgstr "Den übergeordneten Knoten auswählen (»Up«)"
#. Make WINDOW display the last node of this info file.
-#: info/session.c:1737
+#: info/session.c:1861
msgid "Select the last node in this file"
msgstr "Den letzten Knoten dieser Datei auswählen"
# checkit
-#: info/session.c:1750 info/session.c:1768
+#: info/session.c:1888 info/session.c:1921
msgid "This window has no additional nodes"
msgstr "Dies Fenster hat keine weiteren Knoten"
#. Make WINDOW display the first node of this info file.
-#: info/session.c:1759
+#: info/session.c:1894
msgid "Select the first node in this file"
msgstr "Den ersten Knoten dieser Datei auswählen"
-#: info/session.c:1778
+#: info/session.c:1928
msgid "Select the last item in this node's menu"
msgstr "Den letzten Punkt des Menüs dieses Knotens auswählen"
#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
-#: info/session.c:1784
+#: info/session.c:1934
msgid "Select this menu item"
msgstr "Diesen Menüpunkt auswählen"
-#: info/session.c:1813
+#: info/session.c:1963
#, c-format
msgid "There aren't %d items in this menu."
msgstr "Es sind keine %d Punkte in diesem Menü."
-#: info/session.c:1944
+#: info/session.c:2094
#, c-format
msgid "Menu item (%s): "
msgstr "Menüpunkt (%s): "
-#: info/session.c:1946
+#: info/session.c:2096
msgid "Menu item: "
msgstr "Menüpunkt: "
-#: info/session.c:1951
+#: info/session.c:2101
#, c-format
msgid "Follow xref (%s): "
msgstr "Folge xref (%s): "
-#: info/session.c:1953
+#: info/session.c:2103
msgid "Follow xref: "
msgstr "Folge xref: "
#. Read a line (with completion) which is the name of a menu item,
#. and select that item.
-#: info/session.c:2042
+#: info/session.c:2191
msgid "Read a menu item and select its node"
msgstr "Einen Menüpunkt lesen und seinen Knoten auswählen"
-#: info/session.c:2050
+#: info/session.c:2199
msgid "Read a footnote or cross reference and select its node"
msgstr "Fußnote oder Querverweis lesen und den Konote auswählen"
#. Position the cursor at the start of this node's menu.
-#: info/session.c:2056
+#: info/session.c:2205
msgid "Move to the start of this node's menu"
msgstr "Zum Anfang des Menüs dieses Knotens bewegen"
-#: info/session.c:2080
+#: info/session.c:2229
msgid "Visit as many menu items at once as possible"
msgstr "So viele Menüpunkte wie möglich auf einmal besuchen"
#. Read a line of input which is a node name, and go to that node.
-#: info/session.c:2108
+#: info/session.c:2257
msgid "Read a node name and select it"
msgstr "Den Namen eines Knotens lesen und diesen auswählen"
-#: info/session.c:2169 info/session.c:2173
-msgid "Goto Node: "
-msgstr "Gehe nach Knoten: "
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr "Gehe zu Knoten: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "Kein Menü im Knoten »%s«."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "Kein Menüpunkt »%s« im Knoten »%s«."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr ""
+"Unmöglich, einen Knoten zu finden, der von »%s« in »%s« referenziert wird."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr "Menüliste lesen; bei »dir« beginnen und ihnen folgen"
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr "Menüs folgen: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr "Den Knoten finden, der den Programm-Aufruf beschreibt"
-#: info/session.c:2194
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr "Finden den Aufruf-Knoten von [%s]: "
+
+#: info/session.c:2743
msgid "Read a manpage reference and select it"
msgstr "Einen Verweis auf eine Manpage lesen und diese auswählen"
-#: info/session.c:2198
+#: info/session.c:2747
msgid "Get Manpage: "
msgstr "Hole Manpage: "
#. Move to the "Top" node in this file.
-#: info/session.c:2228
+#: info/session.c:2777
msgid "Select the node `Top' in this file"
msgstr "Den Knoten »Top« dieser Datei auswählen"
-#. Notice that the node "Top" is special, and doesn't have to
-#. be referenced.
-#: info/session.c:2230 makeinfo/makeinfo.c:5145 makeinfo/makeinfo.c:5228
-msgid "Top"
-msgstr "Top"
-
#. Move to the node "(dir)Top".
-#: info/session.c:2234
+#: info/session.c:2783
msgid "Select the node `(dir)'"
msgstr "Den Knoten »(dir)« auswählen"
-#: info/session.c:2254
+#: info/session.c:2803
#, c-format
msgid "Kill node (%s): "
msgstr "Kille Knoten (%s): "
-#: info/session.c:2307
+#: info/session.c:2857
#, c-format
msgid "Cannot kill node `%s'"
msgstr "Kann Knoten »%s« nicht killen"
-#: info/session.c:2317
+#: info/session.c:2867
msgid "Cannot kill the last node"
msgstr "Der letzte Knoten kann nicht gekillt werden"
-#: info/session.c:2401
+#: info/session.c:2953
msgid "Select the most recently selected node"
msgstr "Den zuletzt gewählten Knoten auswählen"
#. Kill named node.
-#: info/session.c:2407
+#: info/session.c:2959
msgid "Kill this node"
msgstr "Diesen Knoten killen"
#. Read the name of a file and select the entire file.
-#: info/session.c:2415
+#: info/session.c:2967
msgid "Read the name of a file and select it"
msgstr "Den Namen einer Datei lesen und diese auswählen"
-#: info/session.c:2419
+#: info/session.c:2971
msgid "Find file: "
msgstr "Datei finden: "
-#: info/session.c:2436
-#, c-format
-msgid "Cannot find \"%s\"."
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
msgstr "Kann »%s« nicht finden."
-#: info/session.c:2483 info/session.c:2608
-#, c-format
-msgid "Could not create output file \"%s\"."
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
msgstr "Ausgabe-Datei »%s« kann nicht angelegt werden."
-#: info/session.c:2496 info/session.c:2625 info/session.c:2671
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
msgid "Done."
msgstr "Fertig."
-#: info/session.c:2553
-#, c-format
-msgid "Writing node \"(%s)%s\"..."
-msgstr "Schreibe Knoten (%s)%s"
-
-#: info/session.c:2556
-#, c-format
-msgid "Writing node \"%s\"..."
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
msgstr "Knoten »%s« schreiben..."
-#: info/session.c:2634
+#: info/session.c:3180
msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
msgstr "Den Inhalt dieses Knotens durch INFO_PRINT_COMMAND pipen"
-#: info/session.c:2654
-#, c-format
-msgid "Cannot open pipe to \"%s\"."
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
msgstr "Kann nicht nach »%s« pipen."
-#: info/session.c:2661
-#, c-format
-msgid "Printing node \"(%s)%s\"..."
-msgstr "Drucke Knoten »(%s)%s«..."
-
-#: info/session.c:2664
-#, c-format
-msgid "Printing node \"%s\"..."
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
msgstr "Drucke Knoten »%s«..."
-#: info/session.c:2896
-#, c-format
-msgid "Searching subfile \"%s\"..."
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
msgstr "Unterdatei »%s« wird durchsucht..."
-#: info/session.c:2946
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
+msgstr ""
+"Eine Zeichenkette einlesen und danach gemäß Groß-/Kleinschreibung suchen"
+
+#: info/session.c:3523
msgid "Read a string and search for it"
msgstr "Eine Zeichenkette einlesen und danach suchen"
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr "Eine Zeichenkette einlesen und danach rückwärts suchen"
+
# checkit
-#: info/session.c:2966
+#: info/session.c:3573
#, c-format
-msgid "%s for string [%s]: "
-msgstr "%s nach Zeichenkette [%s]: "
+msgid "%s%sfor string [%s]: "
+msgstr "%s%s nach Zeichenkette [%s]: "
-#: info/session.c:2967
+#: info/session.c:3574
msgid "Search backward"
msgstr "Suche rückwärts"
-#: info/session.c:2967
+#: info/session.c:3574
msgid "Search"
msgstr "Suche"
-#: info/session.c:2994
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr "gemäß Groß-/Kleinschreibung"
+
+#: info/session.c:3575
+msgid " "
+msgstr " "
+
+#: info/session.c:3615
msgid "Search failed."
msgstr "Suche fehlgeschlagen."
-#: info/session.c:3020 info/session.c:3026
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr "Letzte Suche in der gleichen Richtung wiederholen"
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr "Keine vorherige Such-Zeichenkette."
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr "Letzte Suche in der entgegengesetzten Richtung wiederholen"
+
+#: info/session.c:3661 info/session.c:3667
msgid "Search interactively for a string as you type it"
msgstr "Interaktiv nach einer Zeichenkette während der Eingabe suchen"
-#: info/session.c:3120
+#: info/session.c:3761
msgid "I-search backward: "
msgstr "Interactive Suche rückwarts: "
-#: info/session.c:3122
+#: info/session.c:3763
msgid "I-search: "
-msgstr "Interactive Suche"
+msgstr "Interaktive Suche"
# checkit
-#: info/session.c:3147
+#: info/session.c:3788
msgid "Failing "
msgstr "Fehlgeschlagen "
-#: info/session.c:3512
-msgid "No cross references in this node."
-msgstr "Keine Querverweise in diesem Knoten."
-
-#: info/session.c:3579
+#: info/session.c:4244
msgid "Move to the previous cross reference"
msgstr "Zum vorigen Querverweis bewegen"
-#: info/session.c:3588
+#: info/session.c:4253
msgid "Move to the next cross reference"
msgstr "Zum nächsten Querverweis bewegen"
-#: info/session.c:3598
+#: info/session.c:4263
msgid "Select reference or menu item appearing on this line"
msgstr "Verweis oder Menüpunkt auswählen, der auf dieser Zeile erscheint"
@@ -942,57 +1328,57 @@ msgstr "Verweis oder Menüpunkt auswählen, der auf dieser Zeile erscheint"
#.
#. ****************************************************************
#. What to do when C-g is pressed in a window.
-#: info/session.c:3620
+#: info/session.c:4285
msgid "Cancel current operation"
msgstr "Momentane Operation abbrechen"
-#: info/session.c:3627
+#: info/session.c:4292
msgid "Quit"
msgstr "Ende"
-#: info/session.c:3636
-msgid "Move to the cursor to a specific line of the window"
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
msgstr "Den Cursor nach einer bestimmten Zeile des Fensters bewegen"
#. Clear the screen and redraw its contents. Given a numeric argument,
#. move the line the cursor is on to the COUNT'th line of the window.
-#: info/session.c:3668
+#: info/session.c:4333
msgid "Redraw the display"
msgstr "Anzeige erneut darstellen"
#. This command does nothing. It is the fact that a key is bound to it
#. that has meaning. See the code at the top of info_session ().
-#: info/session.c:3705
+#: info/session.c:4370
msgid "Quit using Info"
msgstr "Info beenden"
-#: info/session.c:3728
+#: info/session.c:4393
#, c-format
msgid "Unknown command (%s)."
msgstr "Unbekannter Befehl (%s)."
-#: info/session.c:3733
+#: info/session.c:4396
msgid "\"\" is invalid"
-msgstr "\"\" ist ungültig"
+msgstr "»« ist ungültig"
-#: info/session.c:3735
+#: info/session.c:4397
#, c-format
msgid "\"%s\" is invalid"
-msgstr "\"%s\" ist ungültig"
+msgstr "»%s« ist ungültig"
-#: info/session.c:3958
+#: info/session.c:4620
msgid "Add this digit to the current numeric argument"
msgstr "Diese Zahl dem aktuellen numerischen Argument hinzufügen"
-#: info/session.c:3967
+#: info/session.c:4629
msgid "Start (or multiply by 4) the current numeric argument"
msgstr "Beginne (oder multipliziere mit 4) das aktuelle nummerische Argument"
-#: info/session.c:3982
+#: info/session.c:4644
msgid "Internally used by \\[universal-argument]"
msgstr "Intern gebraucht von \\[universal-argument]"
-#: info/tilde.c:362
+#: info/tilde.c:344
msgid "readline: Out of virtual memory!\n"
msgstr "readline: Kein Speicher mehr!\n"
@@ -1068,861 +1454,1032 @@ msgstr "Setze %s auf den Wert (%d): "
msgid "Set %s to value (%s): "
msgstr "Setze %s auf den Wert (%s): "
-#: info/window.c:1102
+#: info/window.c:1101
msgid "--*** Tags out of Date ***"
msgstr "--*** Tags veraltet ***"
#. strlen (location_indicator).
#. 10 for the decimal representation of the number of lines in this
#. node, and the remainder of the text that can appear in the line.
-#: info/window.c:1113
+#: info/window.c:1112
msgid "-----Info: (), lines ----, "
msgstr "-----Info: (), Zeilen ----, "
-#: info/window.c:1120
+#: info/window.c:1119
#, c-format
msgid "-%s---Info: %s, %d lines --%s--"
msgstr "-%s---Info: %s, %d Zeilen --%s--"
-#: info/window.c:1124
+#: info/window.c:1123
#, c-format
msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
msgstr "-%s%s-Info: (%s)%s, %d Zeilen --%s--"
-#: info/window.c:1131
+#: info/window.c:1130
#, c-format
msgid " Subfile: %s"
msgstr " Unterdatei: %s"
-#: lib/getopt.c:672
+#: lib/getopt.c:680
#, c-format
msgid "%s: option `%s' is ambiguous\n"
-msgstr ""
+msgstr "%s: Option `%s' ist zweideutig\n"
-#: lib/getopt.c:696
+#: lib/getopt.c:704
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: Option `--%s' erlaubt kein Argument\n"
-#: lib/getopt.c:701
+#: lib/getopt.c:709
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: Option `%c%s' erlaubt kein Argument\n"
-#: lib/getopt.c:718 lib/getopt.c:891
+#: lib/getopt.c:726 lib/getopt.c:899
#, c-format
msgid "%s: option `%s' requires an argument\n"
-msgstr ""
+msgstr "%s: Option `%s' benötigt kein Argument\n"
#. --option
-#: lib/getopt.c:747
+#: lib/getopt.c:755
#, c-format
msgid "%s: unrecognized option `--%s'\n"
-msgstr ""
+msgstr "%s: nicht erkannte Option `--%s'\n"
#. +option or -option
-#: lib/getopt.c:751
+#: lib/getopt.c:759
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
-msgstr ""
+msgstr "%s: nicht erkannte Option `%c%s'\n"
#. 1003.2 specifies the format of this message.
-#: lib/getopt.c:777
+#: lib/getopt.c:785
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr ""
+msgstr "%s: ungültige Option -- %c\n"
-#: lib/getopt.c:780
+#: lib/getopt.c:788
#, c-format
msgid "%s: invalid option -- %c\n"
-msgstr ""
+msgstr "%s: ungültige Option -- %c\n"
#. 1003.2 specifies the format of this message.
-#: lib/getopt.c:810 lib/getopt.c:940
+#: lib/getopt.c:818 lib/getopt.c:948
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr ""
+msgstr "%s: Option verlangt ein Argument -- %c\n"
-#: lib/getopt.c:857
+#: lib/getopt.c:865
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
-msgstr ""
+msgstr "%s: Option `-W %s' ist zweideutig\n"
-#: lib/getopt.c:875
+#: lib/getopt.c:883
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: Option `-W %s' erlaubt kein Argument\n"
-#: makeinfo/makeinfo.c:893
-#, c-format
-msgid "%s:%d: warning: "
-msgstr "%s:%d: Warnung: "
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "Januar"
-#: makeinfo/makeinfo.c:916
-msgid "Too many errors! Gave up.\n"
-msgstr "Zu viele Fehler! Abbruch.\n"
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr "Februar"
-#: makeinfo/makeinfo.c:975 makeinfo/makeinfo.c:1000 makeinfo/makeinfo.c:1068
-#, c-format
-msgid "%s: %s arg must be numeric, not `%s'.\n"
-msgstr "%s: %s Argument muss numerisch sein, nicht »%s«.\n"
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr "März"
-# checkit
-#: makeinfo/makeinfo.c:989
-#, c-format
-msgid "Couldn't open macro expansion output `%s'"
-msgstr "Die Macro-Auflösung für »%s« kann nicht geöffnet werden"
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr "April"
-#: makeinfo/makeinfo.c:992
-msgid "Cannot specify more than one macro expansion output"
-msgstr "Mehr als eine Ausgabedatei darf nicht angegeben werden"
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr "Mai"
-#: makeinfo/makeinfo.c:1036
-#, c-format
-msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
-msgstr ""
-"%s: Arg für --paragraph-indent muss numerisch/»none«/»asis« sein, nicht "
-"»%s«.\n"
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr "Juni"
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr "Juli"
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr "August"
-#: makeinfo/makeinfo.c:1079
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr "September"
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr "Oktober"
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr "November"
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr "Dezember"
+
+#: makeinfo/cmds.c:571
#, c-format
-msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
-msgstr ""
-"%s: Argument für --footnote-style muss »separate« oder »end« sein, nicht "
-"»%s«.\n"
+msgid "unlikely character %c in @var"
+msgstr "ungutes Zeichen %c in @var"
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr "@sc Argument durchweg in Großbuchstaben, somit keine Wirkung"
-#: makeinfo/makeinfo.c:1110
+#: makeinfo/cmds.c:754
#, c-format
-msgid "%s: missing file argument.\n"
-msgstr "%s: Datei-Angabe fehlt.\n"
+msgid "%c%s is obsolete"
+msgstr "%c%s ist obsolet"
-#: makeinfo/makeinfo.c:1163
+#: makeinfo/cmds.c:814
#, c-format
-msgid "Try `%s --help' for more information.\n"
-msgstr "»%s --help« gibt weitere Informationen.\n"
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "@sp erfordert ein positives numerisches Argument, nicht »%s«"
-# Die "." am Zeilenende habe ich entfernt. -ke-
-#: makeinfo/makeinfo.c:1165
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
#, c-format
-msgid ""
-"Usage: %s [OPTION]... TEXINFO-FILE...\n"
-"\n"
-"Translate Texinfo source documentation to a format suitable for reading\n"
-"with GNU Info.\n"
-"\n"
-"Options:\n"
-"-D VAR define a variable, as with @set.\n"
-"-E MACRO-OFILE process macros only, output texinfo source.\n"
-"-I DIR append DIR to the @include directory search path.\n"
-"-P DIR prepend DIR to the @include directory search path.\n"
-"-U VAR undefine a variable, as with @clear.\n"
-"--error-limit NUM quit after NUM errors (default %d).\n"
-"--fill-column NUM break lines at NUM characters (default %d).\n"
-"--footnote-style STYLE output footnotes according to STYLE:\n"
-" `separate' to place footnotes in their own node,\n"
-" `end' to place the footnotes at the end of\n"
-" the node in which they are defined (the default).\n"
-"--force preserve output even if errors.\n"
-"--help display this help and exit.\n"
-"--no-validate suppress node cross-reference validation.\n"
-"--no-warn suppress warnings (but not errors).\n"
-"--no-split suppress splitting of large files.\n"
-"--no-headers suppress node separators and Node: Foo headers.\n"
-"--output FILE, -o FILE output to FILE, and ignore any @setfilename.\n"
-"--paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n"
-" if VAL is `none', do not indent; if VAL is `asis',\n"
-" preserve any existing indentation.\n"
-"--reference-limit NUM complain about at most NUM references (default %d).\n"
-"--verbose report about what is being done.\n"
-"--version display version information and exit.\n"
-"\n"
-"Email bug reports to bug-texinfo@gnu.org.\n"
+msgid "Bad argument to %c%s"
+msgstr "Fehlerhaftes Argument zu %c%s"
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr "genau"
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr "kein"
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr "Fehlende »}« beim @def Argument"
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr "Funktion"
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr "Macro"
+
+# checkit
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr "Spezielle Form"
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr "Variable: "
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr "User-Option"
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
msgstr ""
-"Aufruf: %s [OPTION]... TEXINFO-DATEI...\n"
-"\n"
-"Texinfo-Quelltext in ein Format übersetzen, das mit GNU Info gelesen werden\n"
-"kann.\n"
-"\n"
-"Optionen:\n"
-"-D VAR eine Variable definieren, wie mit @set\n"
-"-E MACRO-AUSGABEDATEI nur die Macros auflösen, Texinfo-Quelltext ausgeben\n"
-"-I VERZ VERZ in die Verzeichnis-Suchliste für @include "
-"aufnehmen\n"
-"-P DIR VERZ dem @include Verzeichnis-Suchpfad voranstellen\n"
-"-U VAR eine Variable aufheben, wie mit @clear\n"
-"--error-limit ZAHL nach ZAHL Fehlern beenden (Standard %d)\n"
-"--fill-column ZAHL Zeilen nach ZAHL Zeichen umbrechen (Standard %d)\n"
-"--footnote-style STYLE Fußnoten gemäß STYLE ausgeben:\n"
-" »separate«: Fußnoten in einen eigenen Knoten "
-"plazieren;\n"
-" »end«: Fußnoten an das Ende des Knoten setzen, "
-"in\n"
-" dem sie definiert sind (Standard)\n"
-"--force Ausgabe auch bei Fehlern aufbewahren\n"
-"--help diese Hilfe zeigen\n"
-"--no-validate Überprüfen der \"node\"-Querverweise unterdrücken\n"
-"--no-warn Warnungen unterdrücken (aber keine Fehler)\n"
-"--no-split Aufteilen langer Dateien unterdrücken\n"
-"--no-headers Knoten-Unterteiler und \"Node: Foo\" Kopfzeilen\n"
-" unterdrücken\n"
-"--output DATEI, -o DATEI\n"
-" Ausgabe nach DATEI und @setfilename ignorieren\n"
-"--paragraph-indent ZAHL/»none«/»asis«\n"
-" Absätze mit ZAHL Leerräumen einziehen (Standard %d);\n"
-" »none«: keine Leerräume\n"
-" »asis«: keine Veränderung hinsichtlich der Leerräume\n"
-"--reference-limit ZAHL bei wenigstens ZAHL Verweise melden (Standard %d)\n"
-"--verbose ausführlich die Bearbeitungschritte anzeigen\n"
-"--version Programmversion anzeigen\n"
-"\n"
-"Fehlerberichte (\"bugs\") bitte an <bug-texinfo@gnu.org> schicken.\n"
-"\n"
-"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n"
-#: makeinfo/makeinfo.c:1552
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr "Methde"
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr "aus"
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
+msgstr "ein"
+
+# checkit
+#: makeinfo/defun.c:656
#, c-format
-msgid "%s: getwd: %s, %s\n"
-msgstr ""
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr "Muss in einer »%s«-Einfügung sein, um »%sx« zu benutzen"
-#: makeinfo/makeinfo.c:1748
+#: makeinfo/files.c:460
#, c-format
-msgid "Expected `%s'"
-msgstr "Erwartet »%s«"
+msgid "%s: getwd: %s, %s\n"
+msgstr "%s: getwd: %s, %s\n"
-#: makeinfo/makeinfo.c:2082
+#: makeinfo/footnote.c:149
#, c-format
-msgid "No `%s' found in `%s'"
-msgstr "Kein »%s« in »%s« gefunden"
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr "»%c%s« benötigt ein Argument »{...}«, nicht nur »%s«"
-#: makeinfo/makeinfo.c:2132
+#: makeinfo/footnote.c:164
#, c-format
-msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
-msgstr ""
-"%s: Macro-Auflösung nach der Standard-Ausgabe, da auch die Info-Ausgabe nach "
-"dort geht.\n"
+msgid "No closing brace for footnote `%s'"
+msgstr "Keine schließende Klammer für Fußnote »%s«"
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr "Fußnote außerhalb eines Elternknotens definiert"
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr "Fußnoten"
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr "Ohne Titel"
-#: makeinfo/makeinfo.c:2151
+#: makeinfo/index.c:212
#, c-format
-msgid "Making %s file `%s' from `%s'.\n"
-msgstr "Erzeuge %s Datei »%s« von »%s«.\n"
+msgid "Unknown index `%s'"
+msgstr "Unbekannter Index »%s«"
-#: makeinfo/makeinfo.c:2181
+#: makeinfo/index.c:382
#, c-format
-msgid "This is Info file %s, produced by Makeinfo version %d.%d"
-msgstr "Dies ist die Info-Datei %s, hergestellt von Makeinfo Version %d.%d"
+msgid "Index `%s' already exists"
+msgstr "Index »%s« existiert bereits"
-#: makeinfo/makeinfo.c:2183
+#: makeinfo/index.c:425
#, c-format
-msgid " from the input file %s.\n"
-msgstr " aus der Eingabe-Datei %s.\n"
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr "Unbekannter Index »%s« und/oder »%s« in @synindex"
-#: makeinfo/makeinfo.c:2202
+#: makeinfo/index.c:642
#, c-format
-msgid ""
-"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
-msgstr ""
-"%s: Entferne Macro-Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um "
-"diese beizubehalten.\n"
+msgid "Unknown index `%s' in @printindex"
+msgstr "\"Unbekannter Index »%s« in @printindex"
-#. If there were errors, and no --force, remove the output.
-#: makeinfo/makeinfo.c:2234
+#: makeinfo/index.c:680
#, c-format
-msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgid "Entry for index `%s' outside of any node"
+msgstr "Eintrag für Index »%s« außerhalb jeglichen Knotens"
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr "(außerhalb jeglichen Knotens)"
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
msgstr ""
-"%s: Entferne Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um diese "
-"beizubehalten.\n"
-#. Special case. I'm not supposed to see this character by itself.
-#. If I do, it means there is a syntax error in the input text.
-#. Report the error here, but remember this brace on the stack so
-#. you can ignore its partner.
-#: makeinfo/makeinfo.c:2374 makeinfo/makeinfo.c:7629
-#, c-format
-msgid "Misplaced %c"
-msgstr "Fehlplazierte %c"
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr "Überlauf bei den Zahlen der Aufzählung"
-#: makeinfo/makeinfo.c:2461
+#: makeinfo/insertion.c:297
#, c-format
-msgid "Unknown command `%s'"
-msgstr "Unbekannter Befehl »%s«"
+msgid "lettering overflow, restarting at %c"
+msgstr "Überlauf bei den Buchstaben der Aufzählung, Beginn wieder bei %c"
-#: makeinfo/makeinfo.c:2481
-msgid "NO_NAME!"
-msgstr ""
+# checkit
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s benötigt ein Argument: der Formatierer für %citem"
-#: makeinfo/makeinfo.c:2495
+#: makeinfo/insertion.c:623
#, c-format
-msgid "%c%s expected `{...}'"
-msgstr "%c%s erwartete »{...}«"
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr "»@end« erwartet »%s«, aber bekam »%s«"
-#: makeinfo/makeinfo.c:2528
-msgid "Unmatched }"
-msgstr "Nicht übereinstimmende }"
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr "Kein zutreffendes »%cend %s«"
-#: makeinfo/makeinfo.c:2576
+#: makeinfo/insertion.c:902
#, c-format
-msgid "%c%s missing close brace"
-msgstr "%c%s fehlende schließende Klammer"
+msgid "%s requires letter or digit"
+msgstr "%s benötigt einen Buchstaben oder eine Zahl"
# checkit
-# üs? -ke-
-#: makeinfo/makeinfo.c:3372
-msgid "Broken-Type in insertion_type_pname"
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr "@menu vor dem ersten @node gesehen, »Top«-Knoten wird angelegt"
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
msgstr ""
+"vielleicht sollte der @top-Knoten eher von @ifnottex als von @ifinfo "
+"umschlossen werden?"
-#: makeinfo/makeinfo.c:3438
-msgid "Enumeration stack overflow"
-msgstr "Nummerierungsstack-Überlauf"
+# checkit
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr "@detailmenu vor dem ersten Knoten gesehen, »Top«-Knoten wird angelegt"
-#: makeinfo/makeinfo.c:3470
+#: makeinfo/insertion.c:1074
#, c-format
-msgid "lettering overflow, restarting at %c"
-msgstr "Buchstaben-Zählungs-Überlauf, beginne wieder bei %c"
+msgid "Unmatched `%c%s'"
+msgstr "Nicht übereinstimmendes »%c%s«"
-# checkit
-# übersetzen? -ke-
-#: makeinfo/makeinfo.c:3509
-msgid "* Menu:\n"
-msgstr "* Menü:\n"
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr "»%c%s« benötigt etwas nachfolgendes"
-# checkit
-#: makeinfo/makeinfo.c:3593
+#: makeinfo/insertion.c:1087
#, c-format
-msgid "%s requires an argument: the formatter for %citem"
-msgstr "%s erfordert ein Argument: der Formatierer für %citem"
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr "Fehlerhaftes Argument zu »%s«, »%s«, benutze »%s«"
-#: makeinfo/makeinfo.c:3697
+#: makeinfo/insertion.c:1175
#, c-format
-msgid "`%cend' expected `%s', but saw `%s'"
-msgstr "»%cend« erwartete »%s«, aber bekam »%s«"
+msgid "@%s not meaningful inside `@%s' block"
+msgstr "@%s nicht sinnvoll innerhalb eines »@%s«-Blocks"
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr "@itemx nicht sinnvoll innerhalb eines »%s«-Blocks"
# checkit
-#: makeinfo/makeinfo.c:3810
+#: makeinfo/insertion.c:1357
#, c-format
-msgid "No matching `%cend %s'"
-msgstr "Nicht übereinstimmende »%cend %s«"
+msgid "%c%s found outside of an insertion block"
+msgstr "%c%s außerhalb eines Einfügungsblocks gefunden"
-#: makeinfo/makeinfo.c:3949
+#: makeinfo/lang.c:199
#, c-format
-msgid "How did @%s end up in cm_special_char?\n"
-msgstr "Zu was führt @%s in cm_special_char?\n"
+msgid "%s is not a valid ISO 639 language code"
+msgstr "%s ist kein gÚltiger ISO 639 Language Code"
#. This error message isn't perfect if the argument is multiple
#. characters, but it doesn't seem worth getting right.
-#: makeinfo/makeinfo.c:3963
+#: makeinfo/lang.c:406
#, c-format
msgid "%c%s expects `i' or `j' as argument, not `%c'"
msgstr "%c%s erwartet »i« oder »j« als Argument, nicht »%c«"
-#: makeinfo/makeinfo.c:3967
+#: makeinfo/lang.c:410
#, c-format
msgid "%c%s expects a single character `i' or `j' as argument"
-msgstr "%c%s erwartet einen einzigen Buchstaben »i« oder »j« als Argument"
-
-#: makeinfo/makeinfo.c:3979
-msgid "January"
-msgstr "Januar"
-
-#: makeinfo/makeinfo.c:3979
-msgid "February"
-msgstr "Februar"
+msgstr "%c%s erwartet einen einzelnen Buchstaben »i« oder »j» als Argument"
-#: makeinfo/makeinfo.c:3979
-msgid "March"
-msgstr "März"
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr "Macro »%s« früher definiert"
-#: makeinfo/makeinfo.c:3979
-msgid "April"
-msgstr "April"
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "hier ist die frühere Definition von »%s«"
-#: makeinfo/makeinfo.c:3979
-msgid "May"
-msgstr "Mai"
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr ""
+"Dem \\ folgt in der Macro-Erweiterung »%s« anstelle von \\ oder einem "
+"Parameternamen"
-#: makeinfo/makeinfo.c:3980
-msgid "June"
-msgstr "Juni"
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr "Macro »%s« in Zeile %d mit zuvielen Argumenten aufgerufen"
-#: makeinfo/makeinfo.c:3980
-msgid "July"
-msgstr "Juli"
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr "%cend Macro nicht gefunden"
-#: makeinfo/makeinfo.c:3980
-msgid "August"
-msgstr "August"
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr "@quote-Argument nur sinnvoll, wenn das Macro nur ein Argument hat"
-#: makeinfo/makeinfo.c:3980
-msgid "September"
-msgstr "September"
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr "@end %s stimmt nicht mit @%s überein"
-#: makeinfo/makeinfo.c:3980
-msgid "October"
-msgstr "Oktober"
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: Warnung: "
-#: makeinfo/makeinfo.c:3981
-msgid "November"
-msgstr "November"
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "Zu viele Fehler! Abbruch.\n"
-#: makeinfo/makeinfo.c:3981
-msgid "December"
-msgstr "Dezember"
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "Fehlplazierte %c"
-#: makeinfo/makeinfo.c:4039
+#: makeinfo/makeinfo.c:362
#, c-format
-msgid "%c%s expects a single character as an argument"
-msgstr "%c%s erwartet einen einzigen Buchstaben als Argument"
+msgid "Try `%s --help' for more information.\n"
+msgstr "»%s --help« gibt weitere Informationen.\n"
-#: makeinfo/makeinfo.c:4153
+#: makeinfo/makeinfo.c:365
#, c-format
-msgid "%c%s is obsolete"
-msgstr "%c%s ist obsolet"
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+"Syntax: %s [OPTION]... TEXINFO-DATEI...\n"
+"\n"
+"Texinfo-Quelltext in verschiedene andere Formate übersetzen:\n"
+"In Info-Dateien (Standard), die mit Emacs oder mit GNU Info gelesen werden\n"
+"können; reine Textdateien (mit --no-headers) oder HTML (mit --html).\n"
+"\n"
+"Optionen:\n"
+" --commands-in-node-names @-Befehle in Knotennamen zulassen\n"
+" -D VAR eine Variable definieren, wie mit @set\n"
+" -E, --macro-expand DATEI originalen Quelltext mit expandierten Macros "
+"nach\n"
+" DATEI ausgeben\n"
+" --error-limit=ZAHL nach ZAHL Fehlern beenden (Standard %d)\n"
+" --fill-column=ZAHL Zeilen nach ZAHL Zeichen umbrechen (Standard %d)\n"
+" --footnote-style=STYLE Fußnoten gemäß STYLE ausgeben:\n"
+" »separate«: Fußnoten in einen eigenen Knoten \n"
+" plazieren;\n"
+" »end«: Fußnoten an das Ende des Knotens "
+"setzen,\n"
+" in dem sie definiert sind (Standard)\n"
+" --force Ausgabedatei auch bei Fehlern nicht löschen\n"
+" --help diese Hilfe zeigen\n"
+" --html HTML anstelle des Info-Formats ausgeben; "
+"impliziert\n"
+" --no-splityyy\n"
+" -I VERZ VERZ an den Suchpfad für @include anhängen\n"
+" --ifhtml @ifhtml- und @html-Text auch bearbeiten, wenn "
+"kein\n"
+" HTML erzeugt wird\n"
+" --ifinfo @ifinfo-Text auch bearbeiten, wenn HTML erzeugt\n"
+" wird\n"
+" --iftex @iftex und @tex bearbeiten\n"
-#: makeinfo/makeinfo.c:4325
+# Die "." am Zeilenende habe ich entfernt. -ke-
+#: makeinfo/makeinfo.c:391
#, c-format
-msgid "Node with %ctop as a section already exists"
-msgstr "Konoten mit %ctop als Abschnitt existiert bereits"
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+" --no-headers Knoten-Unterteiler und »Knoten:« Kopfzeilen\n"
+" unterdrücken und ohne --output nach der\n"
+" Standards-Ausgabe schreiben\n"
+" --no-ifhtml @ifhtml- und @html-Text nicht bearbeiten\n"
+" --no-ifinfo @ifinfo-Text nicht bearbeiten\n"
+" --no-iftex @iftex- und @tex-Text nicht bearbeiten\n"
+" --no-split Aufteilen langer Info-Dateien oder das Erzeugen\n"
+" einer HTML-Datei je Knoten unterdrücken\n"
+" --no-validate Überprüfen der Knoten-Querverweise unterdrücken\n"
+" --no-warn Warnungen (aber keine Fehler) unterdrücken\n"
+" --number-sections Kapitel-, Abschnitt- und Anhangzählungen ausgeben\n"
+" -o, --output=DATEI Ausgabe nach DATEI und @setfilename ignorieren\n"
+" -P VERZ VERZ dem Suchpfad für @include voranstellen\n"
+" --paragraph-indent=WERT\n"
+" Info-Absätze mit WERT Leerräumen einziehen\n"
+" (Standard %d);\n"
+" bei WERT gleich »none«: keine Leerräume;\n"
+" bei WERT gleich »asis«: existierende Einzüge\n"
+" beibehalten\n"
+" --reference-limit=ZAHL bei wenigstens ZAHL Verweise melden (Standard %d)\n"
+" -U VAR eine Variable aufheben, wie mit @clear\n"
+" -v, --verbose ausführlich die Bearbeitungschritte anzeigen\n"
+" --version Programmversion anzeigen\n"
-#: makeinfo/makeinfo.c:4337
+# Die "." am Zeilenende habe ich entfernt. -ke-
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+"\n"
+"Die Voreinstellungen für die @if...-Bedingungen hängen vom Ausgabeformat "
+"ab:\n"
+" wenn HTML erzeugt wird, ist --ifhtml aktiviert und die anderen sind\n"
+" de-aktiviert;\n"
+" wenn Info oder reiner Text erzeugt wird, ist --ifinfo aktiviert\n"
+" und die anderen sind de-aktiviert.\n"
+"\n"
+"Beispiele:\n"
+" makeinfo foo.texi Info gemäß @setfilename von foo\n"
+" schreiben\n"
+" makeinfo --html foo.texi HTML gemäß @setfilename von foo\n"
+" schreiben\n"
+" makeinfo --no-headers -o - foo.texi reinen Text nach der Standard-\n"
+" Ausgabe schreiben\n"
+" makeinfo --number-sections foo.texi Info mit nummerierten Abschnitten\n"
+" makeinfo --no-split foo.texi eine Info-Datei, sehr voluminös\n"
+"\n"
+"Fehlerberichte bitte an <bug-texinfo@gnu.org> schicken,\n"
+"allgemeine Fragen und Gedankenaustausch an <help-texinfo@gnu.org>.\n"
+"\n"
+"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig."
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
#, c-format
-msgid "Here is the %ctop node"
-msgstr "Hier ist der Knoten %ctop"
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: %s Argument muss numerisch sein, nicht »%s«.\n"
-#: makeinfo/makeinfo.c:4356
+# checkit
+#: makeinfo/makeinfo.c:521
#, c-format
-msgid "%ctop used before %cnode, defaulting to %s"
-msgstr "%ctop vor %cnode gebraucht, als Standard %s genommen"
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "Die Macro-Auflösung für »%s« kann nicht geöffnet werden"
-#: makeinfo/makeinfo.c:4431
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "Mehr als eine Ausgabedatei darf nicht angegeben werden"
+
+#: makeinfo/makeinfo.c:561
#, c-format
-msgid "%c%s is obsolete; use %c%s instead"
-msgstr "%c%s ist obsolet; stattdessen %c%s benutzen"
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: Arg für --paragraph-indent muss numerisch/»none«/»asis« sein, nicht "
+"»%s«.\n"
-#: makeinfo/makeinfo.c:4680
+#: makeinfo/makeinfo.c:602
#, c-format
-msgid "Node `%s' multiply defined (line %d is first definition at)"
-msgstr "Knoten »%s« mehrfach definiert (in Zeile %d ist erste Definition)"
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+"%s: Argument für --footnote-style muss »separate« oder »end« sein, nicht "
+"»%s«.\n"
-#: makeinfo/makeinfo.c:4753
+#: makeinfo/makeinfo.c:647
#, c-format
-msgid "Formatting node %s...\n"
-msgstr "Formatiere Knoten %s...\n"
+msgid "%s: missing file argument.\n"
+msgstr "%s: Datei-Angabe fehlt.\n"
-#: makeinfo/makeinfo.c:4802
+#: makeinfo/makeinfo.c:810
#, c-format
-msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
-msgstr "Knoten »%s« erfordert eine Abschnitt-Angabe (z.B. %c%s)"
+msgid "Expected `%s'"
+msgstr "Erwartet »%s«"
-#: makeinfo/makeinfo.c:5085
+#: makeinfo/makeinfo.c:1229
#, c-format
-msgid "Node `%s''s Next field not pointed back to"
-msgstr "\"Next field\" des Knotens »%s« verweist nicht zurück nach"
+msgid "No `%s' found in `%s'"
+msgstr "Kein »%s« in »%s« gefunden"
-# checkit
-#: makeinfo/makeinfo.c:5090
+#: makeinfo/makeinfo.c:1306
#, c-format
-msgid "This node (`%s') is the one with the bad `Prev'"
-msgstr "Dieser Knoten (»%s«) hat schlechten(?) \"Prev\"-Eintrag"
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+"%s: Macro-Auflösung nach der Standard-Ausgabe, da auch die Info-Ausgabe nach "
+"dort geht.\n"
-#: makeinfo/makeinfo.c:5130
+#: makeinfo/makeinfo.c:1327
#, c-format
-msgid "Node `%s's Prev field not pointed back to"
-msgstr "Das \"Prev field\" des Knotens »%s« verweist nicht zurück nach"
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "Erzeuge %s Datei »%s« von »%s«.\n"
-# checkit
-#: makeinfo/makeinfo.c:5134
+#: makeinfo/makeinfo.c:1358
#, c-format
-msgid "This node (`%s') has the bad Next"
-msgstr "Dieser Knoten (»%s«) hat schlechten(?) \"Next\"-Eintrag"
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr "Dies ist %s, hergestellt von Makeinfo Version %s aus %s.\n"
-#: makeinfo/makeinfo.c:5146
+#: makeinfo/makeinfo.c:1377
#, c-format
-msgid "Node `%s' missing Up field"
-msgstr "Dem Knoten »%s« fehlt ein \"Up field\""
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: Entferne Macro-Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um "
+"diese beizubehalten.\n"
-#: makeinfo/makeinfo.c:5186
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
#, c-format
-msgid "`%s' has an Up field of `%s', but `%s' has no menu item for `%s'"
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
msgstr ""
-"»%s« hat ein \"Up field\" von »%s«, aber »%s« hat keinen Menü-Eintrag für "
-"»%s«"
+"%s: Entferne Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um diese "
+"beizubehalten.\n"
-#: makeinfo/makeinfo.c:5217
+#: makeinfo/makeinfo.c:1635
#, c-format
-msgid "node `%s' has been referenced %d times"
-msgstr "auf Knoten »%s« wird %d mal verwiesen"
+msgid "Unknown command `%s'"
+msgstr "Unbekannter Befehl »%s«"
-#: makeinfo/makeinfo.c:5229
+#: makeinfo/makeinfo.c:1657
#, c-format
-msgid "unreferenced node `%s'"
-msgstr "auf Knoten »%s« wird nicht verwiesen"
+msgid "Use braces to give a command as an argument to @%s"
+msgstr ""
+"Geschweifte Klammern verwenden, um einen Befehl als Argument an »@%s« zu "
+"geben"
-# checkit
-#: makeinfo/makeinfo.c:5256
+#: makeinfo/makeinfo.c:1838
#, c-format
-msgid "%s reference to nonexistent node `%s'"
-msgstr "Verweis %s auf den nicht existierenden Knoten »%s«"
+msgid "%c%s expected `{...}'"
+msgstr "%c%s erwartete »{...}«"
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "Nicht übereinstimmende }"
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "Kein_NAME!"
-#: makeinfo/makeinfo.c:5668 makeinfo/makeinfo.c:5680
+#: makeinfo/makeinfo.c:1940
#, c-format
-msgid "%cmenu seen before first node"
-msgstr "%cmenu festgestellt, bevor der erste Knoten definiert wurde"
+msgid "%c%s missing close brace"
+msgstr "%c%s fehlende schließende Klammer"
-#: makeinfo/makeinfo.c:5669 makeinfo/makeinfo.c:5681
-msgid "creating `Top' node"
-msgstr "»Top«-Knoten wird angelegt"
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr "siehe"
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr "Siehe"
# checkit
-#: makeinfo/makeinfo.c:5794
+#: makeinfo/makeinfo.c:2836
#, c-format
msgid "`.' or `,' must follow cross reference, not %c"
msgstr "».« or »,« muss einem Querverweis folgen, nicht %c"
-#: makeinfo/makeinfo.c:5962
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr "Kein .png oder .jpg für »%s«"
+
+#: makeinfo/makeinfo.c:3063
#, c-format
msgid "@image file `%s' unreadable: %s"
msgstr "@image-Datei »%s« nicht lesbar: %s"
-#: makeinfo/makeinfo.c:5966
+#: makeinfo/makeinfo.c:3070
msgid "@image missing filename argument"
msgstr "@image fehlt als Argument ein Dateiname"
-#: makeinfo/makeinfo.c:6067
-#, c-format
-msgid "%s requires letter or digit"
-msgstr "%s erfordert einen Buchstaben oder eine Zahl"
-
-#: makeinfo/makeinfo.c:6152
-#, c-format
-msgid "Unmatched `%c%s'"
-msgstr "Nicht übereinstimmende »%c%s«"
-
-#: makeinfo/makeinfo.c:6159
-#, c-format
-msgid "`%c%s' needs something after it"
-msgstr "»%c%s« braucht etwas Nachfolgendes"
-
# checkit
-#: makeinfo/makeinfo.c:6165
+#: makeinfo/makeinfo.c:3259
#, c-format
-msgid "Bad argument to `%s', `%s', using `%s'"
-msgstr "Falsches Argument für »%s«, »%s«, wenn »%s« benutzt wird"
+msgid "{No value for `%s'}"
+msgstr "{Kein Wert für »%s«}"
-# checkit
-#: makeinfo/makeinfo.c:6338
-#, c-format
-msgid "{No Value For \"%s\"}"
-msgstr "{Kein Wert Für »%s«}"
-
-#: makeinfo/makeinfo.c:6388
+#: makeinfo/makeinfo.c:3313
#, c-format
msgid "%c%s requires a name"
msgstr "%c%s erfordert einen Namen"
-#: makeinfo/makeinfo.c:6496
+#: makeinfo/makeinfo.c:3421
#, c-format
msgid "Reached eof before matching @end %s"
msgstr "Das Ende der Datei vor dem erforderlichen @end %s erreicht"
-#: makeinfo/makeinfo.c:6722
-#, c-format
-msgid "The `%c%s' command is meaningless within a `@%s' block"
-msgstr "Der »%c%s«-Befehl ist sinnlos innerhalb eines »@%s«-Blocks"
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr "Fehlende »}« beim @multitable-Template"
-#: makeinfo/makeinfo.c:6731
+#: makeinfo/multi.c:284
#, c-format
-msgid "%citemx is not meaningful inside of a `%s' block"
-msgstr "%citemx ist nicht sinnvoll innerhalb eines »@%s«-Blocks"
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "irriger Text »%s« nach @multitable wird ignoriert"
-# checkit
-#: makeinfo/makeinfo.c:6844
+#: makeinfo/multi.c:357
#, c-format
-msgid "%c%s found outside of an insertion block"
-msgstr "%c%s außerhalb eines Einfügungsblocks gefunden"
+msgid "Too many columns in multitable item (max %d)"
+msgstr "zu viele Spalten im \"multitable\"-Eintrag (maximal %d)"
-# checkit
-#: makeinfo/makeinfo.c:6935
+#: makeinfo/multi.c:401
#, c-format
-msgid "Missing `}' in %cdef arg"
-msgstr "Fehlende »}« in »%cdef«-Argument"
-
-#: makeinfo/makeinfo.c:7144 makeinfo/makeinfo.c:7164
-msgid "Function"
-msgstr ""
-
-#: makeinfo/makeinfo.c:7148
-msgid "Macro"
-msgstr ""
+msgid "Cannot select column #%d in multitable"
+msgstr "Spalte #%d kann in der \"multitable\" nicht ausgewählt werden"
-#: makeinfo/makeinfo.c:7152
-msgid "Special Form"
-msgstr ""
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "@tab außerhalb der \"multitable\" wird übergangen"
-#: makeinfo/makeinfo.c:7156 makeinfo/makeinfo.c:7168
-msgid "Variable"
-msgstr ""
+# checkit
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "** Mehrspalten-Ausgabe von der letzten Zeile:\n"
-#: makeinfo/makeinfo.c:7160
-msgid "User Option"
-msgstr "Benutzer-Option"
+# checkit
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* Spalte #%d: Ausgabe = %s\n"
-#: makeinfo/makeinfo.c:7172
-msgid "Instance Variable"
-msgstr ""
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr "Knoten »%s« bereits zuvor in Zeile %d definiert"
-#: makeinfo/makeinfo.c:7176 makeinfo/makeinfo.c:7180
-msgid "Method"
-msgstr ""
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr "Formatiere Knoten »%s«...\n"
-# checkit
-#: makeinfo/makeinfo.c:7335
+#: makeinfo/node.c:559
#, c-format
-msgid "Must be in a `%s' insertion in order to use `%s'x"
-msgstr "Muss in einer »%s«-Einfügung sein, wenn »%s«x benutzt werden soll"
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr "Knoten »%s« benötigt einen Abschnittsbefehl (z.B. %c%s)"
-# checkit
-#: makeinfo/makeinfo.c:7407
+#: makeinfo/node.c:719
#, c-format
-msgid "%csp requires a positive numeric argument"
-msgstr "»%csp« erfordert ein positives numerisches Argument"
+msgid "No node name specified for `%c%s' command"
+msgstr "Kein Knotenname für den Befehl »%c%s« angegeben"
-#: makeinfo/makeinfo.c:7650
-msgid "asis"
-msgstr "genau"
+#: makeinfo/node.c:774
+msgid "Node:"
+msgstr "Knoten:"
-#: makeinfo/makeinfo.c:7652
-msgid "none"
-msgstr "kein"
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
+msgstr "Nächster:"
-#: makeinfo/makeinfo.c:7674
-#, c-format
-msgid "Bad argument to %c%s"
-msgstr "Falsches Argument für »%c%s«"
+#: makeinfo/node.c:793
+msgid "Previous:"
+msgstr "Vorheriger:"
-#: makeinfo/makeinfo.c:7966
-#, c-format
-msgid "Unknown index `%s'"
-msgstr "Unbekannter Index »%s«"
+#: makeinfo/node.c:803
+msgid "Up:"
+msgstr "Aufwärts:"
-#: makeinfo/makeinfo.c:8031
+#: makeinfo/node.c:1012
#, c-format
-msgid "Index `%s' already exists"
-msgstr "Index »%s« ist schon vorhanden"
+msgid "%s reference to nonexistent node `%s'"
+msgstr "%s Verweis auf den nicht existierenden Knoten »%s«"
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr ""
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr ""
-#: makeinfo/makeinfo.c:8062
+#: makeinfo/node.c:1115
#, c-format
-msgid "Unknown index `%s' and/or `%s' in @synindex"
-msgstr "Unbekannter Index »%s« und /oder unbekannter »%s« in @synindex"
+msgid "Next field of node `%s' not pointed to"
+msgstr "Das Feld »nächstes« (Next) des Knotens »%s« verweist nicht auf"
-#: makeinfo/makeinfo.c:8251
+#: makeinfo/node.c:1119
#, c-format
-msgid "Unknown index `%s' in @printindex"
-msgstr "Unbekannter Index »%s« in @printindex"
+msgid "This node (%s) has the bad Prev"
+msgstr ""
+"Dieser Knoten (%s) hat einen fehlerhaften Eintrag im Feld »voriges« (Prev)"
-# übersetzen? -ke-
-#: makeinfo/makeinfo.c:8266
-msgid ""
-"* Menu:\n"
-"\n"
+#: makeinfo/node.c:1133
+msgid "Prev"
msgstr ""
-"* Menü:\n"
-"\n"
-#: makeinfo/makeinfo.c:8453
+#: makeinfo/node.c:1176
#, c-format
-msgid "`%c%s' needs an argument `{...}', not just `%s'"
-msgstr "»%c%s« braucht das Argument in der Form »{...}«, nicht nur »%s«"
+msgid "Prev field of node `%s' not pointed to"
+msgstr "Das Feld »voriges« (Prev) des Knotens »%s« verweist nicht auf"
-#: makeinfo/makeinfo.c:8468
+#: makeinfo/node.c:1180
#, c-format
-msgid "No closing brace for footnote `%s'"
-msgstr "Keine schließende Klammer für Fußnote »%s«"
-
-# checkit
-#: makeinfo/makeinfo.c:8507
-msgid "Footnote defined without parent node"
-msgstr "Fußnote definiert ohne einen Eltern-\"node\""
+msgid "This node (%s) has the bad Next"
+msgstr ""
+"Dieser Knoten (%s) hat einen fehlerhaften Eintrag im Feld »nächstes« (Next)"
-#: makeinfo/makeinfo.c:8539
-msgid "-Footnotes"
-msgstr "-Fußnoten"
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr "»%s« hat kein »Up«-Feld"
-#: makeinfo/makeinfo.c:8594
-msgid ""
-"---------- Footnotes ----------\n"
-"\n"
+#: makeinfo/node.c:1197
+msgid "Up"
msgstr ""
-"----------- Fußnoten -----------\n"
-"\n"
-#: makeinfo/makeinfo.c:8690
+#: makeinfo/node.c:1265
#, c-format
-msgid "macro `%s' previously defined"
-msgstr "Macro »%s« ist bereits definiert"
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr ""
+"Dem Knoten »%s« fehlt ein Menüeintrag für »%s« obwohl er dessen "
+"übergeordnetes Ziel ist"
-#: makeinfo/makeinfo.c:8694
+#: makeinfo/node.c:1296
#, c-format
-msgid "here is the previous definition of `%s'"
-msgstr "Hier ist die vorangehende Definition von »%s«"
+msgid "node `%s' has been referenced %d times"
+msgstr "Knoten »%s« wurde %d mal referenziert"
-#: makeinfo/makeinfo.c:8908
+#: makeinfo/node.c:1310
#, c-format
-msgid "Macro `%s' called with too many args"
-msgstr "Macro »%s« mit zu vielen Argumenten aufgerufen"
+msgid "unreferenced node `%s'"
+msgstr "Nicht referenzierter Knoter »%s«"
-#: makeinfo/makeinfo.c:9060
+#: makeinfo/sectioning.c:116
#, c-format
-msgid "%cend macro not found"
-msgstr "»%cend«-Macro nicht gefunden"
+msgid "Appendix %c "
+msgstr "Anhang %c "
-# checkit
-#: makeinfo/makeinfo.c:9100
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
#, c-format
-msgid "%cquote-arg only useful when the macro takes a single argument"
-msgstr ""
-"»%cquote«-Argument ist nur sinnvoll, wenn das Macro ein einziges Argument hat"
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr "Interner Fehler (search_sectioning) »%s«!"
-#: makeinfo/multi.c:206
+#: makeinfo/sectioning.c:468
#, c-format
-msgid "ignoring stray text `%s' after @multitable"
-msgstr "irriger Text »%s« nach @multitable wird ignoriert"
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "%c%s ist obsolet; %c%s stattdessen benutzen"
-#: makeinfo/multi.c:277
+#: makeinfo/sectioning.c:484
#, c-format
-msgid "Too many columns in multitable item (max %d)"
-msgstr "zu viele Spalten im \"multitable\"-Eintrag (maximal %d)"
+msgid "Node with %ctop as a section already exists"
+msgstr "Knoten mit %ctop als ein Abschnitt exisiert bereits"
-# checkit
-#. impossible, I think.
-#: makeinfo/multi.c:304
-msgid "multitable item not in active multitable"
-msgstr "\"multitable\"-Eintrag nicht in der aktiven \"multitable\""
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr "Hier ist der %ctop-Knoten"
-#: makeinfo/multi.c:313
+#: makeinfo/sectioning.c:515
#, c-format
-msgid "Cannot select column #%d in multitable"
-msgstr "Spalte #%d kann in der \"multitable\" nicht ausgewählt werden"
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr "%ctop vor %cnode benutzt, Voreinstellung %s wird genommen"
-#: makeinfo/multi.c:404
-msgid "ignoring @tab outside of multitable"
-msgstr "@tab außerhalb der \"multitable\" wird übergangen"
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr "Inhaltsverzeichnis"
-# checkit
-#: makeinfo/multi.c:428
-msgid "** Multicolumn output from last row:\n"
-msgstr "** Mehrspalten-Ausgabe von der letzten Zeile:\n"
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr "Inhalt in Kurzform"
-# checkit
-#: makeinfo/multi.c:431
+#: makeinfo/toc.c:354
#, c-format
-msgid "* column #%d: output = %s\n"
-msgstr "* Spalte #%d: Ausgabe = %s\n"
+msgid "%s: TOC should be here, but it was not found"
+msgstr "%s: Inhaltsverzeichnis sollte hier sein, jedoch nicht gefunden"
-# checkit
-#: util/install-info.c:123 util/install-info.c:136
-msgid "virtual memory exhausted"
-msgstr "virtual memory exhausted"
-
-#: util/install-info.c:192
+#: util/install-info.c:151
#, c-format
msgid "%s: warning: "
msgstr "%s: Warnung: "
-#: util/install-info.c:213
+# checkit
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "kein Speicher mehr"
+
+#: util/install-info.c:232
#, c-format
msgid " for %s"
msgstr " für %s"
-#: util/install-info.c:282
+#: util/install-info.c:381
#, c-format
msgid "\tTry `%s --help' for a complete list of options.\n"
msgstr "»%s --help« gibt weitere Informationen.\n"
-#: util/install-info.c:290
+# Die "." am Zeilenende habe ich entfernt. -ke-
+#: util/install-info.c:389
#, c-format
msgid ""
"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
"\n"
-"Install INFO-FILE in the Info directory file DIR-FILE.\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
"\n"
"Options:\n"
-"--delete Delete existing entries in INFO-FILE;\n"
-" don't insert any new entries.\n"
-"--dir-file=NAME Specify file name of Info directory file.\n"
-" This is equivalent to using the DIR-FILE argument.\n"
-"--entry=TEXT Insert TEXT as an Info directory entry.\n"
-" TEXT should have the form of an Info menu item line\n"
-" plus zero or more extra lines starting with whitespace.\n"
-" If you specify more than one entry, they are all added.\n"
-" If you don't specify any entries, they are determined\n"
-" from information in the Info file itself.\n"
-"--help Display this help and exit.\n"
-"--info-file=FILE Specify Info file to install in the directory.\n"
-" This is equivalent to using the INFO-FILE argument.\n"
-"--info-dir=DIR Same as --dir-file=DIR/dir.\n"
-"--item=TEXT Same as --entry TEXT.\n"
-" An Info directory entry is actually a menu item.\n"
-"--quiet Suppress warnings.\n"
-"--remove Same as --delete.\n"
-"--section=SEC Put this file's entries in section SEC of the directory.\n"
-" If you specify more than one section, all the entries\n"
-" are added in each of the sections.\n"
-" If you don't specify any sections, they are determined\n"
-" from information in the Info file itself.\n"
-"--version Display version information and exit.\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
"\n"
-"Email bug reports to bug-texinfo@gnu.org.\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
msgstr ""
"Syntax: %s [OPTION]... [INFO-DATEI [VERZ-DATEI]]\n"
"\n"
-"Installiere die INFO-DATEI in dem Info-Verzeichnis VERZ-DATEI.\n"
+"»dir«-Einträge von der INFO-DATEI in der Info-Verzeichnis-Datei VERZ-DATEI\n"
+"installieren oder löschen.\n"
"\n"
"Optionen:\n"
-"--delete entferne vorhandene Einträge aus INFO-DATEI; keine neuen\n"
-" Einträge einfügen\n"
-"--dir-file=NAME Namen der Info-Verzeichnis-Datei angeben. "
+" --delete vorhandene Einträge für INFO-DATEI aus VERZ-DATEI "
+"löschen;\n"
+" keine neuen Einträge einfügen\n"
+" --dir-file=NAME Name der Info-Verzeichnis-Datei angeben. "
"Gleichbedeutend\n"
-" mit dem VERZ-DATEI-Argument\n"
-"--entry=TEXT TEXT als einen Info-Verzeichnis-Eintrag einfügen. TEXT "
+" mit dem VERZ-DATEI-Argument\n"
+" --entry=TEXT TEXT als einen Info-Verzeichnis-Eintrag einfügen. TEXT "
"soll\n"
-" die Form einer Zeile eines Info-Menüpunkts haben,\n"
-" zuzüglich Null oder mehrerer Extra-Zeilen, die mit "
-"Leerraum\n"
-" (\"whitespace\") beginnen. Wenn mehr als ein Eintrag "
-"angegeben\n"
-" wird, werden alle hinzugefügt. Wenn gar kein Eintrag\n"
-" angegeben wird, wird der Eintragstext der Info-Datei "
-"selbst\n"
-" entnommen.\n"
-"--help diese Hilfe zeigen\n"
-"--info-file=DATEI Info-Datei angeben, die im Verzeichnis zu installieren "
+" die Form einer Zeile eines Info-Menüpunkts haben,\n"
+" zuzüglich Null oder mehrerer Extra-Zeilen, die mit\n"
+" Leerraum (\"whitespace\") beginnen. Wenn mehr als ein\n"
+" Eintrag angegeben wird, werden alle hinzugefügt. Wenn "
+"gar\n"
+" kein Eintrag angegeben wird, wird der Eintragstext der\n"
+" Info-Datei selbst entnommen.\n"
+" --help diese Hilfe zeigen\n"
+" --info-file=DATEI Info-Datei angeben, die im Verzeichnis zu installieren "
"ist.\n"
-" Gleichbedeutend mit dem INFO-DATEI-Argument\n"
-"--info-dir=VERZ wie --dir-file=VERZ/dir.\n"
-"--item=TEXT wie --entry TEXT. Ein Info-Verzeichnis-Eintrag ist "
-"nämlich\n"
-" ein Menüpunkt\n"
-"--quiet Warnungen unterdrücken\n"
-"--remove wie --delete\n"
-"--section=ABSCHN stelle die Einträge dieser Datei in den Abschnitt ABSCHN\n"
-" des Verzeichnisses. Wenn mehr als ein --section "
+" Gleichbedeutend mit dem INFO-DATEI-Argument\n"
+" --info-dir=VERZ wie --dir-file=VERZ/dir.\n"
+" --item=TEXT wie --entry TEXT.\n"
+" Ein Info-Verzeichnis-Eintrag ist nämlich ein Menüpunkt\n"
+" --quiet Warnungen unterdrücken\n"
+" --remove wie --delete\n"
+" --section=ABSCHN die Einträge dieser Datei in den Abschnitt ABSCHN des\n"
+" Verzeichnisses stellen. Wenn mehr als ein Abschnitt\n"
+" angegeben wird, werden alle Einträge in jedem der\n"
+" Abschnitte hinzugefügt. Wenn gar kein Abschnitt "
"angegeben\n"
-" wird, werden alle Einträge in jedem der Abschnitte\n"
-" hinzugefügt. Wenn gar kein --section angegeben wird, "
-"wird\n"
-" der Eintragstext der Info-Datei selbst entnommen.\n"
-"--version Programmversion anzeigen\n"
+" wird, wird der Eintragstext der Info-Datei selbst\n"
+" entnommen.\n"
+" --version Programmversion anzeigen\n"
"\n"
-"Fehlerberichte (\"bugs\") bitte an <bug-texinfo@gnu.org> schicken.\n"
+"Fehlerberichte bitte an <bug-texinfo@gnu.org> schicken,\n"
+"allgemeine Fragen und Gedankenaustausch an <help-texinfo@gnu.org>.\n"
"\n"
"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n"
-#: util/install-info.c:341
+#: util/install-info.c:442
+#, c-format
msgid ""
"This is the file .../info/dir, which contains the\n"
"topmost node of the Info hierarchy, called (dir)Top.\n"
"The first time you invoke Info you start off looking at this node.\n"
"\n"
-"File: dir,\tNode: Top,\tThis is the top of the INFO tree\n"
+"%s\tThis is the top of the INFO tree\n"
"\n"
" This (the Directory node) gives a menu of major topics.\n"
" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
@@ -1938,7 +2495,7 @@ msgstr ""
"Info-Hierarchie enthält, genannt (dir)Top.\n"
"Beim ersten Aufruf von Info geht es bei diesem Knoten los.\n"
"\n"
-"Date: dir Knoten: Top Dies ist »top« des INFO-Baums\n"
+"%s\tDies ist der Beginn des INFO-Baums\n"
"\n"
" Dieser Verzeichnis-Knoten zeigt ein Menü aller Hauptpunkte an.\n"
" Beenden mit \"q\", \"?\" listet alle Info-Befehle auf, \"d\" kehrt nach "
@@ -1951,98 +2508,104 @@ msgstr ""
"\n"
"* Menü:\n"
-#: util/install-info.c:364
+#: util/install-info.c:465
#, c-format
msgid "%s: could not read (%s) and could not create (%s)\n"
msgstr "%s: kann nicht gelesen (%s) und kann nicht angelegt werden (%s)\n"
-#: util/install-info.c:464 util/install-info.c:474
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr "%s: leere Datei"
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY ohne END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY ohne START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
#, c-format
msgid "%s: Specify the Info directory only once.\n"
msgstr "%s: Info-Verzeichnis nur einmal angeben.\n"
-#: util/install-info.c:502
+#: util/install-info.c:1192
#, c-format
msgid "%s: Specify the Info file only once.\n"
msgstr "%s: Info-Datei nur einmal angeben.\n"
# checkit
-#: util/install-info.c:550
+#: util/install-info.c:1241
#, c-format
msgid "excess command line argument `%s'"
msgstr "Kommandozeilen-Argument »%s« wird übergangen"
-#: util/install-info.c:554
+#: util/install-info.c:1245
msgid "No input file specified; try --help for more information."
msgstr "Keine Eingabe-Datei angegeben; »--help« gibt weitere Informationen."
-#: util/install-info.c:556
+#: util/install-info.c:1247
msgid "No dir file specified; try --help for more information."
msgstr "Keine dir-Datei angegeben; »--help« gibt weitere Informationen."
-#: util/install-info.c:608 util/install-info.c:631
-msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
-msgstr "START-INFO-DIR-ENTRY ohne END-INFO-DIR-ENTRY"
-
-#: util/install-info.c:627
-msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
-msgstr "END-INFO-DIR-ENTRY ohne START-INFO-DIR-ENTRY"
-
-#. No need to abort here, the original info file may not have
-#. the requisite Texinfo commands. This is not something an
-#. installer should have to correct (it's a problem for the
-#. maintainer), and there's no need to cause subsequent parts of
-#. `make install' to fail.
-#: util/install-info.c:641
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
#, c-format
msgid "no info dir entry in `%s'"
msgstr "Kein Info-Verzeichnis-Eintrag in »%s«"
-#: util/install-info.c:852
+#: util/install-info.c:1384
#, c-format
msgid "menu item `%s' already exists, for file `%s'"
msgstr "Menüpunkt »%s« bereits vorhanden, für Datei »%s«"
-#: util/install-info.c:875
+#: util/install-info.c:1407
#, c-format
msgid "no entries found for `%s'; nothing deleted"
msgstr "keine Einträge für »%s« gefunden; nichts entfernt"
-#: util/texindex.c:253
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "diese Hilfe anzeigen"
+
+#: util/texindex.c:246
msgid "keep temporary files around after processing"
msgstr "temporäre Dateien bis nach der Verarbeitung aufheben"
-#: util/texindex.c:255
+#: util/texindex.c:248
msgid "do not keep temporary files around after processing (default)"
msgstr "keine temporäre Dateien bis nach der Verarbeitung aufheben (Standard)"
-#: util/texindex.c:257
+#: util/texindex.c:250
msgid "send output to FILE"
msgstr "Ausgabe nach DATEI schicken"
-#: util/texindex.c:259
+#: util/texindex.c:252
msgid "display version information and exit"
msgstr "Programmversion anzeigen"
-#: util/texindex.c:261
-msgid "display this help and exit"
-msgstr "diese Hilfe anzeigen"
-
-#: util/texindex.c:272
+#: util/texindex.c:263
#, c-format
msgid "Usage: %s [OPTION]... FILE...\n"
msgstr "Aufruf: %s [OPTION]... DATEI...\n"
-#: util/texindex.c:273
+#: util/texindex.c:264
msgid "Generate a sorted index for each TeX output FILE.\n"
msgstr "Erzeuge einen sortierten Index für jede TeX-Ausgabedatei.\n"
-#. Avoid trigraph nonsense.
-#: util/texindex.c:275
-msgid "Usually FILE... is `foo.??' for a document `foo.texi'.\n"
-msgstr "DATEI... ist normalerweise »foo.??« für ein Dokument »foo.texi«.\n"
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr "DATEI... ist normalerweise »foo.%c%c« für ein Dokument »foo.texi«.\n"
-#: util/texindex.c:276
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
msgid ""
"\n"
"Options:\n"
@@ -2050,40 +2613,46 @@ msgstr ""
"\n"
"Optionen:\n"
-#: util/texindex.c:290
+#: util/texindex.c:285
msgid ""
"\n"
-"Email bug reports to bug-texinfo@gnu.org."
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
msgstr ""
"\n"
-"Fehler (\"bugs\") bitte an <bug-texinfo@gnu.org> melden.\n"
-"\n"
-"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig."
+"Fehlerberichte per E-Mail an bug-texinfo@gnu.org schicken,\n"
+"allgemeine Fragen und Gedankenaustausch an help-texinfo@gnu.org.\n"
-#: util/texindex.c:917 util/texindex.c:951 util/texindex.c:1027
-#: util/texindex.c:1055
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
#, c-format
msgid "%s: not a texinfo index file"
msgstr "%s: keine Texinfo-Indexdatei"
-#: util/texindex.c:1012
+#: util/texindex.c:980
#, c-format
msgid "failure reopening %s"
msgstr "Fehler beim Wiederöffnen von »%s«"
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr "Keine Seitenzahl in %s"
+
# checkit
-#: util/texindex.c:1325
+#: util/texindex.c:1293
#, c-format
msgid "entry %s follows an entry with a secondary name"
msgstr "Eintrag »%s« folgt einem Eintrag mit einem Zweitnamen"
-#: util/texindex.c:1663
+#: util/texindex.c:1631
#, c-format
msgid "%s; for file `%s'.\n"
msgstr "%s; für Datei »%s«.\n"
-# checkit
-#: util/texindex.c:1724
-#, c-format
-msgid "Virtual memory exhausted in %s ()! Needed %d bytes."
-msgstr "Virtual memory exhausted in %s ()! Needed %d bytes."
+#~ msgid ""
+#~ "---------- Footnotes ----------\n"
+#~ "\n"
+#~ msgstr ""
+#~ "---------- Fußnoten -----------\n"
+#~ "\n"
diff --git a/gnu/usr.bin/texinfo/po/de_AT.gmo b/gnu/usr.bin/texinfo/po/de_AT.gmo
new file mode 100644
index 00000000000..4c5d80f445d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/de_AT.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/de_AT.po b/gnu/usr.bin/texinfo/po/de_AT.po
new file mode 100644
index 00000000000..9fd3f3d906d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/de_AT.po
@@ -0,0 +1,2314 @@
+# German/autrian messages for GNU Texinfo
+# Copyright © 1999 Free Software Foundation, Inc.
+# Karl Eichwalder <ke@suse.de>, 1999.
+#
+# 1999-02-16 21:11:38 MET
+# Vorgeschlagen von Guido Flohr <gufl0000@stud.uni-sb.de>.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: texinfo 3.12d\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-02-16 21:14+01:00\n"
+"Last-Translator: Karl Eichwalder <ke@suse.de>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr ""
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr ""
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr ""
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr ""
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr ""
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr ""
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr ""
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr ""
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr ""
+
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr ""
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr ""
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr ""
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr ""
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr ""
+
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr ""
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr ""
+
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr ""
+
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr ""
+
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr ""
+
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr ""
+
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr ""
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr ""
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr ""
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr ""
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr ""
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr ""
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr ""
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr ""
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr ""
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr ""
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr ""
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr ""
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr ""
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr ""
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr ""
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr ""
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr ""
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr ""
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr ""
+
+#: info/indices.c:383
+msgid "more "
+msgstr ""
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr ""
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr ""
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr ""
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr ""
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr ""
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+
+#: info/info.c:461
+#, c-format
+msgid "no index entries found for `%s'\n"
+msgstr ""
+
+#: info/info.c:530
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+
+#: info/info.c:604
+#, c-format
+msgid "Cannot find node `%s'."
+msgstr ""
+
+#: info/info.c:605
+#, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr ""
+
+#: info/info.c:606
+msgid "Cannot find a window!"
+msgstr ""
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+msgid "Cannot delete the last window."
+msgstr ""
+
+#: info/info.c:609
+msgid "No menu in this node."
+msgstr ""
+
+#: info/info.c:610
+msgid "No footnotes in this node."
+msgstr ""
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr ""
+
+#: info/info.c:612
+#, c-format
+msgid "No `%s' pointer for this node."
+msgstr ""
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+msgid "You are already at the last page of this node."
+msgstr ""
+
+#: info/info.c:616
+msgid "You are already at the first page of this node."
+msgstr ""
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr ""
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr ""
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr ""
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr ""
+
+#: info/infodoc.c:50
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr ""
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr ""
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr ""
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr ""
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr ""
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr ""
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr ""
+
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr ""
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr ""
+
+#: info/infodoc.c:63
+#, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:64
+#, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:65
+#, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr ""
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr ""
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr ""
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr ""
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr ""
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr ""
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr ""
+
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr ""
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr ""
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr ""
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr ""
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr ""
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr ""
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr ""
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr ""
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr ""
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr ""
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr ""
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr ""
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr ""
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr ""
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr ""
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr ""
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr ""
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr ""
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr ""
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr ""
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr ""
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr ""
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr ""
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr ""
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr ""
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr ""
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr ""
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr ""
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr ""
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr ""
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr ""
+
+#: info/session.c:169
+#, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr ""
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr ""
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr ""
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr ""
+
+#: info/session.c:884 makeinfo/node.c:1092
+msgid "Next"
+msgstr ""
+
+#: info/session.c:887
+msgid "Following Next node..."
+msgstr ""
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr ""
+
+#: info/session.c:915
+msgid "Selecting Next node..."
+msgstr ""
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr ""
+
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr ""
+
+#: info/session.c:1033
+msgid "No `Prev' for this node."
+msgstr ""
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
+msgstr ""
+
+#: info/session.c:1050
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr ""
+
+#: info/session.c:1053
+msgid "Moving Up in this window."
+msgstr ""
+
+#: info/session.c:1101
+msgid "Moving to `Prev's last menu item."
+msgstr ""
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr ""
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr ""
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr ""
+
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr ""
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr ""
+
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr ""
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr ""
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr ""
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr ""
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr ""
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr ""
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr ""
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr ""
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr ""
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr ""
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr ""
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr ""
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr ""
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr ""
+
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr ""
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr ""
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr ""
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr ""
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+msgid "Select the Next node"
+msgstr ""
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+msgid "Select the Prev node"
+msgstr ""
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+msgid "Select the Up node"
+msgstr ""
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr ""
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr ""
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr ""
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr ""
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr ""
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr ""
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr ""
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr ""
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr ""
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr ""
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr ""
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr ""
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr ""
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr ""
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr ""
+
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr ""
+
+#: info/session.c:2382
+#, c-format
+msgid "No menu in node `%s'."
+msgstr ""
+
+#: info/session.c:2422
+#, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr ""
+
+#: info/session.c:2452
+#, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr ""
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr ""
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr ""
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr ""
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr ""
+
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr ""
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr ""
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr ""
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr ""
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr ""
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr ""
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr ""
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr ""
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr ""
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr ""
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr ""
+
+#: info/session.c:2988
+#, c-format
+msgid "Cannot find `%s'."
+msgstr ""
+
+#: info/session.c:3033 info/session.c:3154
+#, c-format
+msgid "Could not create output file `%s'."
+msgstr ""
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr ""
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, c-format
+msgid "Writing node %s..."
+msgstr ""
+
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr ""
+
+#: info/session.c:3216
+#, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr ""
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, c-format
+msgid "Printing node %s..."
+msgstr ""
+
+#: info/session.c:3464
+#, c-format
+msgid "Searching subfile %s ..."
+msgstr ""
+
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
+msgstr ""
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr ""
+
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr ""
+
+#: info/session.c:3573
+#, c-format
+msgid "%s%sfor string [%s]: "
+msgstr ""
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr ""
+
+#: info/session.c:3574
+msgid "Search"
+msgstr ""
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr ""
+
+#: info/session.c:3575
+msgid " "
+msgstr ""
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr ""
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr ""
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr ""
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr ""
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr ""
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr ""
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr ""
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr ""
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr ""
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr ""
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr ""
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr ""
+
+#: info/session.c:4292
+msgid "Quit"
+msgstr ""
+
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
+msgstr ""
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr ""
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr ""
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr ""
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr ""
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr ""
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr ""
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr ""
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr ""
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr ""
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr ""
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr ""
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr ""
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr ""
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr ""
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr ""
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr ""
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr ""
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr ""
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr ""
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr ""
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr ""
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr ""
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr ""
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr ""
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr ""
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr ""
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr ""
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr ""
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr ""
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "Jänner"
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr ""
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr ""
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr ""
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr ""
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr ""
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr ""
+
+#: makeinfo/cmds.c:754
+#, c-format
+msgid "%c%s is obsolete"
+msgstr ""
+
+#: makeinfo/cmds.c:814
+#, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr ""
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr ""
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr ""
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr ""
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr ""
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr ""
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr ""
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr ""
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr ""
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr ""
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr ""
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr ""
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr ""
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
+msgstr ""
+
+#: makeinfo/defun.c:656
+#, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr ""
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr ""
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr ""
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr ""
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr ""
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr ""
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr ""
+
+#: makeinfo/index.c:212
+#, c-format
+msgid "Unknown index `%s'"
+msgstr ""
+
+#: makeinfo/index.c:382
+#, c-format
+msgid "Index `%s' already exists"
+msgstr ""
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr ""
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr ""
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr ""
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr ""
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr ""
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr ""
+
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr ""
+
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr ""
+
+#: makeinfo/insertion.c:623
+#, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr ""
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr ""
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr ""
+
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr ""
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr ""
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr ""
+
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
+msgstr ""
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr ""
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr ""
+
+#: makeinfo/insertion.c:1175
+#, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr ""
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr ""
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr ""
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr ""
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr ""
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr ""
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr ""
+
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr ""
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr ""
+
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr ""
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr ""
+
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr ""
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr ""
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr ""
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr ""
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:391
+#, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr ""
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1358
+#, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1657
+#, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr ""
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr ""
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3259
+#, c-format
+msgid "{No value for `%s'}"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr ""
+
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr ""
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr ""
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr ""
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr ""
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr ""
+
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr ""
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr ""
+
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr ""
+
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr ""
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr ""
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr ""
+
+#: makeinfo/node.c:774
+msgid "Node:"
+msgstr ""
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
+msgstr ""
+
+#: makeinfo/node.c:793
+msgid "Previous:"
+msgstr ""
+
+#: makeinfo/node.c:803
+msgid "Up:"
+msgstr ""
+
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr ""
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr ""
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr ""
+
+#: makeinfo/node.c:1115
+#, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr ""
+
+#: makeinfo/node.c:1119
+#, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr ""
+
+#: makeinfo/node.c:1133
+msgid "Prev"
+msgstr ""
+
+#: makeinfo/node.c:1176
+#, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr ""
+
+#: makeinfo/node.c:1180
+#, c-format
+msgid "This node (%s) has the bad Next"
+msgstr ""
+
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr ""
+
+#: makeinfo/node.c:1197
+msgid "Up"
+msgstr ""
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr ""
+
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr ""
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr ""
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr ""
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr ""
+
+#: makeinfo/sectioning.c:468
+#, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr ""
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr ""
+
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr ""
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr ""
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr ""
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr ""
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr ""
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr ""
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr ""
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr ""
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr ""
+
+#: util/install-info.c:389
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+
+#: util/install-info.c:442
+#, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr ""
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr ""
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr ""
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr ""
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr ""
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr ""
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr ""
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr ""
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr ""
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr ""
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr ""
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr ""
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr ""
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr ""
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr ""
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr ""
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr ""
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr ""
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr ""
+
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr ""
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr ""
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr ""
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr ""
+
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr ""
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr ""
diff --git a/gnu/usr.bin/texinfo/po/eo.gmo b/gnu/usr.bin/texinfo/po/eo.gmo
new file mode 100644
index 00000000000..f3ab27d4318
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/eo.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/eo.po b/gnu/usr.bin/texinfo/po/eo.po
new file mode 100644
index 00000000000..ec180d459f2
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/eo.po
@@ -0,0 +1,2552 @@
+# Esperanto translations for GNU Texinfo-3.12.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Sergio Pokrovskij <pok@iis.nsk.su>, 1999
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: texinfo 3.12n\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-07-29 19:47+07:00\n"
+"Last-Translator: Sergio Pokrovskij <pok@iis.nsk.su>\n"
+"Language-Team: Esperanto <eo@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-3\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr "Unu signon antaýen"
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr "Unu signon malantaýen"
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr "Al la komenco de æi tiu linio"
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr "Al la fino de æi tiu linio"
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr "Unu vorton antaýen"
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr "Unu vorton malantaýen"
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr "Forigu la signon subkursoran"
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr "Forigu la signon ¼us antaý la kursoro"
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr "Rezigno aý eliro"
+
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr "Akceptu (aý kompletigu) æi tiun linion"
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr "Enþovu la tujan signon senþanøe"
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr "Enþovu tiun signon"
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr "Enþovu TAB-signon"
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr "Permutu la signojn æe la kursoro"
+
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr "Engluu la enhavon de la lasta forviþo"
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr "Viþringo malplenas"
+
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr "Regluu antaýan forviþa¼on"
+
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr "Forviþu ekde la kursoro øis la fino de la linio"
+
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr "Forviþu ekde la kursoro øis la komenco de la linio"
+
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr "Forviþu la vorton tuj post la kursoro"
+
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr "Forviþu la vorton ¼us antaý la kursoro"
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr "Nekompleta"
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr "Eligu la eblajn kompletigojn"
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr "Kompletigo malestas"
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr "Sola kompletigo"
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr "Unu kompletigo:\n"
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr "%d kompletigoj:\n"
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr "Enþovu la kompletigon"
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr "Kompletigoj estas seræataj ..."
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr "Rulumu la fenestron de kompletigoj"
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr "La piednotoj ne eligeblas"
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr "Montru la piednotojn el æi tiu nodo en alia fenestro"
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr "Seræu æenon en la indekso por æi tiu dosiero"
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr "Estas seræataj indeksaj artikoloj ..."
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr "Nenia indekso trovita."
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr "Indeksa artikolo: "
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+"Pasu al la sekva indeksa ero kongrua al la lasta komando \"\\[index-search]\""
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr "Malestas antaýa æeno por seræo en indekso."
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr "Neniu indeksa artikolo."
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr "En la indekso ne estas %sartikoloj kun \"%s\"."
+
+#: info/indices.c:383
+msgid "more "
+msgstr "pli da "
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr "MALEBLAS VIDI ÆI TION"
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr "Trovita \"%s\" en %s. (\"\\[next-index-match]\" seræos la sekvan.)"
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr "Seræo en la indeksoj de \"%s\"..."
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+"Seræu æenon en æiuj konataj indeksoj de la Info-dosiero kaj faru menuon"
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr "Seræu en indekso informon pri: "
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+"\n"
+"* Menu: Nodoj kies indices entenas \"%s\":\n"
+
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr "Por ricevi pli da informoj uzu la opcion \"--help\".\n"
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+"Copyright (c) %s Free Software Foundation, Inc.\n"
+"NENIU garantio estas donita. Vi povas pludoni ekzemplerojn de tiu\n"
+"programo laý la kondiæoj de la Øenerala Publika GNU-Rajtigilo.\n"
+"Pluaj informoj troveblas en la dosiero COPYING.\n"
+
+#: info/info.c:461
+#, c-format
+msgid "no index entries found for `%s'\n"
+msgstr "por \"%s\" ne troviøis indeksa artikolo\n"
+
+#: info/info.c:530
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Sintakso: %s [OPCIO]... [INFO-DOSIERO [MENUERO...]]\n"
+"\n"
+"Ebligas legi dokumentaron prezentitan en Info.\n"
+"\n"
+"Opcioj:\n"
+" --directory=UJO Aldonu la dosierUJOn al INFOPATH.\n"
+" --dribble=DOSIERO Notu la klavofrapojn de la uzanto en DOSIERO.\n"
+" --file=DOSIERO Vizitu la Info-DOSIEROn.\n"
+" --help Eligu æi tiun helpeton kaj finu.\n"
+" --index-search=ÆENO Vizitu nodon referencatan per indeksa artikolo "
+"ÆENO.\n"
+" --node=NODO Komencu per NODO.\n"
+" --output=DOSIERO Eligu la elektitajn nodojn en DOSIEROn.\n"
+" --restore=DOSIERO Legu la klavofrapojn el DOSIERO.\n"
+" --show-options, --usage Montru la nodon pri komandliniaj opcioj.\n"
+" --subnodes Rekursie eligu la menuerojn.\n"
+"%s --vi-keys usu vi-eskan kaj less-eskan klavararanøon\n"
+" --version Eligu la version de la programo kaj finu.\n"
+"\n"
+"La unua neopcia argumento, se donita, estas la nomo de vizitenda\n"
+"Info-dosiero, seræota en æiuj \"dir\"-dosieroj troveblaj per INFOPATH.\n"
+"Se øi mankas, Info kunfandas æiujn \"dir\"-dosierojn kaj eligas la "
+"rezulton.\n"
+"La ceteraj argumentoj estas la nomoj de menueroj de la unue vizitenda\n"
+"nodo.\n"
+"\n"
+"Ekzemploj:\n"
+" info eligu la menuon de la kataloga nodo\n"
+" info emacs komencu per la nodo \"emacs\" el la kataloga "
+"nodo\n"
+" info emacs buffers komencu per la nodo \"buffers\" el Emaksa "
+"manlibro\n"
+" info --show-options emacs komencu per la Emaksaj komandliniaj opcioj\n"
+" info -f ./um.info eligu la dosieron ./um.info sen atenti \"dir\"\n"
+"\n"
+"Erarraportojn sendu al <bug-texinfo@gnu.org>; øeneralajn demandojn kaj\n"
+"opiniojn al <help-texinfo@gnu.org>. Por la diskutoj pri esperantigo\n"
+"uzu la dissendoliston <eo@li.org>.\n"
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "Maleblas forigi la nodon \"%s\""
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "Maleblas forigi la nodon \"%s\""
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "Maleblas forigi fenestron permanentan"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "Maleblas forigi fenestron permanentan"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "En la nodo \"%s\" malestas menuo."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "Neniu referenco en æi tiu nodo."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "Neniu referenco en æi tiu nodo."
+
+#: info/info.c:612
+#, fuzzy, c-format
+msgid "No `%s' pointer for this node."
+msgstr "Mankas ligilo \"Next\" por æi tiu nodo."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "Iru al la komenco de æi tiu nodo"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "Iru al la komenco de æi tiu nodo"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr "Æefaj komandoj en la Info-fenestroj\n"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr "******************************\n"
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr " %-10s Forlasu æi tiun helpon.\n"
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr " %-10s Forlasu la tutan Info.\n"
+
+#: info/infodoc.c:50
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr " %-10s Voku la lernilon pri Info.\n"
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr "Por movi ene de nodo:\n"
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr "---------------------\n"
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr " %-10s Unu paøon antaýen.\n"
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr " %-10s Unu paøon malantaýen.\n"
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr " %-10s Iru al la komenco de æi tiu nodo.\n"
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr " %-10s Iru al la fino de æi tiu nodo.\n"
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr " %-10s Unu paøon antaýen.\n"
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr " %-10s Unu paøon malantaýen.\n"
+
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr "Por elekti aliajn nodojn:\n"
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr "----------------------\n"
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr " %-10s Iru al la tujsekva (\"Next\") nodo de æi tiu nodo.\n"
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr " %-10s Iru al la ¼usantaýa (\"Previous\") nodo de æi tiu nodo.\n"
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr " %-10s Iru al la tujsupra (\"Up\") nodo de æi tiu nodo.\n"
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr " %-10s Iru al la tajpota menuero.\n"
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr " Elekto de menuero kaýzas transiron en alian nodon.\n"
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr " %-10s Sekvu reFerencon (legante la nomon de la referenco).\n"
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr " %-10s Revenu al la Lasta nodo vizitita en æi tiu fenestro.\n"
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr " %-10s Saltu sur la sekvan hipertekstan ligilon en æi tiu nodo.\n"
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr " %-10s Iru laý la subkursora hiperteksta ligo.\n"
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr " %-10s Iru al la æefkataloga nodo. Ekvivalentas al \"g (DIR)\".\n"
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr " %-10s Iru al la radika nodo. Ekvivalentas al \"g Top\".\n"
+
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr "Aliaj komandoj:\n"
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr "---------------\n"
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr " %-10s Elektu resp. la unuan ... la naýan eron de æi-noda menuo.\n"
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr " %-10s Elektu la lastan eron de æi-noda menuo.\n"
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+" %-10s Seræu indikotan signoæenon en la indeksaj artikoloj de æi tiu "
+"Info-\n"
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+" dosiero kaj elektu la nodon referencatan de la unua trovita artikolo.\n"
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr " %-10s Vizitu nodon indikotan per la nomo.\n"
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr " Ankaý la dosiernomon vi povas inkludi, kiel en (DOSIERO)NODO.\n"
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr " %-10s Seræu indikotan signoæenon tra æi tiu Info-dosiero, kaj\n"
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr " vizitu la nodon en kiu troviøos la sekva apero.\n"
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr " %-10s Seræu indikotan signoæenon tra æi tiu Info-dosiero, kaj\n"
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr "La kuranta serævojo estas:\n"
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+"Komandoj disponeblaj en Info-fenestroj:\n"
+"\n"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+"Komandoj disponeblaj en la e¶ozono:\n"
+"\n"
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+"La sekvaj komandoj vokeblas nur per M-x:\n"
+"\n"
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr "--- Uzu \"\\[history-node]\" aý \"\\[kill-node]\" por eliri ---\n"
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr "Eligu helpomesaøon"
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr "Vizitu la Info-nodon \"(info)Help\""
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr "Eligu la informon pri KLAVO"
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr "Priskribu klavon: %s"
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr "ESC %s estas nedifinita."
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr "%s estas nedifinita."
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr "%s estas ligita al %s."
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr "Montru, kion tajpi por plenumi koncernan komandon"
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr "Kie estas la komando: "
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr "neniu klavo trovita por la komando \"%s\""
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr "%s vokeblas nur per %s."
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr "%s vokeblas per %s."
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr "Malestas funkcio nomata \"%s\""
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr "Legu la nomon de Info-komando kaj priskribu øin"
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr "Priskribu komandon: "
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr "Legu en la e¶ozono nomon de komando kaj øin plenumu"
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr "Maleblas plenumi e¶ozonan (\"echo-area-\") komandon æi tie."
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr "Fiksu la alton de la prezentata fenestro"
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr "Alto de la ekrano estu (%d): "
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+" La fontodosieroj tralaboritaj por fari æi tiun dosieron:\n"
+"\n"
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr "Maleblas prilabori la dosieron %s.\n"
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+"\n"
+"* Menu:\n"
+" (Dosiero)Nodo Linioj Longo Entenanta Dosiero\n"
+" -------------- ------ ----- -----------------"
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+"Jen la menuo de nodoj kiujn vi lastatempe vizitis.\n"
+"Elektu iun el la menuo, aý uzu \"\\[history-node]\" en alia fenestro.\n"
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr "Faru fenestron entenantan menuon de æiuj nune vizititaj nodoj"
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr "Elektu nodon jam vizititan en videbla fenestro"
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr "Elektu vizititan nodon: "
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr "La referenco malaperis! (%s)."
+
+#: info/session.c:169
+#, fuzzy, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+"Bonvenon al Info, versio %s. \"\\[get-help-window]\" por helpo, "
+"\"\\[menu-item]\" por menuero."
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr "Malleviøu al la sekva linio"
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr "Leviøu al la antaýa linio"
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr "Iru al la fino de la linio"
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr "Iru al la komenco de la linio"
+
+#: info/session.c:884 makeinfo/node.c:1092
+msgid "Next"
+msgstr "Sekva"
+
+#: info/session.c:887
+msgid "Following Next node..."
+msgstr "Estas legata la nodo \"Next\" ..."
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr "La unua menuero estas elektata ..."
+
+#: info/session.c:915
+msgid "Selecting Next node..."
+msgstr "La nodo \"Next\" estas elektata ..."
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr "%d-foje supren, poste al la sekva (\"Next\")."
+
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr "Malestas pluaj referencoj en la dokumento."
+
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
+msgstr "Mankas ligilo \"Prev\" por tiu nodo."
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
+msgstr "Iro al la antaýa nodo \"Prev\" en æi tiu fenestro."
+
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr "En la dokumento mankas ligilo(j) \"Prev\" aý \"Up\" por tiu nodo."
+
+#: info/session.c:1053
+msgid "Moving Up in this window."
+msgstr "Leviøo al la nodo \"Up\" en æi tiu fenestro."
+
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
+msgstr "Iro al la lasta menuero de la nodo \"Prev\"."
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr "Movu antaýen aý malsupren en la strukturo de nodoj"
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr "Movu malantaýen aý supren en la strukturo de nodoj"
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr "Rulumu antaýen en æi tiu fenestro"
+
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr "Rulumu antaýen en æi tiu fenestro kaj fiksu defaýltan fenestrograndon"
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr "Rulumu malantaýen en æi tiu fenestro"
+
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr ""
+"Rulumu malantaýen en æi tiu fenestro kaj fiksu defaýltan fenestrograndon"
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr "Iru al la komenco de æi tiu nodo"
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr "Iru al la fino de æi tiu nodo"
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr "Linie rulumu suben"
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr "Linie rulumu supren"
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr "Duonekrane rulumu suben"
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr "Duonekrane rulumu supren"
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr "Elektu la sekvan fenestron"
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr "Elektu la antaýan fenestron"
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr "Disfendu la kurantan fenestron"
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr "Forigu la kurantan fenestron"
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr "Maleblas forigi fenestron permanentan"
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr "Forigu æiujn ceterajn fenestrojn"
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr "Rulumu la alian fenestron"
+
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr "Rulumu la alian fenestron malantaýen"
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr "(Mal)pligrandigu æi tiun fenestron"
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr "Dispartigu la disponeblan ekranspacon inter la videblaj fenestroj"
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr "Baskulþaltu la reøimon de linifaldo en la kuranta fenestro"
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+msgid "Select the Next node"
+msgstr "Elektu la nodon sekvan (\"Next\")"
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+msgid "Select the Prev node"
+msgstr "Elektu la nodon antaýan (\"Prev\")"
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+msgid "Select the Up node"
+msgstr "Elektu la nodon supran (\"Up\")"
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr "Elektu la lastan nodon en æi tiu dosiero"
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr "Æi tiu fenestro ne havas pluajn nodojn"
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr "Elektu la unuan nodon en æi tiu dosiero"
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr "Elektu la lastan eron en la menuo de æi tiu nodo"
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr "Elektu æi tiun menueron"
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr "Æi tiu menuo ne havas %d erojn."
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr "Menuero (%s): "
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr "Menuero: "
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr "Sekvu referencon (%s): "
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr "Sekvu referencon: "
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr "Legu menueron kaj elektu øian nodon"
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr "Legu piednoton aý referencon kaj elektu øian nodon"
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr "Iru al la komenco de la menuo de æi tiu nodo"
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr ""
+"Vizitu samtempe kiom eble plej multe da menueroj (æiun en aparta fenestro)"
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr "Legu nodnomon kaj elektu la nodon"
+
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr "Iru al la nodo: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "En la nodo \"%s\" malestas menuo."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "Menuero \"%s\" malestas en la nodo \"%s\"."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr "Maleblas trovi nodon referencatan per \"%s\" en \"%s\"."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr "Legu liston da menuoj, komencante per dir kaj sekvante ilin"
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr "Sekvu menuojn: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr "Trovu la nodon priskribantan programvokon"
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr "Trovu la voknodon de [%s]: "
+
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr "Legu referencon al manlibra paøo kaj øin elektu"
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr "Manlibran paøon: "
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr "Elektu la nodon \"Top\" en æi tiu dosiero"
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr "Elektu la nodon \"(dir)\""
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr "Forviþu la nodon (%s): "
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr "Maleblas forigi la nodon \"%s\""
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr "Maleblas forigi la lastan nodon"
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr "Elektu nodon plej ¼use elektitan"
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr "Forviþu æi tiun nodon"
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr "Legu la dosiernomon kaj øin elektu"
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr "Trovu la dosieron: "
+
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
+msgstr "Maleblas trovi \"%s\"."
+
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
+msgstr "Maleblas krei eligan dosieron \"%s\"."
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr "Prete."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
+msgstr "Estas skribata la nodo \"%s\" ..."
+
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr "La enhavon de æi tiu nodo metu en la dukton per INFO_PRINT_COMMAND"
+
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr "Maleblas malfermi dukton al \"%s\"."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
+msgstr "Estas printata la nodo \"%s\" ..."
+
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
+msgstr "Estas seræata la subdosiero \"%s\" ..."
+
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
+msgstr "Legu æenon kaj seræu øin usklecodistinge"
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr "Legu æenon kaj øin seræu"
+
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr "Legu æenon kaj øin seræu malantaýen"
+
+#: info/session.c:3573
+#, c-format
+msgid "%s%sfor string [%s]: "
+msgstr "%s%spor signoæeno [%s]: "
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr "Seræu malantaýen"
+
+#: info/session.c:3574
+msgid "Search"
+msgstr "Seræu"
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr " usklecodistinge"
+
+#: info/session.c:3575
+msgid " "
+msgstr " "
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr "Seræo fiaskis."
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr "Ripetu la ¼usan seræon samdirekte"
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr "Malestas pli frua seræoæeno."
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr "Ripetu la ¼usan seræon alidirekte"
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr "Interaktive seræu æenon tajpatan"
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr "Interaktiva seræo malantaýen: "
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr "Interaktiva seræo: "
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr "Fiasko "
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr "Iru al la antaýa referenco"
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr "Iru al la sekva referenco"
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr "Elektu la referencon aý la menueron de æi tiu linio"
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr "Æesigu la kurantan operacion"
+
+#: info/session.c:4292
+msgid "Quit"
+msgstr "Finu"
+
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
+msgstr "Movu la kursoron sur indikitan linion de la fenestro"
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr "Refreþigi la ekranon"
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr "Eliru el Info"
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr "Komando nekonata (%s)."
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr "\"\" ne validas"
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr "\"%s\" ne validas"
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr "Aldonu tiun ciferon al la kuranta argumento nombra"
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr "Komencu (aý 4-obligu) la kurantan argumenton nombran"
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr "Uzata interne de \\[universal-argument]"
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr "readline: Virtuala memoro elæerpita!\n"
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr "Æe \"On\", la piednotoj aperas kaj malaperas aýtomate"
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr "Æe \"On\", kreo aý forigo de fenestro kaýzas rearanøon de la ceteraj"
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr "Æe \"On\", anstataý bleki fulmetu la ekranon"
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr "Æe \"On\", signalu pri eraro per bleko"
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr ""
+"Æe \"On\", Info traktas makulaturon post malpako de kunpremitaj dosieroj"
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr "Æe \"On\", la peco kongrua al la seræoæeno emfaziøas"
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr "Determinas la konduton de rulumo fine de nodo"
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr ""
+"La nombro de linioj rulumataj kiam la kursoro moviøas ekster la fenestron"
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr "Æe \"On\", Info akceptas kaj surekranigas la okbitajn signojn"
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr "Klarigu la uzon de variablo"
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr "Priskribu variablon: "
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr "Valorizu Info-variablon"
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr "Valorizu variablon: "
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr "Variablo %s ricevu la valoron (%d): "
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr "%s ricevu la valoron (%s): "
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr "--*** Etikedoj malaktualiøis ***"
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr "-----Info: (), linioj ----, "
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr "-%s---Info: %s, %d linioj --%s--"
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr "-%s%s-Info: (%s)%s, %d linioj --%s--"
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr " Subdosiero: %s"
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opcio \"%s\" estas ambigua\n"
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opcio \"--%s\" ne toleras argumenton\n"
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opcio \"%c%s\" ne toleras argumenton\n"
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opcio \"%s\" bezonas argumenton\n"
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nekonata opcio \"--%s\"\n"
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nekonata opcio \"%c%s\"\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: misa opcio -- %c\n"
+
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: nevalida opcio -- %c\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opcio bezonas argumenton -- %c\n"
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opcio \"-W %s\" estas ambigua\n"
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opcio \"-W %s\" ne toleras argumenton\n"
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "januaro"
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr "februaro"
+
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr "marto"
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr "aprilo"
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr "majo"
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr "junio"
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr "julio"
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr "aýgusto"
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr "septembro"
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr "oktobro"
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr "novembro"
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr "decembro"
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr "dubinda signo \"%c\" en @var"
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr "argumento de @sc tuta majuskla, do neniel þanøiøita"
+
+#: makeinfo/cmds.c:754
+#, c-format
+msgid "%c%s is obsolete"
+msgstr "%c%s arkaikiøis"
+
+#: makeinfo/cmds.c:814
+#, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "@sp bezonas ne \"%s\" sed pozitivan argumenton nombran"
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr "Misa argumento por %c%s"
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr "asis"
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr "none"
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr "Mankas \"}\" en la argumento de @def"
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr "Funkcio"
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr "Makroo"
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr "Speciala Formo"
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr "Variablo"
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr "Uzula opcio"
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr "Ekzemplera variablo"
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr "Metodo"
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr "de"
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
+msgstr "sur"
+
+#: makeinfo/defun.c:656
+#, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr "Nur en \"%s\"-enþovo uzeblas \"%s\"x."
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr "%s: getwd: %s, %s\n"
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr "\"%c%s\" bezonas argumenton \"{...}\", ne nuran \"%s\""
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr "Mankas \"}\" por la piednoto \"%s\""
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr "Piednoto difinita sen patra nodo"
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr "Piednotoj"
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr "Sen titolo"
+
+#: makeinfo/index.c:212
+#, c-format
+msgid "Unknown index `%s'"
+msgstr "Nekonata indekso \"%s\""
+
+#: makeinfo/index.c:382
+#, c-format
+msgid "Index `%s' already exists"
+msgstr "Jam estas indekso \"%s\""
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr "Nekonata indekso \"%s\" kajaý \"%s\" en @synindex"
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr "Nekonata indekso \"%s\" en @printindex"
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr "Artikolo por indekso \"%s\" estas ekster iu ajn nodo"
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr "(ekster iu ajn nodo)"
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr "Misa tipo en la funkcio insertion_type_pname"
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr "Troo en la stako de enumeracioj"
+
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr "mankas sekva enumeracia litero, rekomencite ekde %c"
+
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s bezonas argumenton: la aranøilon por %citem"
+
+#: makeinfo/insertion.c:623
+#, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr "\"@end\" atendis \"%s\", sed renkontis \"%s\""
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr "Mankas para \"%cend %s\""
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr "%s bezonas literon aý ciferon"
+
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr "@menu jam antaý la unua @nodo; nodo \"Top\" kreitas"
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr "eble via @top-nodo staru sub @ifnottex anstataý sub @ifinfo?"
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr "@detailmenu renkontita jam antaý la unua nodo; nodo \"Top\" kreitas"
+
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
+msgstr "Mankas para \"%c%s\""
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr "\"%c%s\" bezonas post si ion"
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr "Misa argumento por \"%s\", \"%s\", uzanta \"%s\""
+
+#: makeinfo/insertion.c:1175
+#, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr "@%s estas sensenca ene de bloko \"@%s\""
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr "@itemx estas sensenca ene de bloko \"%s\""
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr "%c%s renkontita ekster \"insertion block\""
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr "%s ne estas valida lingvokodo laý ISO 639"
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr "%c%s atendas argumenton \"i\" aý \"j\", ne \"%c\""
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr "%c%s akceptas nur solsignan argumenton \"i\" aý \"j\""
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr "makroo \"%s\" jam difinita antaýe"
+
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "æi tie estas la antaýa difino de \"%s\""
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr "en makroo, \\ sekvata de \"%s\" (anstataý de \\ aý nomo de parametro)"
+
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr "Makroo \"%s\" en la linio %d havas troan argumenton"
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr "makroo %cend ne troviøis"
+
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr "@quote-arg utilas nur en sol-argumentaj makrooj"
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr "misa @end %s por @%s"
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: averto: "
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "Tro multe da eraroj! Halt'.\n"
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "Misloka %c"
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Por pluaj detaloj tajpu \"%s --help\".\n"
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:391
+#, fuzzy, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+" --ifhtml Traktu @ifhtml kaj @html, eæ se HTML ne estas "
+"celformo\n"
+" --ifinfo Traktu @ifinfo, eæ tradukante al HTML\n"
+" --iftex Traktu la pecojn en @iftex kaj @tex\n"
+" --macro-expand, -E DRO Metu en eligdosieron DRO la Texinfo-tekston "
+"ricevitan\n"
+" per makrotraktado\n"
+" --no-headers Ne dispartigu en la nodojn, ne faru la liniojn\n"
+" \"Node:\"; eligu en la æefeligujon eæ sen "
+"--output\n"
+" --no-ifhtml Preterigu la tekston sub @ifhtml kaj @html\n"
+" --no-ifinfo Preterigu la tekston sub @ifinfo\n"
+" --no-iftex Preterigu la tekston sub @iftex kaj @tex\n"
+" --no-split Ne disfendu grandan Info-dosieron, nek apartigu\n"
+" æiun nodon en apartan HTML-dosieron\n"
+" --no-validate Abolu la kontrolon de la internodaj referencoj\n"
+" --no-warn Ne eligu la avertojn (ne koncernas la erarmesaøojn)\n"
+" --number-sections Generu kun la numeroj de æapitroj, sekcioj ktp \n"
+" -o, --output=DOSIERO Skribu en DOSIEROn, malatentante @setfilename\n"
+" --paragraph-indent=VAL Alinea enþovo estu VAL spacetoj (defaýlte %d);\n"
+" se VAL estas \"none\", ne enþovu;\n"
+" se VAL estas \"asis\", obeu ekzistantan enþovon\n"
+" --reference-limit N Avertu post pli ol N referencoj (defaýlte %d)\n"
+" -v, --verbose Rakontu kio estas farata\n"
+" --version Eligu la nomon, la version de la programo kaj eliru\n"
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+"\n"
+"La defaýlta konduto de la @if...-frazoj dependas je la celata formo:\n"
+"se HTML estas generata, --ifhtml þaltiøas kaj la ceteraj, malþaltiøas;\n"
+"se Info aý plata teksto estas generata, --ifinfo þaltiøas kaj la\n"
+"ceteraj, malþaltiøas.\n"
+"Ekzemploj:\n"
+" makeinfo UM.texi konservu Info laý @setfilename de UM\n"
+" makeinfo --html UM.texi konservu HTML laý @setfilename de UM\n"
+" makeinfo --no-headers -o - UM.texi sendu platan tekston en æefeligujon\n"
+" makeinfo --number-sections UM.texi konservu Info kun la sekcinumeroj\n"
+" makeinfo --no-split UM.texi faru unu Info-dosieron, kiom ajn "
+"grandan\n"
+"\n"
+"Erarraportojn sendu al <bug-texinfo@gnu.org>; øeneralajn demandojn kaj\n"
+"opiniojn al <help-texinfo@gnu.org>. Por la diskutoj pri esperantigo\n"
+"uzu la dissendoliston <eo@li.org>."
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: la argumento %s devas esti nombra, ne \"%s\".\n"
+
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "Fiaskis malfermo de makrotraktada eligdosiero \"%s\""
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "Ne povas esti pli ol unu makrotraktada eligdosiero"
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: argumento de la opcio --paragraph-indent estu nombra, \"none\" aý\n"
+"\"asis\", ne \"%s\".\n"
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+"%s: argumento de la opcio --footnote-style estu \"separate\" aý\n"
+"\"end\", ne \"%s\".\n"
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr "%s: mankas dosiera argumento.\n"
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr "\"%s\" atendatas"
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr "Neniu \"%s\" trovita en \"%s\""
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr "%s: Makrotraktita¼o ne trafos en la æefeligujon æar Info iras tien.\n"
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "%s-dosiero \"%s\" estas generata el \"%s\".\n"
+
+#: makeinfo/makeinfo.c:1358
+#, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr "Æi tiun dosieron %s generis Makeinfo-%s el %s.\n"
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: La eligdosiero \"%s\" por makrotraktita¼o forigitas æar estis eraroj;\n"
+"uzu la opcion --force por øin reteni.\n"
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: La eligdosiero \"%s\" forigitas æar estis eraroj;\n"
+"uzu la opcion --force por øin reteni.\n"
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr "Nekonata komando \"%s\"."
+
+#: makeinfo/makeinfo.c:1657
+#, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr "Uzu vinkulojn por pasigi al \"@%s\" komandan argumenton"
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr "%c%s postulas vinkulojn \"{...}\""
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "Senpara \"}\""
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "SEN_NOMO!"
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr "%c%s sen \"}\""
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr "vidu "
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr "Vidu "
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr "Referencon devas sekvi punkto aý komo, ne %c"
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr "Mankas .png or .jpg por \"%s\""
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr "dosiero \"%s\" en la komando @image estas nelegebla: %s"
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr "mankas dosiera argumento en la komando @image"
+
+#: makeinfo/makeinfo.c:3259
+#, c-format
+msgid "{No value for `%s'}"
+msgstr "{Mankas Valoro Por \"%s\"}"
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr "%c%s bezonas nomon"
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr "Pli frue ol la para @end %s renkontiøis dosierfino"
+
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr "Mankas \"}\" en la þablono de @multitable"
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "la misa teksto \"%s\" post @multitable estas ignorita"
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr "Tro da kolumnoj en elemento de \"multitable\" (%d maksimume)"
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr "Maleblas elekti %d-an kolumnon en \"multitable\"."
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "komando @tab ekster \"multitable\"; ignorita"
+
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "** Multekolumna eligo el la lasta linio:\n"
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* kolumno %d-a: eliga¼o = %s\n"
+
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr "Nodo \"%s\" jam difinita en la linio %d"
+
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr "Estas aranøata la nodo \"%s\" ...\n"
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr "Nodo \"%s\" bezonas subdividan komandon (e.g. %c%s)"
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr "Mankas nodnomo por la komando \"%c%s\""
+
+#: makeinfo/node.c:774
+msgid "Node:"
+msgstr "Nodo:"
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
+msgstr "Sekva:"
+
+#: makeinfo/node.c:793
+msgid "Previous:"
+msgstr "Antaýa:"
+
+#: makeinfo/node.c:803
+msgid "Up:"
+msgstr "Supre:"
+
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr "%s referencas neekzistantan nodon \"%s\""
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr "Menuo"
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr "Referenco"
+
+#: makeinfo/node.c:1115
+#, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr "La kampo \"Next\" de la nodo \"%s\" ne estas reciprokita"
+
+#: makeinfo/node.c:1119
+#, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr "Æi tiu nodo (\"%s\") havas eraran kampon \"Prev\""
+
+#: makeinfo/node.c:1133
+msgid "Prev"
+msgstr "Antaýa"
+
+#: makeinfo/node.c:1176
+#, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr "La kampo \"Prev\" de la nodo \"%s\" ne estas reciprokita"
+
+#: makeinfo/node.c:1180
+#, c-format
+msgid "This node (%s) has the bad Next"
+msgstr "Æi tiu nodo (\"%s\") havas eraran kampon \"Next\""
+
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr "La nodo \"%s\" malhavas kampon \"Up\""
+
+#: makeinfo/node.c:1197
+msgid "Up"
+msgstr "Supre"
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr "En\"%s\" mankas menuero por \"%s\", malgraý ties ligilo \"Up\"\""
+
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr "la nodo \"%s\" estis referencita %d fojojn"
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr "la nodo \"%s\" ne estas referencita"
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr "Aldono %c"
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr "Interna eraro (search_sectioning) \"%s\"!"
+
+#: makeinfo/sectioning.c:468
+#, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "%c%s arkaikiøis; uzu %c%s anstataýe"
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr "Jam estas nodo kun sekcio %ctop"
+
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr "Jen estas la nodo %ctop"
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr "%ctop aperis pli frue ol %cnode; la defaýlto uzota estas %s"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr "Enhavtabelo"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr "Maldetala enhavtabelo"
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr "%s: æi tie mankas enhavtabelo"
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: averto: "
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "virtuala memoro elæerpitas"
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr " por %s"
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr "\tPor ricevi kompletan liston da opcioj tajpu \"%s --help\".\n"
+
+#: util/install-info.c:389
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Sintakso: %s [OPCIO]... [INFO-DOSIERO [DIR-DOSIERO]]\n"
+"\n"
+"Instalu aý forigu \"dir\"-a¼ojn el INFO-DOSIERO en la Info-katalogo\n"
+" DIR-DOSIERO.\n"
+"\n"
+"Opcioj:\n"
+"--delete Forigu la ekzistantajn \"dir\"-a¼ojn pri INFO-DOSIERO;\n"
+" ne enþovu iun ajn novan \"dir\"-a¼on.\n"
+"--dir-file=NOMO Indiku la dosieran NOMOn de Info-katalogo.\n"
+" Samkiel uzi la argumenton DIR-DOSIERO.\n"
+"--entry=TEKSTO Enþovu TEKSTOn kiel\"dir\"-a¼ojn por Info-katalogo.\n"
+" TEKSTO havu la formon de menuera linio plus nul aý\n"
+" pluraj linioj kromaj, komencantaj per blanka spaco.\n"
+" Se estas pli ol unu \"dir\"-a¼o, ili æiuj aldoniøos.\n"
+" Se estas nenia \"dir\"-a¼o, aldoniøos \"dir\"-a¼oj\n"
+" determinitaj el la informoj de la Info-dosiero.\n"
+"--help Eligu la helpon.\n"
+"--info-file=DOSIERO Indiku Info-DOSIEROn instalendan en la Info-katalogo.\n"
+" Samkiel uzi la argumenton INFO-DOSIERO.\n"
+"--info-dir=UJO Sinonimo por --dir-file=UJO/dir.\n"
+"--item=TEKSTO Sinonimo por --entry=TEKSTO\n"
+" Æiu \"dir\"-a¼o fakte estas menuero.\n"
+"--quiet Ne eligu avertojn.\n"
+"--remove Sinonimo por --delete.\n"
+"--section=SEKC Metu la \"dir\"-a¼ojn en sekcion SEKC de la "
+"Info-katalogo.\n"
+" Se pli ol unu sekcio estas indikitaj, æiuj \"dir\"-a¼oj\n"
+" aldoniøas en ilin æiujn. Se neniu sekcio estas "
+"indikita,\n"
+" ili determiniøos el la informoj de la Info-dosiero.\n"
+"--version Eligu la nomon, la version de la programo kaj eliru.\n"
+"\n"
+"Erarraportojn sendu al <bug-texinfo@gnu.org>; øeneralajn demandojn kaj\n"
+"opiniojn al <help-texinfo@gnu.org>. Por la diskutoj pri esperantigo uzu\n"
+"dissendoliston <eo@li.org>.\n"
+
+#: util/install-info.c:442
+#, fuzzy, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+"Æi tio estas la dosiero .../info/dir, entenanta la pinton de la \n"
+"la hierarkio Info -- la æefkatalogan nodon nomatan (dir)Top.\n"
+"Unuafoje lanæinte la programon Info, vi trafas en tiun nodon.\n"
+"\n"
+"File: dir,\tNode: Top,\tLa pinto de la INFO-hierarkio\n"
+"\n"
+" Æi tie (en la Info-katalogo) estas menuo de la æefaj temoj.\n"
+" Tajpu \"q\" por eliri; \"?\" por eligi æiujn komandojn de Info;\n"
+" \"d\" por reveni æi tien; \"h\" vokas lernilon por komencantoj;\n"
+" \"mEmacs<Return>\" disponigas la manlibron pri Emakso; ktp.\n"
+"\n"
+" Se vi legas per Emakso, alklaku menueron aý referencon per la 2-a\n"
+" musbutono por elekti la temon.\n"
+"\n"
+"* Menu:\n"
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr "%s: ne povas legi (%s) kaj ne povas krei (%s)\n"
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr "%s: malplena dosiero"
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY sen para END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY sen para START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr "%s: Indiku la Info-katalogon solfoje.\n"
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr "%s: Indiku la Info-dosieron solfoje.\n"
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr "troa argumento komandlinia: \"%s\""
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr "Mankas enigdosiero; provu --help por pluaj informoj."
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr "Mankas dosiero Info-katalogo (dir); provu --help por pluaj informoj."
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr "Nenia informo por Info-katalogo troviøis en \"%s\""
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr "menuero \"%s\" jam ekzistas (por la dosiero \"%s\")"
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr "Troviøis nenia informo Info-kataloga pri \"%s\"; nenio iøis forigita"
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "eligu æi tiun helpon kaj eliru"
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr "konservu la labordosierojn post la traktado"
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr "ne konservu la labordosierojn post la traktado (defaýlto)"
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr "sendu la eliga¼on en DOSIEROn"
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr "eligu la uzatan version kaj eliru"
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Uzmaniero: %s [OPCIO]... DOSIERO...\n"
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr "Generu ordigitan indekson por æiu TeX-a elig-DOSIERO.\n"
+
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr "Kutime DOSIERO... estas \"umo.%c%c\" por dokumento \"umo.texi\".\n"
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opcioj:\n"
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"\n"
+"Erarraportojn sendu al <bug-texinfo@prep.ai.mit.edu>; øeneralajn\n"
+"demandojn kaj opiniojn al <help-texinfo@gnu.org>. Por la diskutoj\n"
+"pri Esperanto-traduko uzu la dissendoliston <eo@li.org>.\n"
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr "%s: ne indeksa dosiero laý Texinfo"
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr "fiasko æe remalfermo de %s"
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr "Mankas paønumero en %s"
+
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr "la artikolo %s sekvas artikolon kun kromnomo"
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr "%s; por la dosiero \"%s\".\n"
+
+#~ msgid ""
+#~ "---------- Footnotes ----------\n"
+#~ "\n"
+#~ msgstr ""
+#~ "---------- Piednotoj ----------\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TEXINFO-FILE...\n"
+#~ "\n"
+#~ "Translate Texinfo source documentation to various other formats:\n"
+#~ "Info files suitable for reading online with Emacs or standalone GNU Info\n"
+#~ "(by default); plain text (with --no-headers); or HTML (with --html).\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -D VAR define a variable, as with @set.\n"
+#~ " -I DIR append DIR to the @include search path.\n"
+#~ " -P DIR prepend DIR to the @include search path.\n"
+#~ " -U VAR undefine a variable, as with @clear.\n"
+#~ " --commands-in-node-names allow @ commands in node names.\n"
+#~ " --error-limit=NUM quit after NUM errors (default %d).\n"
+#~ " --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+#~ " --footnote-style=STYLE output footnotes according to STYLE:\n"
+#~ " `separate' to place footnotes in their own "
+#~ "node,\n"
+#~ " `end' to place the footnotes at the end of the\n"
+#~ " node in which they are defined (the default).\n"
+#~ " --force preserve output even if errors.\n"
+#~ " --help display this help and exit.\n"
+#~ " --html output HTML rather than Info format;\n"
+#~ " implies --no-split.\n"
+#~ msgstr ""
+#~ "Sintakso: %s [OPTION]... TEXINFO-FILE...\n"
+#~ "\n"
+#~ "Tradukas fontan Texinfo dokumenton en diversajn aliajn formojn:\n"
+#~ "Info-dosierojn legeblajn interaktive per Emakso aý per aýtonoma GNU Info\n"
+#~ "(la defaýlto); plata teksto (se --no-headers); aý HTML (se --html).\n"
+#~ "\n"
+#~ "Opcioj:\n"
+#~ " -D VAR Difinu variablon, kiel per @set\n"
+#~ " -I DIR Alkroæu DIR al la fino de la serævojo por "
+#~ "@include\n"
+#~ " -P DIR Alkroæu DIR komence de la serævojo por @include\n"
+#~ " -U VAR Maldifinu variablon, kiel per @clear\n"
+#~ " --commands-in-node-names Permesu @-komandojn en nomoj de nodoj\n"
+#~ " --error-limit=N Haltu post N eraroj (defaýlte %d)\n"
+#~ " --fill-column=N Aranøu Info-liniojn N signojn longaj (defaýlte "
+#~ "%d)\n"
+#~ " --footnote-style=STILO Aranøu la piednotojn laý la STILO:\n"
+#~ " \"separate\" por loki la notojn en apartan "
+#~ "nodon,\n"
+#~ " \"end\" por loki ilin fine de la nodo en kiu\n"
+#~ " ili estas difinitaj (la defaýlto)\n"
+#~ " --force Konservu la eliga¼on eæ post eraroj\n"
+#~ " --help Eligu la helpon kaj eliru\n"
+#~ " --html Generu en HTML anstataý en Info; implicas "
+#~ "--no-split\n"
diff --git a/gnu/usr.bin/texinfo/po/nl.gmo b/gnu/usr.bin/texinfo/po/nl.gmo
new file mode 100644
index 00000000000..3bca9c1ad9d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/nl.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/nl.po b/gnu/usr.bin/texinfo/po/nl.po
new file mode 100644
index 00000000000..ad8acd03480
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/nl.po
@@ -0,0 +1,2693 @@
+# Dutch messages for GNU texinfo
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# Ivo Timmermans <zarq@iname.com>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: texinfo 3.12\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1998-04-16 22:35+02:00\n"
+"Last-Translator: Ivo Timmermans <zarq@iname.com>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr "Beweeg een teken naar voren"
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr "Beweeg een teken naar achteren"
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr "Ga naar het begin van deze regel"
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr "Ga naar het einde van deze regel"
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr "Beweeg een woord naar voren"
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr "Beweeg een woord naar achteren"
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr "Verwijder het teken onder de cursor"
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr "Verwijder het teken achter de cursor"
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr "Annuleer of beëindig operatie"
+
+# completion?
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr "Accepteer (of forceer voltooiïng van) deze regel"
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr "Voeg volgend teken letterlijk in"
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr "Voeg dit teken in"
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr "Voeg een TAB code in"
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr "Transponeer karakters op een punt"
+
+# kill?
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr "Zet de inhoud van de laatste kill terug"
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr "Kill ring is leeg"
+
+# kill?
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr "Zet een eerdere kill terug"
+
+# kill?
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr "Verwijder tot aan het einde van de regel"
+
+# kill?
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr "Verwijder tot aan het begin van de regel"
+
+# kill?
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr "Verwijder het woord na de cursor"
+
+# kill?
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr "Verwijder het woord voor de cursor"
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr "Niet compleet"
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr "Geef een lijst van mogelijke voltooiïngen"
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr "Geen voltooiïngen"
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr "Enige voltooiïng"
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr "Een voltooiïng:\n"
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr "%d voltooiïngen:\n"
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr "Voeg voltooiïng in"
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr "Voltooiïngen aan het bouwen..."
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr "Verschuif het voltooiïngsvenster"
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr "De voetnoten konden niet weergegeven worden"
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr ""
+"Laat de voetnoten zien die met deze pagina verbonden zijn in een ander "
+"venster"
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr "Zoek een string op in de index voor dit bestand"
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr "Zoeken naar index ingangen..."
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr "Geen indices gevonden."
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr "Index ingang: "
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+"Ga naar de volgende overeenkomende index-ingang van het laatste "
+"`\\[index-search]' commando"
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr "Geen eerdere index zoek string."
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr "Geen index ingangen."
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr "Geen index ingangen %sdie \"%s\" bevatten."
+
+#: info/indices.c:383
+msgid "more "
+msgstr "meer "
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr "KAN DIT NIET ZIEN"
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr ""
+"\"%s\" gevonden in %s. (`\\[next-index-match]' probeert de volgende te "
+"vinden.)"
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr "Zoeken in indices van \"%s\"..."
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+"Doorzoek alle bekende indices van info-bestanden voor een string en maak een "
+"menu"
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr "Index apropos: "
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+"\n"
+"* Menu: Pagina's waarvan de indices \"%s\" bevatten:\n"
+
+#: info/info.c:248
+#, fuzzy
+msgid "Try --help for more information.\n"
+msgstr "Probeer --help voor meer informatie."
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"Er is GEEN garantie. Je mag deze programmatuur herdistribueren\n"
+"onder de voorwaarden van de GNU General Public License.\n"
+"Voor meer informatie hierover, zie de bestanden met de naam COPYING.\n"
+
+#: info/info.c:461
+#, fuzzy, c-format
+msgid "no index entries found for `%s'\n"
+msgstr "geen ingangen gevonden\n"
+
+#: info/info.c:530
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Aanroep: %s [OPTIE]... [INFO-BESTAND [MENU-ITEM...]]]\n"
+"\n"
+"Lees documentatie in Info-formaat\n"
+"Voor een meer complete omschrijving van het gebruik van Info, type `info "
+"info options'.\n"
+"\n"
+"Opties:\n"
+"--directory DIR Voeg DIR toe aan INFOPAD.\n"
+"--dribble BESTAND Onthoud toetsaanslagen in BESTAND.\n"
+"--file BESTAND Specificeer te bekijken Info bestand.\n"
+"--node PAGINANAAM Specificeer pagina's in het eerste Info "
+"bestand.\n"
+"--output BESTAND Schrijf de geselecteerde pagina's naar "
+"BESTAND.\n"
+"--restore BESTAND Lees de eerste toetsaanslagen uit BESTAND.\n"
+"--subnodes Geef recursief alle menu-items.\n"
+"--help Laat deze helptekst zien en beëindig.\n"
+"--version Geef de versie-informatie van Info en "
+"beëindig.\n"
+"\n"
+"Het eerste argument, indien aanwezig, is de naam van het Info-bestand\n"
+"dat ingelezen dient te worden. Alle overige argumenten worden\n"
+"beschouwd als de namen van menu items in de eerste bezochte pagina. Bij\n"
+"voorbeeld, `info emacs buffers' gaat naar de pagina `buffers' in het\n"
+"bestand `emacs'.\n"
+"\n"
+"Meld fouten in het programma aan bug-texinfo@gnu.org;\n"
+"meld onjuistheden in de vertaling aan nl@li.org."
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "Kan pagina `%s' niet verwijderen"
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "Kan pagina `%s' niet verwijderen"
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "Kan een permanent venster niet verwijderen"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "Kan een permanent venster niet verwijderen"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "Er is geen menu op deze pagina."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "Geen verwijzingen in deze pagina."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "Geen verwijzingen in deze pagina."
+
+#: info/info.c:612
+#, fuzzy, c-format
+msgid "No `%s' pointer for this node."
+msgstr "Geen \"Volgende\" wijzer voor deze pagina."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "Ga naar het begin van deze pagina"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "Ga naar het begin van deze pagina"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+#, fuzzy
+msgid "Basic Commands in Info Windows\n"
+msgstr "Basiscommando's in Info Vensters"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr ""
+
+#: info/infodoc.c:48
+#, fuzzy, c-format
+msgid " %-10s Quit this help.\n"
+msgstr "Geen \"Vorige\" voor deze pagina."
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr ""
+
+#: info/infodoc.c:50
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr ""
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr ""
+
+#: info/infodoc.c:53
+#, fuzzy
+msgid "---------------------\n"
+msgstr ""
+"---------- Voetnoten ----------\n"
+"\n"
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr ""
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr ""
+
+# kill?
+#: info/infodoc.c:56
+#, fuzzy, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr "Verwijder tot aan het begin van de regel"
+
+#: info/infodoc.c:57
+#, fuzzy, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr "Ga naar het einde van deze pagina"
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr ""
+
+#: info/infodoc.c:59
+#, fuzzy, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr "Schuif terug in dit venster"
+
+#: info/infodoc.c:61
+#, fuzzy
+msgid "Selecting other nodes:\n"
+msgstr "Selecteer de `Vorige' pagina"
+
+#: info/infodoc.c:62
+#, fuzzy
+msgid "----------------------\n"
+msgstr ""
+"---------- Voetnoten ----------\n"
+"\n"
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr "Ga naar het einde van deze pagina"
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr "Ga naar het einde van deze pagina"
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr "Geen \"Vorige\" voor deze pagina."
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr ""
+
+#: info/infodoc.c:69
+#, fuzzy, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr "Selecteer de laatste pagina in dit bestand"
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr ""
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr ""
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr ""
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr ""
+
+#: info/infodoc.c:75
+#, fuzzy
+msgid "Other commands:\n"
+msgstr "Waar is het commando: "
+
+#: info/infodoc.c:76
+#, fuzzy
+msgid "---------------\n"
+msgstr ""
+"---------- Voetnoten ----------\n"
+"\n"
+
+#: info/infodoc.c:77
+#, fuzzy, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr "Selecteer de laatste keuze in het menu van deze pagina"
+
+#: info/infodoc.c:78
+#, fuzzy, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr "Selecteer de laatste keuze in het menu van deze pagina"
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr ""
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr ""
+
+#: info/infodoc.c:261
+#, fuzzy
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr "Basiscommando's in Info Vensters"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+"De volgende commando's kunnen alleen aangeroepen worden via M-x:\n"
+"\n"
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr ""
+"--- Gebruik `\\[history-node]' of `\\[kill-node]' om te beëindigen ---\n"
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr "Geef een help boodschap"
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr "Ga naar Info pagina `(info)Help'"
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr "Geef uitleg over KEY"
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr "Omschrijf toets: %s"
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr "ESC %s is niet gedefinieerd."
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr "%s is niet gedefinieerd."
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr "%s is gedefinieerd als %s."
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr ""
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr "Waar is het commando: "
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr "`%s' is niet toegekend aan een toets"
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr "%s kan alleen aangeroepen worden via %s."
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr "%s kan aangeroepen worden via %s."
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr "Er is geen functie met de naam `%s'"
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr "Lees de naam van een Info commando en geef een omschrijving"
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr "Omschrijf commando: "
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr "Lees de naam van een commando in de weergeefruimte en voer dat uit"
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr "Kan hier geen `echo-area' commando uitvoeren."
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr "Zet de hoogte van het weergegeven venster"
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr "Zet schermhoogte op (%d): "
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+" Bronbestanden veranderd om dit bestand in te voegen:\n"
+"\n"
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr "Kon het bestand %s niet manipuleren.\n"
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+"\n"
+"* Menu:\n"
+" (Bestand)Pagina Regels Grootte Bevat Bestand\n"
+" --------------- ----- ---- ---------------"
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+"Hier is het menu van pagina's die je recentelijk bekeken hebt.\n"
+"Selecteer er een uit dit menu, of gebruik `\\[history-node]' in een ander "
+"venster.\n"
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr "Maak een venster met een menu van alle bekeken pagina's"
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr "Selecteer een pagina die voorheen bekeken is in een zichtbaar venster"
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr "Selecteer een bezochte pagina: "
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr "De verwijzing is verdwenen! (%s)."
+
+#: info/session.c:169
+#, fuzzy, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+"Welkom bij Info versie %s. \"\\[get-help-window]\" voor hulp, "
+"\"\\[menu-item]\" voor een menukeuze."
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr "Ga naar de volgende regel"
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr "Ga naar de vorige regel"
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr "Ga naar het einde van de regel"
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr "Ga naar het begin van de regel"
+
+#: info/session.c:884 makeinfo/node.c:1092
+#, fuzzy
+msgid "Next"
+msgstr "Volgende"
+
+#: info/session.c:887
+#, fuzzy
+msgid "Following Next node..."
+msgstr "\"Volgende\" pagina aan het volgen..."
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr "Ik selecteer de eerste keuze uit het menu..."
+
+#: info/session.c:915
+#, fuzzy
+msgid "Selecting Next node..."
+msgstr "Ik selecteer de \"Volgende\" pagina..."
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr ""
+
+#: info/session.c:1009
+#, fuzzy
+msgid "No more nodes within this document."
+msgstr "Geen verwijzingen in deze pagina."
+
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
+msgstr "Geen \"Vorige\" voor deze pagina."
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+#, fuzzy
+msgid "Moving Prev in this window."
+msgstr "Ik beweeg \"Vorige\" naar dit venster."
+
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr "Geen \"Vorige\" of \"Omhoog\" voor deze pagina."
+
+#: info/session.c:1053
+#, fuzzy
+msgid "Moving Up in this window."
+msgstr "Ik ga \"Omhoog\" in dit venster."
+
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
+msgstr "Ik ga naar de laatste keuze van het menu van \"Vorige\"."
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr "Beweeg naar voren of beneden door de paginastructuur"
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr "Beweeg naar achteren of boven door de paginastructuur"
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr "Schuif verder in dit venster"
+
+#: info/session.c:1192
+#, fuzzy
+msgid "Scroll forward in this window and set default window size"
+msgstr "Schuif verder in dit venster"
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr "Schuif terug in dit venster"
+
+#: info/session.c:1244
+#, fuzzy
+msgid "Scroll backward in this window and set default window size"
+msgstr "Schuif terug in dit venster"
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr "Ga naar het begin van deze pagina"
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr "Ga naar het einde van deze pagina"
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr ""
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr ""
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr ""
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr ""
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr "Selecteer het volgende venster"
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr "Selecteer het vorige venster"
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr "Splits het huidige venster"
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr "Verwijder het huidige venster"
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr "Kan een permanent venster niet verwijderen"
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr "Verwijder alle andere vensters"
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr "Verschuif het andere venster"
+
+#: info/session.c:1635
+#, fuzzy
+msgid "Scroll the other window backward"
+msgstr "Verschuif het andere venster"
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr "Vergroot (of verklein) dit venster"
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr "Verdeel de beschikbare schermruimte tussen de zichtbare vensters"
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr "Verander de status van regeldoorlopen in het huidige venster"
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+#, fuzzy
+msgid "Select the Next node"
+msgstr "Selecteer de `Volgende' pagina"
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+#, fuzzy
+msgid "Select the Prev node"
+msgstr "Selecteer de `Vorige' pagina"
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+#, fuzzy
+msgid "Select the Up node"
+msgstr "Selecteer de `Omhoog' pagina"
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr "Selecteer de laatste pagina in dit bestand"
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr "Dit venster heeft geen extra pagina's"
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr "Selecteer de eerste pagina in dit bestand"
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr "Selecteer de laatste keuze in het menu van deze pagina"
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr "Selecteer deze menukeuze"
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr "Er zijn geen %d keuzes in dit menu."
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr "Menukeuze (%s): "
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr "Menukeuze: "
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr "Volg verwijzing (%s): "
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr "Volg verwijzing: "
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr "Lees een menukeuze en selecteer zijn pagina"
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr "Lees een voetnoot of verwijzing en selecteer zijn pagina"
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr "Ga naar het begin van het menu van deze pagina"
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr "Ga naar zo veel mogelijk menukeuzes tegelijk"
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr "Lees de naam van een pagina en selecteer die"
+
+#: info/session.c:2312 info/session.c:2316
+#, fuzzy
+msgid "Goto node: "
+msgstr "Ga naar Pagina: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "Geen pagina's meer."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "Er is geen menukeuze \"%s\" op deze pagina."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr "Kon de pagina, waarnaar verwezen werd door \"%s\", niet vinden."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr ""
+
+#: info/session.c:2505
+#, fuzzy
+msgid "Follow menus: "
+msgstr "Volg verwijzing: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr ""
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr ""
+
+# manpage?
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr "Lees een manpagina verwijzing en selecteer die"
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr "Ga naar manpagina: "
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr "Selecteer de `Top' pagina in dit bestand"
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr "Selecteer de pagina `(dir)'"
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr "Verwijder pagina (%s): "
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr "Kan pagina `%s' niet verwijderen"
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr "Kan de laatste pagina niet verwijderen"
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr "Selecteer de laatst geselecteerde pagina"
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr "Sluit deze pagina"
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr "Lees de naam van een bestand en selecteer die"
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr "Vind bestand: "
+
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
+msgstr "Kan \"%s\" niet vinden."
+
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
+msgstr "Kan uitvoerbestand \"%s\" niet vinden."
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr "Klaar."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
+msgstr "Bezig met schrijven van pagina \"%s\"..."
+
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr "Sluis de inhoud van deze pagina door INFO_PRINT_COMMAND"
+
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr "Kan pijp naar \"%s\" niet openen."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
+msgstr "Bezig met afdrukken van pagina \"%s\"..."
+
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
+msgstr "Bezig met zoeken naar sub-bestand \"%s\"..."
+
+#: info/session.c:3516
+#, fuzzy
+msgid "Read a string and search for it case-sensitively"
+msgstr "Lees een tekenreeks en zoek daar naar"
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr "Lees een tekenreeks en zoek daar naar"
+
+#: info/session.c:3531
+#, fuzzy
+msgid "Read a string and search backward for it"
+msgstr "Lees een tekenreeks en zoek daar naar"
+
+#: info/session.c:3573
+#, fuzzy, c-format
+msgid "%s%sfor string [%s]: "
+msgstr "%s voor tekenreeks [%s]: "
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr "Achteruit zoeken"
+
+#: info/session.c:3574
+msgid "Search"
+msgstr "Zoek"
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr ""
+
+#: info/session.c:3575
+msgid " "
+msgstr ""
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr "Niet gevonden."
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr ""
+
+#: info/session.c:3636 info/session.c:3646
+#, fuzzy
+msgid "No previous search string"
+msgstr "Geen eerdere index zoek string."
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr ""
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr "Zoek interactief naar een string als je het intypt"
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr "Achteruit I-zoeken: "
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr "I-zoeken: "
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr "Niet gelukt: "
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr "Ga naar de vorige verwijzing"
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr "Ga naar de volgende verwijzing"
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr "Selecteer verwijzing of menukeuze van deze regel"
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr "Annuleer huidige operatie"
+
+# Zie Cancel current action
+#: info/session.c:4292
+msgid "Quit"
+msgstr "Afgebroken"
+
+#: info/session.c:4301
+#, fuzzy
+msgid "Move the cursor to a specific line of the window"
+msgstr "Beweeg de cursor naar een bepaalde regel van het venster"
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr "Herschrijf het venster"
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr "Stop met Info"
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr "Onbekend commando (%s)."
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr "\"\" is ongeldig"
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr "\"%s\" is ongeldig"
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr "Voeg dit cijfer toe aan het huidige numerieke argument"
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr "Begin een nieuw numeriek argument of vermenigvuldig het huidige met 4"
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr "Intern gebruikt door \\[universeel-argument]"
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr "readline: Geen virtueel geheugen meer!\n"
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr "Indien \"Aan\", verschijnen en verdwijnen voetnoten automatisch"
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr ""
+"Indien \"Aan\", verandert het aanmaken of verwijderen van een venster de "
+"grootte van andere vensters"
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr ""
+"Indien \"Aan\", laat het scherm flikkeren in plaats van het laten horen van "
+"een piep"
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr "Indien \"Aan\", zorgen fouten voor een belsignaal"
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr ""
+"Indien \"Aan\", haalt Info rommel weg voor bestanden die gedecomprimeerd "
+"moesten worden"
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr ""
+"Indien \"Aan\", wordt het overeenkomende deel van de zoek-tekenreeks "
+"opgelicht"
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr ""
+"Stelt in wat er gebeurt als er aan het eind van een node verschoven wordt"
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr "Het aantal regels dat verschuift als de cursor uit het venster gaat"
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr "Indien \"Aan\", accepteert Info ISO Latin tekens en laat ze zien"
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr "Leg het gebruik van een variabele uit"
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr "Omschrijf variabele: "
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr "Zet de waarde van een Info variabele"
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr "Stel variabele in: "
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr "Geef een waarde voor %s (%d): "
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr "Geef een waarde voor %s (%s): "
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr "--*** Tags zijn verouderd ***"
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr "-----Info: (), regels ----, "
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr "-%s---Info: %s, %d regels --%s--"
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr "-%s%s-Info: (%s)%s, %d regels --%s--"
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr "Sub-bestand: %s"
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: optie `%s' is dubbelzinnig\n"
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: optie `--%s' staat geen argumenten toe\n"
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: optie `%c%s' staat geen argumenten toe\n"
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: optie `%s' vereist een argument\n"
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: onbekende optie `--%s'\n"
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: onbekende optie `%c%s'\n"
+
+# Dit is de POSIX versie van de volgende melding
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+# Dezelfde tekst als hiervoor
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: optie vereist een argument -- %c\n"
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: optie `-W %s' is dubbelzinnig\n"
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: optie `-W %s' staat geen argumenten toe\n"
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "Januari"
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr "Februari"
+
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr "Maart"
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr "April"
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr "Mei"
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr "Juni"
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr "Juli"
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr "Augustus"
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr "September"
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr "Oktober"
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr "November"
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr "December"
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr ""
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr ""
+
+#: makeinfo/cmds.c:754
+#, c-format
+msgid "%c%s is obsolete"
+msgstr "%c%s is verouderd"
+
+#: makeinfo/cmds.c:814
+#, fuzzy, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "%csp vereist een postief numeriek argument"
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr "Verkeerd argument voor %c%s"
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr "asis"
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr "geen"
+
+#: makeinfo/defun.c:83
+#, fuzzy
+msgid "Missing `}' in @def arg"
+msgstr "Ontbrekende `}' in het argument voor %cdef"
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr "Functie"
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr "Makro"
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr "Speciaal Formulier"
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr "Variabele"
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr "Gebruikersoptie"
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr "Instantievariabele"
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr "Methode"
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr ""
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+#, fuzzy
+msgid "on"
+msgstr "geen"
+
+# Is die x een foutje?
+#: makeinfo/defun.c:656
+#, fuzzy, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr "Moet in een `%s' `insertion' zitten om `%s'x te gebruiken"
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr "%s: getwd: %s, %s\n"
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr "`%c%s' heeft een argument `{...}' nodig, niet slechts `%s'"
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr "Geen afsluitende accolade voor voetnoot `%s'"
+
+# mooi vertaald he?
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr "Voetnoot gedefinieerd zonder referentie pagina"
+
+#: makeinfo/footnote.c:278
+#, fuzzy
+msgid "Footnotes"
+msgstr "-Voetnoten"
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr ""
+
+#: makeinfo/index.c:212
+#, c-format
+msgid "Unknown index `%s'"
+msgstr "Onbekende index `%s'"
+
+#: makeinfo/index.c:382
+#, c-format
+msgid "Index `%s' already exists"
+msgstr "Index `%s' bestaat al"
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr "Onbekende index `%s' en/of `%s' in @synindex"
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr "Onbekende index `%s' in @printindex"
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr ""
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr ""
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr "Verkeerd-Type in insertion_type_pname"
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr "Enumeratiestapel overloop"
+
+# FIXME: hoe vertaal je `lettering'? tegenover enumerating
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr "lettering overloop, start opnieuw bij %c"
+
+# FIXME: formatter?
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s vereist een argument: de formatteerder voor %citem"
+
+#: makeinfo/insertion.c:623
+#, fuzzy, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr "`%cend' verwachtte `%s', maar heb `%s' gezien"
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr "Geen overeenkomende `%cend %s'"
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr "%s vereist een letter of cijfer"
+
+#: makeinfo/insertion.c:1046
+#, fuzzy
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr "%cmenu gezien voor de eerste pagina"
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr ""
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+#, fuzzy
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr "%cmenu gezien voor de eerste pagina"
+
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
+msgstr "Niet overeenkomende `%c%s'"
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr "`%c%s' verwacht er iets na"
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr "Verkeerd argument voor `%s', `%s', gebruik `%s'"
+
+#: makeinfo/insertion.c:1175
+#, fuzzy, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr "%citemx is zinloos in een `%s' blok"
+
+#: makeinfo/insertion.c:1184
+#, fuzzy, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr "%citemx is zinloos in een `%s' blok"
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr "%c%s buiten een invoeg-blok gevonden"
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr ""
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr "%c%s verwacht `i' of `j' als argument, niet `%c'"
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr "%c%s verwacht één enkele `i' of `j' als argument"
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr "makro `%s' al eerder gedefinieerd"
+
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "hier is de vorige definitie van `%s'"
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr ""
+
+#: makeinfo/macro.c:403
+#, fuzzy, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr "Makro `%s' aangeroepen met te veel argumenten"
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr "%cend makro niet gevonden"
+
+#: makeinfo/macro.c:634
+#, fuzzy
+msgid "@quote-arg only useful for single-argument macros"
+msgstr ""
+"%cquote-arg is allen nuttig indien de makro slechts een argument verwacht"
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr ""
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: waarschuwing: "
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "Te veel fouten! Ik heb het maar opgegeven.\n"
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "Verkeerd geplaatste %c"
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Probeer `%s --help' voor meer informatie.\n"
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+# tot hier (half af)
+#: makeinfo/makeinfo.c:391
+#, fuzzy, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+"Aanroep: %s [OPTIE]... TEXINFO-BESTAND...\n"
+"\n"
+"Vertaal Texinfo brondocumentatie naar een formaat dat geschikt is om "
+"gelezen\n"
+"te worden met GNU Info.\n"
+"\n"
+"Opties:\n"
+"-D VAR definieer een variabele, zoals met @set.\n"
+"-E MACRO-OFILE behandel alleen makro's, schrijf texinfo broncode.\n"
+"-I MAP voeg MAP toe achter het @include mappenzoekpad.\n"
+"-P MAP voeg MAP toe voor het @include mappenzoekpad.\n"
+"-U VAR ondefinieer een variabele, zoals met @clear.\n"
+"--error-limit NUM beëindig na een NUM aantal fouten (standaard %d).\n"
+"--fill-column POS breek regels af op positie POS (standaard %d).\n"
+"--footnote-style STIJL schrijf voetnoten volgens STIJL:\n"
+" `separate' om voetnoten in een eigen pagina te "
+"plaatsen,\n"
+" `end' om voetnoten aan het einde van de pagina te "
+"plaatsen\n"
+" waarin ze gedefinieerd zijn (standaard).\n"
+"--force bewaar de uitvoer ook bij fouten.\n"
+"--help laat deze hulp zien en beëindig.\n"
+"--no-validate onderdruk validatie van referenties.\n"
+"--no-warn onderdruk waarschuwingen (maar fouten niet).\n"
+"--no-split onderdruk het splitsen van grote bestanden.\n"
+"--no-headers onderdruk paginascheidingen en Pagina: Foo koppen.\n"
+"--output BEST, -o BEST schrijf naar BEST, en negeer een @setfilename.\n"
+"--paragraph-indent VAL spring alinea's in met VAL spaties (standaard %d).\n"
+" spring niet in indien VAL `none' is; behoud "
+"bestaande\n"
+" inspringing indien VAL `asis' is.\n"
+"--reference-limit NUM klaag over hoogstens NUM verwijzingen (standaard "
+"%d).\n"
+"--verbose meld wat gedaan wordt.\n"
+"--version geef versie-informatie en beëindig.\n"
+"\n"
+"Meld fouten in het programma aan bug-texinfo@gnu.org;\n"
+"meld onjuistheden in de vertaling aan nl@li.org.\n"
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: %s argument moet numeriek zijn, niet `%s'.\n"
+
+# Vanaf hier
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "Kon uitvoer `%s' voor makro-uitbreiding niet openen"
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "Je kunt niet meer dan een uitvoer voor makro-uitbreiding geven"
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: argument voor --paragraph-indent moet numeriek, `none' of `asis' zijn, "
+"niet `%s'.\n"
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+"%s: argument voor --footnote-style moet `separate' of `end' zijn, niet "
+"`%s'.\n"
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr "%s: ontbrekend bestandsargument\n"
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr "Verwachtte `%s'"
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr "Geen `%s' gevonden in `%s'"
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+"%s: Makro uitbreiding naar de standaard uitvoer overgeslagen, want de "
+"uitvoer\n"
+"van Info gaat daar al heen.\n"
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "Bezig met het maken van een %s-bestand `%s' van `%s'.\n"
+
+#: makeinfo/makeinfo.c:1358
+#, fuzzy, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr "Dit is Info bestand %s, gemaakt door Makeinfo versie %d.%d"
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: makro uitvoer bestand `%s' weggehaald wegens fouten; gebruik --force om "
+"te bewaren.\n"
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: uitvoer bestand `%s' weggehaald wegens fouten; gebruik --force om te "
+"bewaren.\n"
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr "Onbekend commando `%s'"
+
+#: makeinfo/makeinfo.c:1657
+#, fuzzy, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr "commandoregel-argument `%s' te veel"
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr "%c%s verwachtte `{...}'"
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "Niet-overeenkomende }"
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "GEEN_NAAM!"
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr "%c%s ontbrekende afsluitende accolade"
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr ""
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr "`.' of `,' moeten op een verwijzing volgen, niet %c"
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr ""
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr "@image bestand `%s' onleesbaar: %s"
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr "ontbrekend bestandsnaam argument voor @image"
+
+#: makeinfo/makeinfo.c:3259
+#, fuzzy, c-format
+msgid "{No value for `%s'}"
+msgstr "{Geen waarde voor \"%s\"}"
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr "%c%s vereist een naam"
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr "Kwam bestandseinde tegen voor een overeenkomende @end %s"
+
+#: makeinfo/multi.c:208
+#, fuzzy
+msgid "Missing } in @multitable template"
+msgstr "Ontbrekende `}' in het argument voor %cdef"
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "onbeheerde tekst `%s' na @multitable genegeerd"
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr "Te veel kolommen in `multitable' item (maximaal %d)"
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr "Kan kolom #%d niet selecteren in `multitabel'"
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "@tab buiten een `multitable' genegeerd"
+
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "** Multikolom uitvoer van laatste regel:\n"
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* kolom #%d: uitvoer = %s\n"
+
+#: makeinfo/node.c:250
+#, fuzzy, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr "makro `%s' al eerder gedefinieerd"
+
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr "Pagina %s wordt geformatteerd...\n"
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr "Pagina `%s' vereist een sectiecommando (bijv. %c%s)"
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr ""
+
+#: makeinfo/node.c:774
+#, fuzzy
+msgid "Node:"
+msgstr "Volgende"
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+#, fuzzy
+msgid "Next:"
+msgstr "Volgende"
+
+#: makeinfo/node.c:793
+#, fuzzy
+msgid "Previous:"
+msgstr "Vorige"
+
+#: makeinfo/node.c:803
+#, fuzzy
+msgid "Up:"
+msgstr "Omhoog"
+
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr "%s verwijst naar niet-bestaande pagina `%s'"
+
+#: makeinfo/node.c:1029
+#, fuzzy
+msgid "Menu"
+msgstr "* Menu:\n"
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr ""
+
+# Deze zes meldingen:
+# next, prev en up niet vertalen, dit is wat er in de broncode staat.
+# Het is duidelijker indien onvertaald.
+#: makeinfo/node.c:1115
+#, fuzzy, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr "Het `next'-veld van pagina `%s' wijst niet terug op"
+
+#: makeinfo/node.c:1119
+#, fuzzy, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr "Deze node (`%s') is degene met het foute `next'-veld"
+
+#: makeinfo/node.c:1133
+#, fuzzy
+msgid "Prev"
+msgstr "Vorige"
+
+#: makeinfo/node.c:1176
+#, fuzzy, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr "Het `prev'-veld van node (`%s') wijst niet terug op"
+
+#: makeinfo/node.c:1180
+#, fuzzy, c-format
+msgid "This node (%s) has the bad Next"
+msgstr "Deze node (`%s') is degene met het foute `next'-veld"
+
+#: makeinfo/node.c:1194
+#, fuzzy, c-format
+msgid "`%s' has no Up field"
+msgstr "Node `%s' heeft geen `up'-veld"
+
+#: makeinfo/node.c:1197
+#, fuzzy
+msgid "Up"
+msgstr "Omhoog"
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr ""
+
+# Eigenlijk zouden hier de %s en de %d omgedraaid moeten worden:
+# `Er wordt %d keer naar %s verwezen'
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr "er wordt naar pagina `%s' %d keer verwezen"
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr "naar pagina `%s' wordt niet verwezen"
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr ""
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr ""
+
+#: makeinfo/sectioning.c:468
+#, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "%c%s is verouderd; gebruik in plaats daarvan %c%s"
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr "Pagina met %ctop als sectie bestaat al"
+
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr "Hier is de %ctop pagina"
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr "%ctop wordt voor %cnode gebruikt, neem standaard %s aan"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr ""
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr ""
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr ""
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: waarschuwing: "
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "virtuele geheugen vol"
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr " voor %s"
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr "\tProbeer `%s --help' voor een volledige lijst van opties.\n"
+
+#: util/install-info.c:389
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"%s [OPTIE]... [INFO-BESTAND [INHOUD-BESTAND]]\n"
+"\n"
+"Installeer INFO-BESTAND in het Info inhoudbestand INHOUD-BESTAND.\n"
+"\n"
+"Opties:\n"
+"--delete Verwijder bestaande ingangen in INFO-BESTAND;\n"
+" voeg geen nieuwe ingangen toe.\n"
+"--dir-file=NAAM Geef bestandsnaam van het Info inhoudbestand.\n"
+" Dit is equivalent aan het argument INDEX-BESTAND.\n"
+"--entry=TEKST Voeg TEKST in als een Info inhoudsingang.\n"
+" TEKST moet het uiterlijk hebben van een Info menukeuze\n"
+" regel met nul of meer extra regels beginnend met een\n"
+" leeg teken. Als je meer dan een ingang geeft, worden ze\n"
+" allemaal toegevoegd. Als je geen ingangen geeft, worden\n"
+" ze uit de informatie uit het Info bestand zelf "
+"opgemaakt.\n"
+"--help Geef deze hulp en beëindig.\n"
+"--info-file=BEST Geef een Info bestand om in de inhoud in op te nemen.\n"
+" Dit is gelijkwaardig aan het argument INFO-BESTAND.\n"
+"--info-dir=MAP Zelfde als --dir-file=MAP/dir.\n"
+"--item=TEKST Zelfde als --entry TEKST.\n"
+" Een Info inhoudsingang is eigenlijk een menukeuze.\n"
+"--quiet Onderdruk waarschuwingen.\n"
+"--remove Zelfde als --delete.\n"
+"--section=SEC Zet deze ingangen in sectie SEC van de index.\n"
+" Als je meer dan een sectie geeft, worden alle ingangen\n"
+" aan alle secties toegevoegd.\n"
+" Als je geen ingangen geeft, worden ze uit de informatie\n"
+" uit het Info bestand zelf opgemaakt.\n"
+"--version Geef versie-informatie en beëindig.\n"
+"\n"
+"Meld fouten in het programma aan bug-texinfo@gno.org;\n"
+"meld onjuistheden in de vertaling aan nl@li.org.\n"
+
+#: util/install-info.c:442
+#, fuzzy, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+"Dit is het bestand .../info/dir, dat de bovenste pagina van de Info\n"
+"structuur bevat, genaamd (dir)Top. De eerste keer dat je Info start,\n"
+"begin je deze pagina te lezen.\n"
+"\n"
+"Bestand: dir Pagina: Top Dit is de bovenste pagina van de INFO "
+"structuur\n"
+"\n"
+" Deze (Inhoud) pagina geeft een menu van hoofdonderwerpen.\n"
+" \"q\" beëindigt, \"?\" geeft een lijst met allen Info commando's, \"d\"\n"
+" brengt je hier terug, \"h\" geeft een inleiding voor de eerste keer,\n"
+" \"mEmacs<Return>\" gaat naar de Emacs pagina's, etc.\n"
+"\n"
+" Binnen Emacs kun je met muisknop 2 op een item of verwijzing klikken\n"
+" om er heen te gaan.\n"
+"\n"
+"* Menu:\n"
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr "%s: niet leesbaar (%s) en het kon ook niet aanmaken (%s)\n"
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr ""
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY zonder overeenkomende END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY zonder overeenkomende START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr "%s: Geef de Info inhoud slechts een keer.\n"
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr "%s: Geef het Info bestand slechts een keer.\n"
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr "commandoregel-argument `%s' te veel"
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr "Geen invoerbestand gegeven; probeer --help voor meer informatie."
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr "Geen inhoudbestand gegeven; probeer --help voor meer informatie."
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr "geen info inhoudsingang in `%s'"
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr "menukeuze `%s' bestaat al, voor bestand `%s'"
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr "geen ingangen voor `%s' gevonden; niets verwijderd"
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "geef deze hulp en beëindig"
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr "behoud tijdelijke bestanden na verwerking"
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr "behoud de tijdelijke bestanden na verwerking niet (standaard)"
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr "stuur uitvoor naar BESTAND"
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr "geef versie informatie en beëindig"
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Aanroep: %s [OPTIE]... BESTAND...\n"
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr "Maak een gesorteerde index voor elk TeX uitvoer BESTAND.\n"
+
+#: util/texindex.c:267
+#, fuzzy, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr ""
+"Normaal gesproken is BESTAND... `foo.??' voor een dokument `foo.texi'.\n"
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opties:\n"
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr "%s: geen texinfo inhoudbestand"
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr "fout bij het heropenen van %s"
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr ""
+
+# FIXME: secondary
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr "ingang %s volgt op een ingang met een alternatieve naam"
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr "%s; voor bestand `%s'.\n"
+
+#~ msgid ""
+#~ "---------- Footnotes ----------\n"
+#~ "\n"
+#~ msgstr ""
+#~ "---------- Voetnoten ----------\n"
+#~ "\n"
+
+# tot hier (half af)
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TEXINFO-FILE...\n"
+#~ "\n"
+#~ "Translate Texinfo source documentation to various other formats:\n"
+#~ "Info files suitable for reading online with Emacs or standalone GNU Info\n"
+#~ "(by default); plain text (with --no-headers); or HTML (with --html).\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -D VAR define a variable, as with @set.\n"
+#~ " -I DIR append DIR to the @include search path.\n"
+#~ " -P DIR prepend DIR to the @include search path.\n"
+#~ " -U VAR undefine a variable, as with @clear.\n"
+#~ " --commands-in-node-names allow @ commands in node names.\n"
+#~ " --error-limit=NUM quit after NUM errors (default %d).\n"
+#~ " --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+#~ " --footnote-style=STYLE output footnotes according to STYLE:\n"
+#~ " `separate' to place footnotes in their own "
+#~ "node,\n"
+#~ " `end' to place the footnotes at the end of the\n"
+#~ " node in which they are defined (the default).\n"
+#~ " --force preserve output even if errors.\n"
+#~ " --help display this help and exit.\n"
+#~ " --html output HTML rather than Info format;\n"
+#~ " implies --no-split.\n"
+#~ msgstr ""
+#~ "Aanroep: %s [OPTIE]... TEXINFO-BESTAND...\n"
+#~ "\n"
+#~ "Vertaal Texinfo brondocumentatie naar een formaat dat geschikt is om "
+#~ "gelezen\n"
+#~ "te worden met GNU Info.\n"
+#~ "\n"
+#~ "Opties:\n"
+#~ "-D VAR definieer een variabele, zoals met @set.\n"
+#~ "-E MACRO-OFILE behandel alleen makro's, schrijf texinfo broncode.\n"
+#~ "-I MAP voeg MAP toe achter het @include mappenzoekpad.\n"
+#~ "-P MAP voeg MAP toe voor het @include mappenzoekpad.\n"
+#~ "-U VAR ondefinieer een variabele, zoals met @clear.\n"
+#~ "--error-limit NUM beëindig na een NUM aantal fouten (standaard %d).\n"
+#~ "--fill-column POS breek regels af op positie POS (standaard %d).\n"
+#~ "--footnote-style STIJL schrijf voetnoten volgens STIJL:\n"
+#~ " `separate' om voetnoten in een eigen pagina te "
+#~ "plaatsen,\n"
+#~ " `end' om voetnoten aan het einde van de pagina te "
+#~ "plaatsen\n"
+#~ " waarin ze gedefinieerd zijn (standaard).\n"
+#~ "--force bewaar de uitvoer ook bij fouten.\n"
+#~ "--help laat deze hulp zien en beëindig.\n"
+#~ "--no-validate onderdruk validatie van referenties.\n"
+#~ "--no-warn onderdruk waarschuwingen (maar fouten niet).\n"
+#~ "--no-split onderdruk het splitsen van grote bestanden.\n"
+#~ "--no-headers onderdruk paginascheidingen en Pagina: Foo koppen.\n"
+#~ "--output BEST, -o BEST schrijf naar BEST, en negeer een @setfilename.\n"
+#~ "--paragraph-indent VAL spring alinea's in met VAL spaties (standaard %d).\n"
+#~ " spring niet in indien VAL `none' is; behoud "
+#~ "bestaande\n"
+#~ " inspringing indien VAL `asis' is.\n"
+#~ "--reference-limit NUM klaag over hoogstens NUM verwijzingen (standaard "
+#~ "%d).\n"
+#~ "--verbose meld wat gedaan wordt.\n"
+#~ "--version geef versie-informatie en beëindig.\n"
+#~ "\n"
+#~ "Meld fouten in het programma aan bug-texinfo@gnu.org;\n"
+#~ "meld onjuistheden in de vertaling aan nl@li.org.\n"
+
+#~ msgid "The `%c%s' command is meaningless within a `@%s' block"
+#~ msgstr "Het `%c%s' commando is zinloos in een `@%s' blok"
+
+#~ msgid "Virtual memory exhausted in %s ()! Needed %d bytes."
+#~ msgstr "Virtueel geheugen vol in %s ()! Had %d bytes nodig."
+
+#~ msgid "How did @%s end up in cm_special_char?\n"
+#~ msgstr "Hoe kwam @%s in cm_special_char terecht?\n"
+
+#~ msgid "multitable item not in active multitable"
+#~ msgstr "`multitable' item niet in een aktieve `multitable'"
+
+#, fuzzy
+#~ msgid "Up field for `%s' is `%s', but `%s' lacks menu item for `%s'"
+#~ msgstr ""
+#~ "`%s' heeft `%s' als `up'-veld, maar `%s' heeft geen menukeuze voor `%s'"
+
+#~ msgid " times"
+#~ msgstr " keer"
+
+#~ msgid "%d times"
+#~ msgstr "%d keer"
+
+#~ msgid "Top"
+#~ msgstr "Top"
+
+#~ msgid "Writing node \"(%s)%s\"..."
+#~ msgstr "Bezig met schrijven van pagina \"(%s)%s\"..."
+
+#~ msgid "Printing node \"(%s)%s\"..."
+#~ msgstr "Bezig met afdrukken van pagina \"(%s)%s\"..."
+
+#~ msgid " from the input file %s.\n"
+#~ msgstr " uit het invoerbestand %s.\n"
+
+#~ msgid "%c%s expects a single character as an argument"
+#~ msgstr "%c%s verwacht één enkel teken als argument"
+
+#~ msgid "Node `%s' multiply defined (line %d is first definition at)"
+#~ msgstr ""
+#~ "Pagina `%s' meerdere keren gedefinieerd (de eerste definitie is op regel %d)"
+
+#~ msgid "This node (`%s') is the one with the bad `Prev'"
+#~ msgstr "Deze node (`%s') is degene met het foute `prev'-veld"
+
+#~ msgid "creating `Top' node"
+#~ msgstr "`Top' pagina wordt aangemaakt"
+
+#~ msgid ""
+#~ "* Menu:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "* Menu:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Email bug reports to bug-texinfo@gnu.org."
+#~ msgstr ""
+#~ "\n"
+#~ "Meld fouten in het programma aan bug-texinfo@gnu.org;\n"
+#~ "meld onjuistheden in de vertaling aan nl@li.org."
diff --git a/gnu/usr.bin/texinfo/po/no.gmo b/gnu/usr.bin/texinfo/po/no.gmo
new file mode 100644
index 00000000000..23d75930650
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/no.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/no.po b/gnu/usr.bin/texinfo/po/no.po
new file mode 100644
index 00000000000..71ac2baf0e0
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/no.po
@@ -0,0 +1,2527 @@
+# Norwegian translation of messages for Texinfo 3.12t (bokmål dialect).
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Trond Endrestøl <endrestol@hotmail.com>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Texinfo 3.12t\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-09-20 23:27+02:00\n"
+"Last-Translator: Trond Endrestøl <endrestol@hotmail.com>\n"
+"Language-Team: Norwegian-bokmål <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr "Flytte forover et tegn"
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr "Flytte bakover et tegn"
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr "Flytte til starten av denne linjen"
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr "Flytte til slutten av denne linjen"
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr "Flytte forover et ord"
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr "Flytte tilbake et ord"
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr "Slette tegnet under markøren"
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr "Slette tegnet bak markøren"
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr "Avbryte eller avslutte operasjon"
+
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr "Godta (eller tvinge fullføring av) denne linjen"
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr "Sette inn neste tegn ordrett"
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr "Sette inn dette tegnet"
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr "Sette inn en tabulator"
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr "Transponere tegnet ved punktet"
+
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr "Rykke tilbake innholdet fra forrige felling"
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr "Fellingsringen er tom"
+
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr "Rykke tilbake en tidligere felling"
+
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr "Slette til slutten av linjen"
+
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr "Slette til begynnelsen av linjen"
+
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr "Slette ordet etter markøren"
+
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr "Slette ordet før markøren"
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr "Ikke fullstendig"
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr "Liste mulige fullføringer"
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr "Ingen fullføringer"
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr "Eneste fullføring"
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr "En fullføring:\n"
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr "%d fullføringer:\n"
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr "Sett inn fullføring"
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr "Bygger fullføringer..."
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr "Rulle fullføringsvinduet"
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr "Fotnoter kunne ikke vises"
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr "Vise fotnotene assosiert med denne noden i et annet vindu"
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr "Lete opp en streng i indeksen til denne filen"
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr "Finner indeksinnslag..."
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr "Ingen indekser funnet."
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr "Indeksinnslag: "
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+"Gå til det neste passende indeksinnslaget fra forrige "
+"'\\[index-search]'-kommando"
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr "Ingen tidligere indekssøkestrenger."
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr "Ingen indeksinnslag."
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr "Ingen %sindeksinnslag inneholdende «%s»."
+
+#: info/indices.c:383
+msgid "more "
+msgstr "mer "
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr "KAN IKKE SE DETTE"
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr "Fant «%s» i %s. («\\[next-index-match]» prøver å finne den neste.)"
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr "Sjekker indekser i «%s»..."
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+"Kravle gjennom alle kjente infofilers indekser etter en streng og bygge opp "
+"en meny"
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr "Indeksapropos: "
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+"\n"
+"* Menu: Noder med indekser som inneholder «%s»:\n"
+
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr "Prøv --help for mer informasjon.\n"
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"Det finnes INGEN garanti. Du kan redistribuere denne programvaren\n"
+"etter betingelsene i GNU General Public License. For mer informasjon\n"
+"om dette, se filen COPYING.\n"
+
+#: info/info.c:461
+#, c-format
+msgid "no index entries found for `%s'\n"
+msgstr "ingen innslag funnet for «%s»\n"
+
+#: info/info.c:530
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Bruksmåte: %s [VALG]... [MENYPUNKT...]\n"
+"\n"
+"Lese dokumentasjon i Infoformat.\n"
+"\n"
+"Valg:\n"
+" --apropos=EMNE søke etter EMNE i alle indeksene til alle "
+"Infofilene.\n"
+" --directory=KAT legge til KAT til INFOPATH.\n"
+" --dribble=FILNAVN huske brukerens tastetrykk i FILNAVN.\n"
+" --file=FILNAVN angi Infofilen som skal besøkes.\n"
+" --help vise denne hjelpen og avslutte.\n"
+" --index-search=STRENG gå til noden pekt på av indeksoppslaget STRENG.\n"
+" --node=NODENAVN angi noder i første besøkte Infofil.\n"
+" --output=FILNAVN skrive ut utvalgte noder til FILNAVN.\n"
+" --restore=FILNAVN lese innledende tastetrykk fra FILNAVN.\n"
+" --show-options, --usage gå til kommandolinje-valg-noden.\n"
+" --subnodes rekursivt skrive ut menypunkter.\n"
+"%s --vi-keys bruke vi-aktige og less-aktige tastebindinger.\n"
+" --version vise programversjon og avslutte.\n"
+"\n"
+"Det første ikke-valg-argumentet, dersom tilstede, er menypunktet som du\n"
+"starter fra; det blir søkt etter i alle «dir»-filer langs med INFOPATH.\n"
+"Dersom det ikke er tilstede, vil info flette sammen alle «dir»-filene\n"
+"og vise resultatet. Øvrige gjenværende argumenter blir behandlet som\n"
+"navnene til menypunktene relativ til den første besøkte noden.\n"
+"\n"
+"Eksempler:\n"
+" info vise toppnivå dirmeny\n"
+" info emacs starte ved emacs-noden fra toppnivå dir\n"
+" info emacs buffers starte ved buffers-noden i emacs-manualen\n"
+" info --show-options emacs starte ved emacs kommandolinjevalg\n"
+" info -f ./foo.info vise filen ./foo.info, ikke søke gjennom dir\n"
+"\n"
+"Send bugrapport til bug-texinfo@gnu.org,\n"
+"generelle spørsmål og diskusjoner til help-texinfo@gnu.org.\n"
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "Kan ikke slette noden «%s»"
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "Kan ikke slette noden «%s»"
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "Kan ikke slette et permanent vindu"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "Kan ikke slette et permanent vindu"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "Ingen meny i noden «%s»."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "Ingen kryssreferanser i denne noden."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "Ingen kryssreferanser i denne noden."
+
+#: info/info.c:612
+#, c-format
+msgid "No `%s' pointer for this node."
+msgstr "Ingen «%s»-peker for denne noden."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "Flytte til starten av denne noden"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "Flytte til starten av denne noden"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+# The next translation should match the length of this one
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr "Grunnleggende kommandoer i infovinduer\n"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr "**************************************\n"
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr " %-10s Avslutte denne hjelpen.\n"
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr " %-10s Avslutte Info fullstendig.\n"
+
+#: info/infodoc.c:50
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr " %-10s Starte Infoopplæring.\n"
+
+# The next translation should match the length of this one
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr "Flytte innen en node:\n"
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr "---------------------\n"
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr " %-10s Rulle forover en side.\n"
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr " %-10s Rulle bakover en side.\n"
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr " %-10s Gå til begynnelsen av denne noden.\n"
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr " %-10s Gå til slutten av denne noden.\n"
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr " %-10s Rulle forover 1 linje.\n"
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr " %-10s Rulle bakover 1 linje.\n"
+
+# The next translation should match the length of this one
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr "Velger andre noder:\n"
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr "-------------------\n"
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr " %-10s Flytte til «neste»-noden etter denne noden.\n"
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr " %-10s Flytte til «forrige»-noden før denne noden.\n"
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr " %-10s Flytte «up» fra denne noden.\n"
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr " %-10s Velge menypunkt spesifisert ved navn.\n"
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+" Valg av menypunkt fører til at en annen node blir valgt.\n"
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr " %-10s Følge en kryssreferanse. Leser navnet til referansen.\n"
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr " %-10s Flytte til den siste noden sett i dette vinduet.\n"
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr " %-10s Flytte til neste hypertekstlenke innen denne noden.\n"
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr " %-10s Følge hypertekstlenken under markøren.\n"
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr " %-10s Flytte til «katalog»-noden. Det samme som «g (DIR)».\n"
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr " %-10s Flytte til «Top»-noden. Det samme som «g Top».\n"
+
+# The next translation should match the length of this one
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr "Andre kommandoer:\n"
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr "-----------------\n"
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr " %-10s Velge første ... niende punkt i nodens meny.\n"
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr " %-10s Velge det siste punktet i nodens meny.\n"
+
+# This translation is connected to the next one
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr " %-10s Søke etter en spesifikk streng i indeksinnslagene i denne\n"
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+" infofil, og velge noden referert av det første oppslaget "
+"funnet.\n"
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr " %-10s Flytte til noden spesifisert av navn.\n"
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr ""
+" Du kan like godt inkludere et filnavn, som i "
+"(FILNAVN)NODENAVN.\n"
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr " %-10s Søke gjennom denne Infofilen for en spesifikk streng,\n"
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+" og velge den noden som i det neste tilfellet blir funnet.\n"
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr " %-10s Søke gjennom denne Infofilen for en spesifikk streng,\n"
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr "Gjeldende søkesti er:\n"
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+"Kommandoer tilgjengelig i Infovinduer:\n"
+"\n"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+"Kommandoer tilgjengelig i ekkoområdet:\n"
+"\n"
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+"Følgende kommandoer kan bare bli påkallet via M-x:\n"
+"\n"
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr "--- Bruk «\\[history-node]» eller «\\[kill-node]» for å avslutte ---\n"
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr "Vise hjelpemelding"
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr "Vise infonoden «(info)Help»"
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr "Skrive ut dokumentasjonen for KEY"
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr "Beskriv tast: %s"
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr "ESC %s er udefinert."
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr "%s er udefinert."
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr "%s er definert som %s."
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr "Vise hva som må tastes for å utføre en gitt kommando"
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr "Hvor er kommandoen: "
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr "«%s» er ikke på noen taster"
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr "%s kan bare bli påkallet via %s."
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr "%s kan bli påkallet via %s."
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr "Det finnes ingen funksjon ved navn «%s»"
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr "Lese inn navnet på en infokommando og beskrive den"
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr "Beskriv kommandoen: "
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr "Lese et kommandonavn i ekkoområdet og utføre den"
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr "Kan ikke utføre en «echo-area»-kommando her."
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr "Sette høyden på det viste vinduet"
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr "Sette skjermhøyde til (%d): "
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+" Kildefiler søkt gjennom for å lage denne filen inkluderer:\n"
+"\n"
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr "Kunne ikke manipulere filen %s.\n"
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+"\n"
+"* Menu:\n"
+" (Fil)Node Linjer Str. Inneholdene fil\n"
+" --------- ------ ---- ---------------"
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+"Her er menyen over nodene du har nylig besøkt.\n"
+"Velg en fra denne menyen, eller bruk «\\[history-node]» i et annet vindu.\n"
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr "Lag et vindu inneholdene en meny over alle de nylig besøkte nodene"
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr "Velge en node som har blitt tidligere besøkt i et synlig vindu"
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr "Velg besøkt node: "
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr "Referansen forsvant! (%s)."
+
+#: info/session.c:169
+#, fuzzy, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+"Velkommen til Info versjon %s. «\\[get-help-window]» for hjelp, "
+"«\\[menu-item]» for menypunkt."
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr "Flytte ned til neste linje"
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr "Flytte opp til den forrige linjen"
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr "Flytte til slutten av linjen"
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr "Flytte til starten av linjen"
+
+#: info/session.c:884 makeinfo/node.c:1092
+msgid "Next"
+msgstr "neste"
+
+#: info/session.c:887
+msgid "Following Next node..."
+msgstr "Følger nestenoden..."
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr "Velger første menypunkt..."
+
+#: info/session.c:915
+msgid "Selecting Next node..."
+msgstr "Velger nestenoden..."
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr "Flytter opp %d gang(er), deretter neste."
+
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr "Ingen flere noder i dette dokumentet."
+
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
+msgstr "Ingen «forrige» for denne noden."
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
+msgstr "Flytter til forrige i dette vinduet."
+
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr "Ingen «forrige» eller «opp» for denne noden i dette dokumentet."
+
+#: info/session.c:1053
+msgid "Moving Up in this window."
+msgstr "Flytter opp i dette vinduet."
+
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
+msgstr "Flytter til «forrige»s siste menypunkt."
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr "Flytte forover eller ned gjennom nodestrukturen"
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr "Flytte tilbake eller opp gjennom nodestrukturen"
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr "Rulle forover i dette vinduet"
+
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr "Rulle forover i dette vinduet og sette standard vindustørrelse"
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr "Rulle bakover i dette vinduet"
+
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr "Rulle bakover i dette vinduet og sette standard vindustørrelse"
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr "Flytte til starten av denne noden"
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr "Flytte til slutten av denne noden"
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr "Rulle ned pr. antall linjer"
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr "Rulle opp pr. antall linjer"
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr "Rulle ned en halv side"
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr "Rulle opp en halv side"
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr "Velge neste vindu"
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr "Velge forrige vindu"
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr "Dele gjeldende vindu"
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr "Slette den gjeldende vindu"
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr "Kan ikke slette et permanent vindu"
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr "Slette alle andre vinduer"
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr "Rulle det andre vinduet"
+
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr "Rulle det andre vinduet bakover"
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr "Øke (eller minke) dette vinduet"
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr "Dele den tilgjengelige skjermplassen mellom de synlige vinduene"
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr "Veksle tilstanden til linjebryting i gjeldende vindu"
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+msgid "Select the Next node"
+msgstr "Velge neste node"
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+msgid "Select the Prev node"
+msgstr "Velge forrige node"
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+msgid "Select the Up node"
+msgstr "Velge oppnoden"
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr "Velge den siste noden i denne filen"
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr "Dette vinduet har ingen andre noder"
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr "Velge første node i denne filen"
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr "Velge det siste punktet i nodens meny"
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr "Velge dette menypunktet"
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr "Det er ikke %d punkter i denne menyen."
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr "Menypunkt (%s): "
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr "Menypunkt: "
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr "Følge kryssreferanse (%s): "
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr "Følge kryssreferanse: "
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr "Lese et menyvalg og velge dens node"
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr "Lese en fotnote eller kryssreferanse og velge dens node"
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr "Flytte til starten av denne nodens meny"
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr "Besøke så mange menypunkter som mulig samtidig"
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr "Lese et nodenavn og velge det"
+
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr "Gå til node: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "Ingen meny i noden «%s»."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "Ingen menypunkt «%s» i noden «%s»."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr "Klarte ikke å finne noden referert av «%s» i «%s»."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr "Lese en liste over menyer fra dir og følge dem"
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr "Følge menyer: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr "Finne noden som beskriver bruksmåten for programmet"
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr "Finne Invocation-noden til [%s]: "
+
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr "Lese en manualside-referanse og velge den"
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr "Hent manualsiden: "
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr "Velge «Top»-noden i denne filen"
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr "Velge noden «(dir)»"
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr "Slette noden (%s): "
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr "Kan ikke slette noden «%s»"
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr "Kan ikke slette den forrige noden"
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr "Velge den sist valgte noden"
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr "Slette denne noden"
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr "Lese inn navnet på en fil og velge den"
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr "Finne fil: "
+
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
+msgstr "Kan ikke finne «%s»."
+
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
+msgstr "Kunne ikke opprette utskriftsfil «%s»."
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr "Ferdig."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
+msgstr "Skriver noden «%s»..."
+
+# I need a better substitute for the verb «to pipe».
+# «Å pipe» sounds no good to me.
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr "«Pipe» innholdet av denne noden gjennom INFO_PRINT_COMMAND"
+
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr "Kan ikke åpne «pipe» til «%s»."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
+msgstr "Skriver ut noden «%s»..."
+
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
+msgstr "Søker i delfil «%s»..."
+
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
+msgstr ""
+"Lese inn en streng og søke etter den med skille på store og små bokstaver"
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr "Lese inn en streng og søke etter den"
+
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr "Lese inn en streng og søke bakover etter den"
+
+#: info/session.c:3573
+#, c-format
+msgid "%s%sfor string [%s]: "
+msgstr "%s%setter streng [%s]: "
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr "Søke bakover"
+
+#: info/session.c:3574
+msgid "Search"
+msgstr "Søke"
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr " med skille på store og små bokstaver "
+
+#: info/session.c:3575
+msgid " "
+msgstr " "
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr "Søk mislyktes"
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr "Gjenta forrige søk i samme retning"
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr "Ingen tidligere søkestreng"
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr "Gjenta forrige søk i motsatt retning"
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr "Søke interaktivt for en streng mens du skriver"
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr "I-søk bakover: "
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr "I-søk: "
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr "Mislyktes "
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr "Flytte til forrige kryssreferanse"
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr "Flytte til neste kryssreferanse"
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr "Velge referanse eller menypunkt på denne linjen"
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr "Avbryte gjeldende operasjon"
+
+#: info/session.c:4292
+msgid "Quit"
+msgstr "Avbrutt"
+
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
+msgstr "Flytte markøren til en angitt linje i vinduet"
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr "Tegne skjermen på nytt"
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr "Avslutte Info"
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr "Ukjent kommando (%s)."
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr "«» er ugyldig"
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr "«%s» er ugyldig"
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr "Legge til dette siffret til det gjeldende numeriske argumentet"
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr "Starte (eller multiplisere med 4) den gjeldende numeriske argumentet"
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr "Brukt internt av \\[universal-argument]"
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr "readline: Tomt for virtuelt minne!\n"
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr "Når «On», oppstår og forsvinner fotnoter automatisk"
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr ""
+"Når «On», laging eller fjerning av vinduer endrer størrelsen på andre vinduer"
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr "Når «On», blink skjermen istedet for å ringe i bjellen."
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr "Når «On», feil får bjellen til å ringe"
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr "Når «On», Info søppelhenter filer som måtte dekomprimeres"
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr "Når «On», den delen av en matchende søkestreng blir uthevet"
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr ""
+"Kontrollerer hva som skjer når rulling er ønsket ved slutten av en node"
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr "Antall linjer som skal rulles når markøren flyttes utenfor vinduet"
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr "Når «On», aksepterer og viser Info ISO-Latin-tegn"
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr "Forklar bruken av en variabel"
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr "Beskriv variabel: "
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr "Sette verdien til en Infovariabel"
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr "Sett variabel: "
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr "Sette %s til verdien (%d): "
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr "Sette %s til verdien (%s): "
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr "--*** Tagger er ute av synk ***"
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr "-----Info: (), linjer ----, "
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr "-%s---Info: %s, %d linjer --%s--"
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr "-%s%s-Info: (%s)%s, %d linjer --%s--"
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr " Delfil: %s"
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: valget «%s» er flertydig\n"
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: valget «--%s» tillater ikke et argument\n"
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: valget «%c%s» tillater ikke et argument\n"
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: valget «%s» krever et argument\n"
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ukjent valg «--%s»\n"
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ukjent valg «%c%s»\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ulovlig valg -- %c\n"
+
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ugyldig valg -- %c\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: valget krever et argument -- %c\n"
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: valget «-W %s» er flertydig\n"
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: valget «-W %s» tillater ikke et argument\n"
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "januar"
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr "februar"
+
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr "mars"
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr "april"
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr "mai"
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr "juni"
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr "juli"
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr "august"
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr "september"
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr "oktober"
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr "november"
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr "desember"
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr "usannsynlig tegn %c i @var"
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr "@sc-argument med store bokstaver, dermed ingen effekt"
+
+#: makeinfo/cmds.c:754
+#, c-format
+msgid "%c%s is obsolete"
+msgstr "%c%s er utgått"
+
+#: makeinfo/cmds.c:814
+#, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "@sp krever et positivt numerisk argument, ikke `%s'"
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr "Ugyldig argument til %c%s"
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr "asis"
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr "none"
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr "Manglende «}» i @def-arg"
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr "Funksjon"
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr "Makro"
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr "Spesiell form"
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr "Variabel"
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr "Brukervalg"
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr "Forekomst"
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr "Metode"
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr "av"
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
+msgstr "på"
+
+#: makeinfo/defun.c:656
+#, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr "Må være i en «%s»-innsetting for å bruke «%sx»"
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr "%s: getwd: %s, %s\n"
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr "«%c%s» trenger et argument «{...}», ikke bare «%s»"
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr "Ingen avsluttende krøllparentes for fotnoten «%s»"
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr "Fotnote definert uten foreldrenode"
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr "Fotnoter"
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr "Uten navn"
+
+#: makeinfo/index.c:212
+#, c-format
+msgid "Unknown index `%s'"
+msgstr "Ukjent indeks «%s»"
+
+#: makeinfo/index.c:382
+#, c-format
+msgid "Index `%s' already exists"
+msgstr "Indeksen «%s» eksisterer allerede"
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr "Ukjent indeks «%s» og/eller «%s» i @synindex"
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr "Ukjent indeks «%s» i @printindex"
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr "Innslag for indeksen «%s» utenfor node"
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr "(utenfor noder)"
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr "Broken-Type i insertion_type_pname"
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr "Stakkoverflyt ved oppramsing"
+
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr "bokstavoverflyt, starter på nytt ved %c"
+
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s krever et argument: formattereren for %citem"
+
+#: makeinfo/insertion.c:623
+#, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr "`@end' forventet «%s», men så «%s»"
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr "Ingen tilsvarende «%cend %s»"
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr "%s krever en bokstav eller et siffer"
+
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr "@menu sett før første @node, oppretter «Top»-noden"
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr ""
+"kanskje burde din @top-node bli pakket inn i @ifnottex istedet for @ifinfo?"
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr "@detailmenu sett før første node, oppretter «Top»-noden"
+
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
+msgstr "Umatchet «%c%s»"
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr "«%c%s» trenger noe etter den"
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr "Ugyldig argument til «%s», «%s», bruker «%s»"
+
+#: makeinfo/insertion.c:1175
+#, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr "@%s er meningsløs innenfor en «%s»-blokk"
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr "@itemx er meningsløs innenfor en «%s»-blokk"
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr "%c%s funnet utenfor en innsettingsblokk"
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr "%s er ikke en gyldig ISO 639-språkkode"
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr "%c%s forventer «i» eller «j» som argument, ikke «%c»"
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr "%c%s forventer et enkelt tegn, «i» eller «j» som argument"
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr "makroen «%s» er tidligere definert"
+
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "her er den tidligere definisjonen av «%s»"
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr "\\ i makroekspansjon fulgt av «%s» istedet for \\ eller parameternavn"
+
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr "Makroen «%s» kalt på linje %d med for mange argumenter"
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr "%cend macro ikke funnet"
+
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr "@quote-arg bare brukbart når makroen bare tar et argument"
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr "umatchet @end %s med @%s"
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: advarsel: "
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "For mange feil! Ga opp.\n"
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "Feilplassert %c"
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prøv «%s --help» for mer informasjon.\n"
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+"Bruksmåte: %s [VALG]... TEXINFOFIL...\n"
+"\n"
+"Oversette Texinfo-kilde-dokumentasjon til forskjellige andre formater:\n"
+"Infofiler laget for lesing online med Emacs eller frittstående GNU Info\n"
+"(som standard); ren tekst (med --no-headers); eller HTML (med --html).\n"
+"\n"
+"Valg:\n"
+" --commands-in-node-names tillate @-kommandoer i nodenavn.\n"
+" -D VAR definere en variabel, som med @set.\n"
+" -E, --macro-expand FIL skrive ut makroekspandert kilde til FIL.\n"
+" --error-limit=ANT avbryte etter ANT feil (standard %d).\n"
+" --fill-column=ANT bryte Infolinjer ved ANT tegn (standard %d).\n"
+" --footnote-style=STIL skrive ut fotnoter i henhold til STIL:\n"
+" «separate» for å plassere fotnotene i egne "
+"noder,\n"
+" «end» for å plassere fotnotene ved slutten av\n"
+" noden de er definert i (standard).\n"
+" --force bevar utskrift selv med feil.\n"
+" --help vise denne hjelpen og avslutte.\n"
+" --html skrive ut HTML i stedet for Infoformat;\n"
+" -I KAT tilføye KAT til @include-søkelisten.\n"
+" --ifhtml behandle @ifhtml og @html-tekst selv når ikke\n"
+" HTML genereres.\n"
+" --ifinfo behandle @ifinfo-tekst selv når HTML genereres.\n"
+" --iftex behandle @iftex og @tex-tekst.\n"
+" innebærer --no-split.\n"
+
+#: makeinfo/makeinfo.c:391
+#, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+" --no-headers undertrykke Infonodeseparatorer og Node:-linjer "
+"og\n"
+" skrive til standard ut uten --output.\n"
+" --no-ifhtml ikke behandle @ifhtml og @html-tekst.\n"
+" --no-ifinfo ikke behandle @ifinfo-tekst.\n"
+" --no-iftex ikke behandle @iftex og @tex-tekst.\n"
+" --no-split undertrykke oppdeling av store Infofiler eller\n"
+" generering av en HTML-fil pr. node.\n"
+" --no-validate undertrykke kontroll av kryssreferanser.\n"
+" --no-warn undertrykke advarsler (men ikke feil).\n"
+" --number-sections numerere kapitler, avsnitt, etc. i utskrift.\n"
+" -o, --output=FIL skrive ut til FIL, ignorerer enhver "
+"@setfilename.\n"
+" -P DIR tilføye KAT på starten til @include-søkelisten.\n"
+" --paragraph-indent=ANT rykke inn Info-avsnitt med ANT mellomrommer "
+"(standard %d).\n"
+" dersom ANT er «none», ikke rykk inn;\n"
+" dersom ANT er «asis»', bevares eksisterende "
+"innrykk.\n"
+" --reference-limit=ANT advar på det meste om ANT referanser (standard "
+"%d).\n"
+" -U VAR udefinere en variabel, som med @clear.\n"
+" -v, --verbose forklar hva som blir gjort.\n"
+" --version vise programversjon og avslutte.\n"
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+"\n"
+"Standardene for @if...-betingelsene avhenger av outputformatet:\n"
+"dersom generere HTML, er --ifhtml på og de andre er av;\n"
+"dersom generere Info eller ren tekst, er --ifinfo på og de andre av.\n"
+"\n"
+"Eksempler:\n"
+" makeinfo foo.texi skrive Info til foos @setfilename\n"
+" makeinfo --html foo.texi skrive HTML til foos @setfilename\n"
+" makeinfo --no-headers -o - foo.texi skrive ren tekst til standard ut\n"
+" makeinfo --number-sections foo.texi skrive Info med nummererte avsnitt\n"
+" makeinfo --no-split foo.texi skrive en Infofil uansett størrelse\n"
+"\n"
+"Send bugrapporter til bug-texinfo@gnu.org,\n"
+"generelle spørsmål og diskusjoner til help-texinfo@gnu.org."
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: %s arg må være numerisk, ikke «%s».\n"
+
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "Kunne ikke åpne filen «%s» for utskrift av makroekspansjon"
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "Kan ikke angi mer enn en fil for utskrift av makroekspansjon"
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: --paragraph-indent arg må være numerisk/«none»/«asis», ikke «%s».\n"
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr "%s: --footnote-style arg må være «separate» eller «end», ikke «%s».\n"
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr "%s: mangler filargument.\n"
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr "Forventet «%s»"
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr "Ingen «%s» funnet i «%s»"
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+"%s: Hopper over makroekspansjon til stdout siden Info-output også sendes "
+"dit.\n"
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "Lager %s-filen «%s» fra «%s».\n"
+
+#: makeinfo/makeinfo.c:1358
+#, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr "Dette er %s, produsert av makeinfo versjon %s fra %s.\n"
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: Fjerner makroutskriftsfilen «%s» på grunn av feil; bruk --force for å "
+"bevare.\n"
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: Fjerner utskriftsfilen «%s» på grunn av feil; bruk --force for å "
+"bevare.\n"
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr "Ukjent kommando «%s»"
+
+#: makeinfo/makeinfo.c:1657
+#, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr "Bruk krøllparenteser for å gi en kommando som et argument til @%s"
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr "%c%s forventet «{...}»"
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "Umatchet }"
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "INTET_NAVN!"
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr "%c%s mangler avsluttende krøllparentes"
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr "se "
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr "Se "
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr "«.» eller «,» må følge kryssreferanser, ikke %c"
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr "Ingen .png eller .jpg for «%s»"
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr "@image-fil «%s» er uleselig: %s"
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr "@image mangler filnavn"
+
+#: makeinfo/makeinfo.c:3259
+#, c-format
+msgid "{No value for `%s'}"
+msgstr "{Ingen verdi for «%s»}"
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr "%c%s krever et navn"
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr "Traff slutt-på-filen før matchende @end %s"
+
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr "Manglende «}» i @multitable-mal"
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "ignorerer løs tekst «%s» etter @multitable"
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr "For mange kolonner i multitabellrad (maks %d)"
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr "Kan ikke velge kolonne #%d i multitabell"
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "ignorerer @tab utenfor multitabell"
+
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "** Multikolonne-output fra siste rad:\n"
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* kolonne #%d output = %s\n"
+
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr "Noden «%s» er tidligere definert ved linje %d"
+
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr "Skriver noden %s...\n"
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr "Noden «%s» krever en inndelingskommando (f.eks. %c%s)"
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr "Ingen nodenavn spesifisert for «%c%s»-kommandoen"
+
+#: makeinfo/node.c:774
+msgid "Node:"
+msgstr "Node:"
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
+msgstr "Neste:"
+
+#: makeinfo/node.c:793
+msgid "Previous:"
+msgstr "Forrige:"
+
+#: makeinfo/node.c:803
+msgid "Up:"
+msgstr "Opp:"
+
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr "%s referanse til ikke-eksisterende node «%s»"
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr "Meny"
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr "Kryss"
+
+#: makeinfo/node.c:1115
+#, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr "Nestefeltet til noden «%s» er ikke pekt på"
+
+#: makeinfo/node.c:1119
+#, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr "Denne noden (%s) har den dårlige forrigepekeren"
+
+#: makeinfo/node.c:1133
+msgid "Prev"
+msgstr "forrige"
+
+#: makeinfo/node.c:1176
+#, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr "Forrigefeltet til noden «%s» er ikke pekt på"
+
+#: makeinfo/node.c:1180
+#, c-format
+msgid "This node (%s) has the bad Next"
+msgstr "Denne noden (%s) har den dårlige nestepekeren"
+
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr "«%s» har ikke et oppfelt"
+
+#: makeinfo/node.c:1197
+msgid "Up"
+msgstr "opp"
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr "Noden «%s» mangler et menypunkt for «%s» selv om den er dens oppmål"
+
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr "noden «%s» har blitt referert %d ganger"
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr "ureferert node «%s»"
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr "Vedlegg %c "
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr "Intern feil (search_sectioning) «%s»!"
+
+#: makeinfo/sectioning.c:468
+#, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "%c%s er avlegs; bruk %c%s i stedet"
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr "Node med %ctop som en seksjon eksisterer allerede"
+
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr "Her er %ctop-noden"
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr "%ctop brukt før %cnode, benytter %s"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr "Innholdsfortegnelse"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr "Kort innholdsfortegnelse"
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr "%s: TOC burde være her, men ble ikke funnet"
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: advarsel: "
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "virtuelt minne uttømt"
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr " for %s"
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr "\tPrøv «%s --help» for en komplett liste over valg.\n"
+
+#: util/install-info.c:389
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"Bruksmåte: %s [VALG]... [INFOFIL [DIRFIL]]\n"
+"\n"
+"Installere eller slette dir-innslag fra INFOFIL i Info-katalogfilen\n"
+"DIRFIL.\n"
+"\n"
+"Valg:\n"
+" --delete slette eksisterende innslag for INFOFIL fra DIRFIL;\n"
+" ikke sett inn noe nye innslag.\n"
+" --dir-file=NAVN angi filnavnet til Info-katalogfilen.\n"
+" Dette er det samme som å bruke DIRFIL-argumentet.\n"
+" --entry=TEKST sette inn TEKST som en Info-kataloginnslag.\n"
+" TEKST bør ha form som et Info-menypunkt\n"
+" pluss null eller flere linjer som starter med "
+"whitespace.\n"
+" Dersom du angir mer enn et innslag, blir alle lagt "
+"til.\n"
+" Dersom du ikke angir noen innslag, blir de bestemt\n"
+" fra informasjon i selve Infofilen.\n"
+" --help vise denne hjelpen og avslutte.\n"
+" --info-file=FIL angi Infofilen som skal installeres i katalogen.\n"
+" Dette er det samme som å bruke INFOFIL-argumentet.\n"
+" --info-dir=DIR det samme som --dir-file=DIR/dir.\n"
+" --item=TEKST det samme som --entry TEKST.\n"
+" Et Info-kataloginnslag er egentlig et menypunkt.\n"
+" --quiet undertrykke advarsler.\n"
+" --remove det samme som --delete.\n"
+" --section=AVS putte denne filens innslag i avsnittet AVS i katalogen.\n"
+" Dersom du angir mer enn et avsnitt, blir alle "
+"innslagene\n"
+" lagt til i hver av avsnittene.\n"
+" Dersom du ikke angir noen avsnitt, blir de bestemt\n"
+" fra informasjon i selve Infofilen.\n"
+" --version vise programversjon og avslutte.\n"
+"\n"
+"Send bugrapporter til bug-texinfo@gnu.org,\n"
+"generelle spørsmål og diskusjoner til help-texinfo@gnu.org.\n"
+
+#: util/install-info.c:442
+#, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+"Dette er filen .../info/dir, som inneholder de øverste\n"
+"nodene i Info-hierarkiet, kalt (dir)Top.\n"
+"Første gangen du starter Info begynner du i denne noden.\n"
+"\n"
+"%s\tDette er toppen av INFO-treet\n"
+"\n"
+" Denne katalognoden gir en meny over alle hovedemner.\n"
+" Inntasting av «q» avslutter, «?» lister alle Info-kommandoene, «d» "
+"returner hit,\n"
+" «h» gir en innføring for nybegynnere,\n"
+" «mEmacs<Return>» besøker Emacs-manualen, osv.\n"
+"\n"
+" I Emacs kan du klikke med musknapp 2 på et menypunkt eller kryssreferanse\n"
+" for å velge den.\n"
+"\n"
+"* Menu:\n"
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr "%s: kunne ikke lese (%s) og kunne ikke opprette (%s)\n"
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr "%s: tom fil"
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY uten tilhørende END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY uten tilhørende START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr "%s: Spesifiser infokatalogen bare en gang.\n"
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr "%s: Spesifiser infofilen bare en gang.\n"
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr "overflødig argument på kommandolinjen «%s»"
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr "Ingen innfil angitt; prøv --help for mer informasjon."
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr "Ingen dir-fil angitt; prøv --help for mer informasjon."
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr "ingen info-dir-oppføring i «%s»"
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr "menypunktet «%s» eksisterer allerede for filen «%s»"
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr "fant ingen oppføringer for «%s»; ingenting slettet"
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "vise denne hjelpen og avslutte"
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr "bevar midlertidige filer etter behandling"
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr "ikke bevar midlertidige filer etter behandling (standard)"
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr "sende utdata til FILE"
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr "vise programversjon og avslutte"
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Bruksmåte: %s [VALG]... FIL...\n"
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr "Generere en sortert indeks for hver TeX-outputfil.\n"
+
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr ""
+"Vanligvis er FIL... angitt som «foo.%c%c» for et dokument «foo.texi».\n"
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Valg:\n"
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"\n"
+"Send bugrapporter til bug-texinfo@gnu.org,\n"
+"generelle spørsmål og diskusjoner til help-texinfo@gnu.org.\n"
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr "%s: ikke en texinfo-indeksfil"
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr "feil ved gjenåpning av %s"
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr "Ingen sidenummer i %s"
+
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr "oppføring %s følger en oppføring med et annet navn"
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr "%s; for filen «%s».\n"
diff --git a/gnu/usr.bin/texinfo/po/ru.gmo b/gnu/usr.bin/texinfo/po/ru.gmo
new file mode 100644
index 00000000000..56e0cf45d77
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/ru.gmo
Binary files differ
diff --git a/gnu/usr.bin/texinfo/po/ru.po b/gnu/usr.bin/texinfo/po/ru.po
new file mode 100644
index 00000000000..7ffff57d5d1
--- /dev/null
+++ b/gnu/usr.bin/texinfo/po/ru.po
@@ -0,0 +1,2589 @@
+# ðÅÒÅ×ÏÄÙ ÓÏÏÂÝÅÎÉÊ ÄÌÑ GNU Texinfo.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: texinfo 3.12n\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
+"PO-Revision-Date: 1999-08-06 18:21+04:00\n"
+"Last-Translator: Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-r\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. ****************************************************************
+#.
+#. Echo Area Movement Commands
+#.
+#. ****************************************************************
+#: info/echo-area.c:283 info/session.c:711
+msgid "Move forward a character"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÉÍ×ÏÌ ×ÐÅÒÅÄ"
+
+#. Move point backward in the node.
+#: info/echo-area.c:295 info/session.c:727
+msgid "Move backward a character"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÉÍ×ÏÌ ÎÁÚÁÄ"
+
+#: info/echo-area.c:307
+msgid "Move to the start of this line"
+msgstr "óÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÓÔÒÏËÉ"
+
+#: info/echo-area.c:312
+msgid "Move to the end of this line"
+msgstr "óÍÅÓÔÉÔØÓÑ × ËÏÎÅÃ ÓÔÒÏËÉ"
+
+#. Move forward a word in the input line.
+#: info/echo-area.c:320 info/session.c:745
+msgid "Move forward a word"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÌÏ×Ï ×ÐÅÒÅÄ"
+
+#: info/echo-area.c:360 info/session.c:794
+msgid "Move backward a word"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÌÏ×Ï ÎÁÚÁÄ"
+
+#: info/echo-area.c:400
+msgid "Delete the character under the cursor"
+msgstr "õÄÁÌÉÔØ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ"
+
+#: info/echo-area.c:430
+msgid "Delete the character behind the cursor"
+msgstr "õÄÁÌÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÓÉÍ×ÏÌ"
+
+#: info/echo-area.c:451
+msgid "Cancel or quit operation"
+msgstr "ïÔÍÅÎÉÔØ ÉÌÉ ÐÒÅÒ×ÁÔØ ÄÅÊÓÔ×ÉÅ"
+
+#: info/echo-area.c:466
+msgid "Accept (or force completion of) this line"
+msgstr "ðÒÉÎÑÔØ (ÉÌÉ ÚÁ×ÅÒÛÉÔØ) ÔÅËÕÝÕÀ ÓÔÒÏËÕ"
+
+#: info/echo-area.c:471
+msgid "Insert next character verbatim"
+msgstr "÷ÓÔÁ×ÉÔØ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ \"ËÁË ÅÓÔØ\""
+
+#: info/echo-area.c:479
+msgid "Insert this character"
+msgstr "÷ÓÔÁ×ÉÔØ ÜÔÏÔ ÓÉÍ×ÏÌ"
+
+#: info/echo-area.c:497
+msgid "Insert a TAB character"
+msgstr "÷ÓÔÁ×ÉÔØ ÓÉÍ×ÏÌ ÔÁÂÕÌÑÃÉÉ"
+
+#. Transpose the characters at point. If point is at the end of the line,
+#. then transpose the characters before point.
+#: info/echo-area.c:504
+msgid "Transpose characters at point"
+msgstr "ðÅÒÅÓÔÁ×ÉÔØ ÓÉÍ×ÏÌÙ ×ÏËÒÕÇ ÔÏÞËÉ"
+
+#: info/echo-area.c:555
+msgid "Yank back the contents of the last kill"
+msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ ÐÏÓÌÅÄÎÉÊ ÕÎÉÞÔÏÖÅÎÎÙÊ ÔÅËÓÔ"
+
+#: info/echo-area.c:562
+msgid "Kill ring is empty"
+msgstr "ëÏÌØÃÏ ÕÎÉÞÔÏÖÅÎÉÊ ÐÕÓÔÏ"
+
+#. If the last command was yank, or yank_pop, and the text just before
+#. point is identical to the current kill item, then delete that text
+#. from the line, rotate the index down, and yank back some other text.
+#: info/echo-area.c:575
+msgid "Yank back a previous kill"
+msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÊ ÕÎÉÞÔÏÖÅÎÎÙÊ ÔÅËÓÔ"
+
+#. Delete the text from point to end of line.
+#: info/echo-area.c:608
+msgid "Kill to the end of the line"
+msgstr "õÎÉÞÔÏÖÉÔØ ÔÅËÓÔ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ"
+
+#: info/echo-area.c:621
+msgid "Kill to the beginning of the line"
+msgstr "õÎÉÞÔÏÖÉÔØ ÔÅËÓÔ ÄÏ ÎÁÞÁÌÁ ÓÔÒÏËÉ"
+
+#. Delete from point to the end of the current word.
+#: info/echo-area.c:633
+msgid "Kill the word following the cursor"
+msgstr "õÎÉÞÔÏÖÉÔØ ÓÌÅÄÕÀÝÅÅ ÓÌÏ×Ï"
+
+#: info/echo-area.c:652
+msgid "Kill the word preceding the cursor"
+msgstr "õÎÉÞÔÏÖÉÔØ ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï"
+
+#: info/echo-area.c:871
+msgid "Not complete"
+msgstr "îÅ ÚÁ×ÅÒÛÅÎÏ"
+
+#: info/echo-area.c:916
+msgid "List possible completions"
+msgstr "ðÏËÁÚÁÔØ ×ÏÚÍÏÖÎÙÅ ÚÁ×ÅÒÛÅÎÉÑ"
+
+#: info/echo-area.c:929
+msgid "No completions"
+msgstr "úÁ×ÅÒÛÅÎÉÊ ÎÅÔ"
+
+#: info/echo-area.c:933
+msgid "Sole completion"
+msgstr "åÄÉÎÓÔ×ÅÎÎÏÅ ÚÁ×ÅÒÛÅÎÉÅ"
+
+#: info/echo-area.c:942
+msgid "One completion:\n"
+msgstr "åÄÉÎÓÔ×ÅÎÎÏÅ ÚÁ×ÅÒÛÅÎÉÅ:\n"
+
+#: info/echo-area.c:943
+#, c-format
+msgid "%d completions:\n"
+msgstr "úÁ×ÅÒÛÅÎÉÊ: %d :\n"
+
+#: info/echo-area.c:1089
+msgid "Insert completion"
+msgstr "÷ÓÔÁ×ÉÔØ ÚÁ×ÅÒÛÅÎÉÅ"
+
+#: info/echo-area.c:1222
+msgid "Building completions..."
+msgstr "óÏÓÔÁ×ÌÅÎÉÅ ÚÁ×ÅÒÛÅÎÉÊ..."
+
+#. Scroll the "other" window. If there is a window showing completions, scroll
+#. that one, otherwise scroll the window which was active on entering the read
+#. function.
+#: info/echo-area.c:1320
+msgid "Scroll the completions window"
+msgstr "ðÒÏËÒÕÔÉÔØ ÏËÎÏ ÚÁ×ÅÒÛÅÎÉÊ"
+
+#: info/footnotes.c:212
+msgid "Footnotes could not be displayed"
+msgstr "óÎÏÓËÉ ÎÅ ÍÏÇÕÔ ÂÙÔØ ÐÏËÁÚÁÎÙ"
+
+#: info/footnotes.c:238
+msgid "Show the footnotes associated with this node in another window"
+msgstr "ðÏËÁÚÁÔØ ÓÎÏÓËÉ, Ó×ÑÚÁÎÎÙÅ Ó ÜÔÏÊ ÎÏÄÏÊ, × ÄÒÕÇÏÍ ÏËÎÅ"
+
+#: info/indices.c:175
+msgid "Look up a string in the index for this file"
+msgstr "îÁÊÔÉ ÓÔÒÏËÕ × ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ ÄÌÑ ÄÁÎÎÏÇÏ ÆÁÊÌÁ"
+
+#: info/indices.c:205
+msgid "Finding index entries..."
+msgstr "ðÏÉÓË × ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ..."
+
+#: info/indices.c:212
+msgid "No indices found."
+msgstr "îÅ ÎÁÊÄÅÎ ÁÌÆÁ×ÉÔÎÙÊ ÕËÁÚÁÔÅÌØ."
+
+#: info/indices.c:222
+msgid "Index entry: "
+msgstr "ðÕÎËÔ × ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ: "
+
+#: info/indices.c:332
+msgid ""
+"Go to the next matching index item from the last `\\[index-search]' command"
+msgstr ""
+"ðÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ ÐÕÎËÔÕ ÁÌÆÁ×ÉÔÎÏÇÏ ÕËÁÚÁÔÅÌÑ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍÕ\n"
+"ÐÏÓÌÅÄÎÅÊ ËÏÍÁÎÄÅ `\\[index-search]'"
+
+#: info/indices.c:342
+msgid "No previous index search string."
+msgstr "óÔÒÏËÁ ÐÏÉÓËÁ × ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ ÎÅ ÂÙÌÁ ÒÁÎØÛÅ ÚÁÄÁÎÁ."
+
+#: info/indices.c:349
+msgid "No index entries."
+msgstr "îÅ ÎÁÊÄÅÎ ÁÌÆÁ×ÉÔÎÙÊ ÕËÁÚÁÔÅÌØ."
+
+#: info/indices.c:382
+#, c-format
+msgid "No %sindex entries containing \"%s\"."
+msgstr "÷ ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ %sÎÅ ÎÁÊÄÅÎÏ ÐÕÎËÔÏ×, ÓÏÄÅÒÖÁÝÉÈ \"%s\"."
+
+#: info/indices.c:383
+msgid "more "
+msgstr "ÂÏÌØÛÅ "
+
+#: info/indices.c:393
+msgid "CAN'T SEE THIS"
+msgstr "üÔÏ ÎÅ×ÉÄÉÍÙÊ ÔÅËÓÔ!"
+
+#: info/indices.c:429
+#, c-format
+msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
+msgstr ""
+"îÁÊÄÅÎÁ \"%s\" × %s. (`\\[next-index-match]' ÚÁÐÕÓËÁÅÔ ÐÏ×ÔÏÒÎÙÊ ÐÏÉÓË.)"
+
+#: info/indices.c:549
+#, c-format
+msgid "Scanning indices of \"%s\"..."
+msgstr "ðÏÉÓË × ÁÌÆÁ×ÉÔÎÏÍ ÕËÁÚÁÔÅÌÅ ÆÁÊÌÁ \"%s\"..."
+
+#: info/indices.c:632
+msgid "Grovel all known info file's indices for a string and build a menu"
+msgstr ""
+"úÁÐÕÓËÁÅÔ ÐÏÉÓË ÓÔÒÏËÉ × ÁÌÆÁ×ÉÔÎÙÈ ÕËÁÚÁÔÅÌÑÈ ×ÓÅÈ Info-ÆÁÊÌÏ× É ÓÏÚÄÁÅÔ "
+"ÍÅÎÀ"
+
+#: info/indices.c:636
+msgid "Index apropos: "
+msgstr "ëÌÀÞÅ×ÏÅ ÓÌÏ×Ï ÄÌÑ ÐÏÉÓËÁ: "
+
+#: info/indices.c:666
+#, c-format
+msgid ""
+"\n"
+"* Menu: Nodes whoses indices contain \"%s\":\n"
+msgstr ""
+"\n"
+"* Menu: îÏÄÙ, ÞØÉ ÁÌÆÁ×ÉÔÎÙÅ ÕËÁÚÁÔÅÌÉ ÓÏÄÅÒÖÁÔ \"%s\":\n"
+
+#: info/info.c:248
+msgid "Try --help for more information.\n"
+msgstr "ðÏÐÒÏÂÕÊÔÅ --help ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\n"
+
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"There is NO warranty. You may redistribute this software\n"
+"under the terms of the GNU General Public License.\n"
+"For more information about these matters, see the files named COPYING.\n"
+msgstr ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ. ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÜÔÉ ÐÒÏÇÒÁÍÍÙ, ÐÒÉ\n"
+"ÓÏÂÌÀÄÅÎÉÉ ÕÓÌÏ×ÉÊ õÎÉ×ÅÒÓÁÌØÎÏÊ ïÂÝÅÓÔ×ÅÎÎÏÊ ìÉÃÅÎÚÉÉ GNU.\n"
+"äÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÏÚÍÏÖÎÏÓÔÉ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ\n"
+"ÆÁÊÌ COPYING.\n"
+
+#: info/info.c:461
+#, c-format
+msgid "no index entries found for `%s'\n"
+msgstr "ÄÌÑ `%s' ÎÅ ÎÁÊÄÅÎÏ ×ÈÏÖÄÅÎÉÊ × ÉÍÅÎÎÏÍ ÕËÁÚÁÔÅÌÅ\n"
+
+#: info/info.c:530
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
+"\n"
+"Read documentation in Info format.\n"
+"\n"
+"Options:\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
+"\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
+"Any remaining arguments are treated as the names of menu\n"
+"items relative to the initial node visited.\n"
+"\n"
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ðõîëô-íåîà...]\n"
+"\n"
+"ðÏÚ×ÏÌÑÅÔ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ÄÏËÕÍÅÎÔÁÃÉÀ × ÆÏÒÍÁÔÅ Info.\n"
+"\n"
+"ëÌÀÞÉ:\n"
+"--directory=ëáôáìïç ÄÏÂÁ×ÉÔØ ëáôáìïç Ë INFOPATH.\n"
+"--dribble=æáêì ÚÁÐÉÓÁÔØ ××ÏÄÉÍÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÍ×ÏÌÙ × "
+"æáêì.\n"
+"--file=æáêì ÐÒÏÓÍÏÔÒÅÔØ ÚÁÄÁÎÎÙÊ æáêì.\n"
+"--help ÐÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ.\n"
+"--index-search=óôòïëá ÐÅÒÅÊÔÉ Ë ÎÏÄÅ, ÎÁ ËÏÔÏÒÕÀ ÓÓÙÌÁÅÔÓÑ ÚÁÄÁÎÎÏÅ\n"
+" óôòïëïê ×ÈÏÖÄÅÎÉÅ ÉÍÅÎÎÏÇÏ ÕËÁÚÁÔÅÌÑ.\n"
+"--node=îïäá ÎÁÞÁÔØ ÐÒÏÓÍÏÔÒ Ó ÚÁÄÁÎÎÏÊ îïäù.\n"
+"--output=æáêì ÚÁÐÉÓÁÔØ ×ÙÂÒÁÎÎÙÅ ÎÏÄÙ × æáêì.\n"
+"--restore=æáêì ÓÞÉÔÁÔØ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÎÁÖÁÔÙÈ ËÌÁ×ÉÛ ÉÚ "
+"æáêìá.\n"
+"--show-options, --usage ÐÅÒÅÊÔÉ Ë ÎÏÄÅ, ÏÐÉÓÙ×ÁÀÝÅÊ ËÌÀÞÉ ËÏÍÁÎÄÎÏÊ "
+"ÓÔÒÏËÉ.\n"
+"--subnodes ÒÅËÕÒÓÉ×ÎÏ ×Ù×ÏÄÉÔØ ÐÕÎËÔÙ ÍÅÎÀ.\n"
+"%s --vi-keys ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÉ×ÑÚËÉ ËÌÁ×ÉÛ ËÁË × vi É "
+"less.\n"
+"--version ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ.\n"
+"\n"
+"ðÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ, ÎÅ Ñ×ÌÑÀÝÉÊÓÑ ËÌÀÞÏÍ, ÉÍÑ ÎÁÞÁÌØÎÏÇÏ ÐÕÎËÔÁ ÍÅÎÀ; ÏÎ\n"
+"ÉÝÅÔÓÑ ×Ï ×ÓÅÈ ÆÁÊÌÁÈ `dir' × INFOPATH. åÓÌÉ ÏÎ ÎÅ ÎÁÊÄÅÎ, info\n"
+"ÏÂßÅÄÉÎÑÅÔ ×ÓÅ ÆÁÊÌÙ `dir' É ÐÏËÁÚÙ×ÁÅÔ ÒÅÚÕÌØÔÁÔ. ÷ÓÅ ÏÓÔÁÌØÎÙÅ\n"
+"ÁÒÇÕÍÅÎÔÙ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ËÁË ÉÍÅÎÁ ÐÕÎËÔÏ× ÍÅÎÀ ÏÔÎÏÓÉÔÅÌØÎÏ ÐÅÒ×ÏÊ\n"
+"ÐÏÓÅÝÅÎÎÏÊ ÎÏÄÙ.\n"
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" info ÐÏËÁÚÁÔØ ÍÅÎÀ ËÁÔÁÌÏÇÁ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ\n"
+" info emacs ÎÁÞÁÔØ Ó ÎÏÄÙ emacs ÉÚ ËÁÔÁÌÏÇÁ ×ÅÒÈÎÅÇÏ "
+"ÕÒÏ×ÎÑ\n"
+" info emacs buffers ÎÁÞÁÔØ Ó ÎÏÄÙ buffers × ÒÕËÏ×ÏÄÓÔ×Å emacs\n"
+" info --show-options emacs ÎÁÞÁÔØ Ó ÎÏÄÙ, ÏÐÉÓÙ×ÁÀÝÅÊ ËÌÀÞÉ emacs\n"
+" info -f ./foo.info ÐÏËÁÚÁÔØ ÆÁÊÌ ./foo.info, ÎÅ ÉÓËÁÔØ dir\n"
+"\n"
+"ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ bug-texinfo@gnu.org,\n"
+"ÏÂÝÅÅ ÏÂÓÕÖÄÅÎÉÅ É ×ÏÐÒÏÓÙ ÎÁÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ help-texinfo@gnu.org.\n"
+
+#: info/info.c:604
+#, fuzzy, c-format
+msgid "Cannot find node `%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÎÏÄÕ `%s'"
+
+#: info/info.c:605
+#, fuzzy, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÎÏÄÕ `%s'"
+
+#: info/info.c:606
+#, fuzzy
+msgid "Cannot find a window!"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÏÓÔÏÑÎÎÏÅ ÏËÎÏ"
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+#, fuzzy
+msgid "Cannot delete the last window."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÏÓÔÏÑÎÎÏÅ ÏËÎÏ"
+
+#: info/info.c:609
+#, fuzzy
+msgid "No menu in this node."
+msgstr "÷ ÎÏÄÅ \"%s\" ÎÅÔ ÍÅÎÀ."
+
+#: info/info.c:610
+#, fuzzy
+msgid "No footnotes in this node."
+msgstr "îÁ ÜÔÏÊ ÎÏÄÅ ÎÅÔ ÓÓÙÌÏË."
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr "îÁ ÜÔÏÊ ÎÏÄÅ ÎÅÔ ÓÓÙÌÏË."
+
+#: info/info.c:612
+#, fuzzy, c-format
+msgid "No `%s' pointer for this node."
+msgstr "÷ ÜÔÏÊ ÎÏÄÅ ÎÅÔ ÓÓÙÌËÉ \"óÌÅÄÕÀÝÁÑ\"."
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+#, fuzzy
+msgid "You are already at the last page of this node."
+msgstr "ðÅÒÅÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÎÏÄÙ"
+
+#: info/info.c:616
+#, fuzzy
+msgid "You are already at the first page of this node."
+msgstr "ðÅÒÅÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÎÏÄÙ"
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr "ïÓÎÏ×ÎÙÅ ËÏÍÁÎÄÙ × ÏËÎÁÈ Info\n"
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr ""
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr " %-10s ðÏËÉÎÕÔØ ÜÔÕ ÓÐÒÁ×ËÕ.\n"
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
+msgstr " %-10s ðÏËÉÎÕÔØ ÔÁËÖÅ Info.\n"
+
+#: info/infodoc.c:50
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr " %-10s ÷ÙÚ×ÁÔØ ÏÂÕÞÁÀÝÅÅ ÒÕËÏ×ÏÄÓÔ×Ï.\n"
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr "ðÅÒÅÍÅÝÅÎÉÅ ×ÎÕÔÒÉ ÎÏÄÙ:\n"
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr ""
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr " %-10s ðÒÏËÒÕÔÉÔØ ÎÁ ÓÔÒÁÎÉÃÕ ×ÐÅÒÅÄ.\n"
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr " %-10s ðÒÏËÒÕÔÉÔØ ÎÁ ÓÔÒÁÎÉÃÕ ÎÁÚÁÄ.\n"
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr " %-10s ðÅÒÅÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÜÔÏÊ ÎÏÄÙ.\n"
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr " %-10s ðÅÒÅÍÅÓÔÉÔØÓÑ × ËÏÎÅà ÜÔÏÊ ÎÏÄÙ.\n"
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr " %-10s ðÒÏËÒÕÔÉÔØ ÎÁ ÓÔÒÁÎÉÃÕ ×ÐÅÒÅÄ.\n"
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr " %-10s ðÒÏËÒÕÔÉÔØ ÎÁ ÓÔÒÁÎÉÃÕ ÎÁÚÁÄ.\n"
+
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr "÷ÙÂÏÒ ÄÒÕÇÏÊ ÎÏÄÙ:\n"
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr ""
+
+#: info/infodoc.c:63
+#, fuzzy, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë \"ÓÌÅÄÕÀÝÅÊ\" ÎÏÄÅ.\n"
+
+#: info/infodoc.c:64
+#, fuzzy, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë \"ÐÒÅÄÙÄÕÝÅÊ\" ÎÏÄÅ.\n"
+
+#: info/infodoc.c:65
+#, fuzzy, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë ÎÏÄÅ \"××ÅÒÈ\".\n"
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë ÚÁÄÁÎÎÏÍÕ ÐÕÎËÔÕ ÍÅÎÀ.\n"
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+" ðÒÉ ÐÅÒÅÈÏÄÅ Ë ÚÁÄÁÎÎÏÍÕ ÐÕÎËÔÕ ÍÅÎÀ ×ÙÂÉÒÁÅÔÓÑ ÄÒÕÇÁÑ ÎÏÄÁ.\n"
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ ÐÏ ÓÓÙÌËÅ. óÞÉÔÙ×ÁÅÔ ÉÍÑ ÓÓÙÌËÉ.\n"
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ ÎÁ ÐÏÓÌÅÄÎÀÀ ÎÏÄÕ × ÜÔÏÍ ÏËÎÅ.\n"
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr " %-10s ðÅÒÅÍÅÓÔÉÔØÓÑ Ë ÓÌÅÄÕÀÝÅÊ ÇÉÐÅÒÓÓÙÌËÅ × ÜÔÏÊ ÎÏÄÅ.\n"
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ ÐÏ ÇÉÐÅÒÓÓÙÌËÅ ÐÏÄ ËÕÒÓÏÒÏÍ.\n"
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë ËÏÒÎÅ×ÏÊ ÎÏÄÅ. üË×É×ÁÌÅÎÔÎÏ `g (DIR)'.\n"
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë ÎÏÄÅ Top. üË×É×ÁÌÅÎÔÎÏ `g Top'.\n"
+
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr "äÒÕÇÉÅ ËÏÍÁÎÄÙ:\n"
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr ""
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr " %-10s ÷ÙÂÒÁÔØ ÐÅÒ×ÙÊ ... ÄÅ×ÑÔÙÊ ÐÕÎËÔ ÍÅÎÀ × ÔÅËÕÝÅÊ ÎÏÄÅ.\n"
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr " %-10s ÷ÙÂÒÁÔØ ÐÏÓÌÅÄÎÉÊ ÐÕÎËÔ ÍÅÎÀ × ÔÅËÕÝÅÊ ÎÏÄÅ\n"
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+" %-10s ðÒÏÉÚ×ÅÓÔÉ ÐÏÉÓË ÚÁÄÁÎÎÏÊ ÓÔÒÏËÉ ÓÒÅÄÉ ×ÈÏÖÄÅÎÉÊ ÉÍÅÎÎÙÈ ÕËÁÚÁÔÅÌÅÊ "
+"ÜÔÏÇÏ\n"
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr " Info-ÆÁÊÌÁ É ×ÙÂÒÁÔØ ÎÏÄÕ ÐÏ ÐÅÒ×ÏÊ ÎÁÊÄÅÎÎÏÊ ÓÓÙÌËÅ.\n"
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr " %-10s ðÅÒÅÊÔÉ Ë ÚÁÄÁÎÎÏÊ ÎÏÄÅ.\n"
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
+msgstr " ÷Ù ÍÏÖÅÔÅ ÚÁÄÁÔØ ÔÁËÖÅ ÉÍÑ ÆÁÊÌÁ, ÎÁÐÒÉÍÅÒ (æáêì)îïäá.\n"
+
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr " %-10s îÁÊÔÉ ÚÁÄÁÎÎÕÀ ÓÔÒÏËÕ × ÔÅËÕÝÅÍ Info-ÆÁÊÌÅ, É ÐÅÒÅÊÔÉ Ë\n"
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr " ÎÏÄÅ, × ËÏÔÏÒÏÊ ÎÁÊÄÅÎÏ ÓÌÅÄÕÀÝÅÅ ×ÈÏÖÄÅÎÉÅ.\n"
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr " %-10s îÁÊÔÉ ÚÁÄÁÎÎÕÀ ÓÔÒÏËÕ × ÔÅËÕÝÅÍ Info-ÆÁÊÌÅ, É ÐÅÒÅÊÔÉ Ë\n"
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr "ôÅËÕÝÉÊ ÐÕÔØ ÐÏÉÓËÁ:\n"
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+"ëÏÍÁÎÄÙ, ÄÏÓÔÕÐÎÙÅ × ÏËÎÁÈ Info:\n"
+"\n"
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+"ëÏÍÁÎÄÙ, ÄÏÓÔÕÐÎÙÅ × ÜÈÏ-ÏÂÌÁÓÔÉ:\n"
+"\n"
+
+#: info/infodoc.c:280
+msgid ""
+"The following commands can only be invoked via M-x:\n"
+"\n"
+msgstr ""
+"óÌÅÄÕÀÝÉÅ ËÏÍÁÎÄÙ ÍÏÇÕÔ ÂÙÔØ ×ÙÚ×ÁÎÙ ÔÏÌØËÏ Ó ÐÏÍÏÝØÀ M-x:\n"
+"\n"
+
+#: info/infodoc.c:301
+msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
+msgstr ""
+"--- éÓÐÏÌØÚÕÊÔÅ `\\[history-node]' ÉÌÉ `\\[kill-node]' ÄÌÑ ×ÙÈÏÄÁ ---\n"
+
+#. Create or move to the help window.
+#: info/infodoc.c:411
+msgid "Display help message"
+msgstr "ðÏËÁÚÁÔØ ÓÐÒÁ×ËÕ"
+
+#. Show the Info help node. This means that the "info" file is installed
+#. where it can easily be found on your system.
+#: info/infodoc.c:429
+msgid "Visit Info node `(info)Help'"
+msgstr "ïÂÒÁÔÉÔØÓÑ Ë Info-ÎÏÄÅ `(info)Help'"
+
+#: info/infodoc.c:555
+msgid "Print documentation for KEY"
+msgstr "ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ëìá÷éûå"
+
+#: info/infodoc.c:568
+#, c-format
+msgid "Describe key: %s"
+msgstr "ïÐÉÓÁÔØ ËÌÁ×ÉÛÕ: %s"
+
+#: info/infodoc.c:577
+#, c-format
+msgid "ESC %s is undefined."
+msgstr "ESC %s ÎÅÏÐÒÅÄÅÌÅÎÏ."
+
+#: info/infodoc.c:594
+#, c-format
+msgid "%s is undefined."
+msgstr "%s ÎÅÏÐÒÅÄÅÌÅÎÏ."
+
+#: info/infodoc.c:620
+#, c-format
+msgid "%s is defined to %s."
+msgstr "%s ÐÒÉ×ÑÚÁÎÏ Ë %s."
+
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr "ðÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÎÕÖÎÏ ÎÁÐÅÞÁÔÁÔØ, ÞÔÏÂÙ ×ÙÐÏÌÎÉÔØ ÄÁÎÎÕÀ ËÏÍÁÎÄÕ"
+
+#: info/infodoc.c:816
+msgid "Where is command: "
+msgstr "ëÏÍÁÎÄÁ: "
+
+#: info/infodoc.c:838
+#, c-format
+msgid "`%s' is not on any keys"
+msgstr "`%s' ÎÅ ÐÒÉ×ÑÚÁÎÁ ÎÉ Ë ËÁËÉÍ ËÌÁ×ÉÛÁÍ"
+
+#: info/infodoc.c:844
+#, c-format
+msgid "%s can only be invoked via %s."
+msgstr "%s ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎÁ ÔÏÌØËÏ Ó ÐÏÍÏÝØÀ %s."
+
+#: info/infodoc.c:847
+#, c-format
+msgid "%s can be invoked via %s."
+msgstr "%s ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎÁ Ó ÐÏÍÏÝØÀ %s."
+
+#: info/infodoc.c:851
+#, c-format
+msgid "There is no function named `%s'"
+msgstr "æÕÎËÃÉÉ Ó ÉÍÅÎÅÍ `%s' ÎÅÔ"
+
+#: info/m-x.c:69
+msgid "Read the name of an Info command and describe it"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ËÏÍÁÎÄÙ Info É ÐÏËÁÚÁÔØ ÅÅ ÏÐÉÓÁÎÉÅ"
+
+#: info/m-x.c:73
+msgid "Describe command: "
+msgstr "ïÐÉÓÁÔØ ËÏÍÁÎÄÕ: "
+
+#: info/m-x.c:96
+msgid "Read a command name in the echo area and execute it"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ËÏÍÁÎÄÙ × ÜÈÏ-ÏÂÌÁÓÔÉ É ÉÓÐÏÌÎÉÔØ ÅÅ"
+
+#: info/m-x.c:134
+msgid "Cannot execute an `echo-area' command here."
+msgstr "úÄÅÓØ ÎÅÌØÚÑ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÜÈÏ-ÏÂÌÁÓÔÉ."
+
+#: info/m-x.c:150
+msgid "Set the height of the displayed window"
+msgstr "õÓÔÁÎÏ×ÉÔØ ×ÙÓÏÔÕ ÏÔÏÂÒÁÖÁÅÍÏÇÏ ÏËÎÁ"
+
+#: info/m-x.c:163
+#, c-format
+msgid "Set screen height to (%d): "
+msgstr "õÓÔÁÎÏ×ÉÔØ ×ÙÓÏÔÕ ÜËÒÁÎÁ ÒÁ×ÎÏÊ (%d): "
+
+#: info/makedoc.c:132
+msgid ""
+" Source files groveled to make this file include:\n"
+"\n"
+msgstr ""
+" üÔÏÔ ÆÁÊÌ ×ËÌÀÞÁÅÔ:\n"
+"\n"
+
+#: info/makedoc.c:465
+#, c-format
+msgid "Couldn't manipulate the file %s.\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÂÒÁÂÏÔÁÔØ ÆÁÊÌ %s.\n"
+
+#: info/nodemenu.c:28
+msgid ""
+"\n"
+"* Menu:\n"
+" (File)Node Lines Size Containing File\n"
+" ---------- ----- ---- ---------------"
+msgstr ""
+"\n"
+"* Menu:\n"
+" (æÁÊÌ)îÏÄÁ óÔÒÏË òÁÚÍÅÒ æÁÊÌ\n"
+" ---------- ----- ------ ----"
+
+#: info/nodemenu.c:199
+msgid ""
+"Here is the menu of nodes you have recently visited.\n"
+"Select one from this menu, or use `\\[history-node]' in another window.\n"
+msgstr ""
+"üÔÏ ÍÅÎÀ ÒÁÎÅÅ ÐÏÓÅÝÅÎÎÙÈ ×ÁÍÉ ÎÏÄ.\n"
+"÷ÙÂÅÒÉÔÅ ÏÄÎÕ ÉÚ ÍÅÎÀ ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ `\\[history-node]' × ÄÒÕÇÏÍ ÏËÎÅ.\n"
+
+#: info/nodemenu.c:219
+msgid "Make a window containing a menu of all of the currently visited nodes"
+msgstr "óÏÚÄÁÔØ ÏËÎÏ, ÓÏÄÅÒÖÁÝÅÅ ÍÅÎÀ ÐÏÓÅÝÅÎÎÙÈ ÒÁÎÅÅ ÎÏÄ"
+
+#: info/nodemenu.c:299
+msgid "Select a node which has been previously visited in a visible window"
+msgstr "÷ÙÂÒÁÔØ ÒÁÎÅÅ ÐÏÓÅÝÅÎÎÕÀ ÎÏÄÕ × ×ÉÄÉÍÏÍ ÏËÎÅ"
+
+#: info/nodemenu.c:311
+msgid "Select visited node: "
+msgstr "÷ÙÂÒÁÔØ ÐÏÓÅÝÅÎÎÕÀ ÒÁÎÅÅ ÎÏÄÕ: "
+
+#: info/nodemenu.c:331 info/session.c:2146
+#, c-format
+msgid "The reference disappeared! (%s)."
+msgstr "óÓÙÌËÁ ÉÓÞÅÚÌÁ! (%s)."
+
+#: info/session.c:169
+#, fuzzy, c-format
+msgid ""
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
+msgstr ""
+"äÏÂÒÏ ÐÏÖÁÌÏ×ÁÔØ × Info ×ÅÒÓÉÉ %s. \"\\[get-help-window]\" -- ÓÐÒÁ×ËÁ, "
+"\"\\[menu-item]\" ×ÙÂÉÒÁÅÔ ÐÕÎËÔ ÍÅÎÀ."
+
+#. Move WINDOW's point down to the next line if possible.
+#: info/session.c:642
+msgid "Move down to the next line"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÔÒÏËÕ ÎÉÖÅ"
+
+#. Move WINDOW's point up to the previous line if possible.
+#: info/session.c:657
+msgid "Move up to the previous line"
+msgstr "óÍÅÓÔÉÔØÓÑ ÎÁ ÓÔÒÏËÕ ×ÙÛÅ"
+
+#. Move WINDOW's point to the end of the true line.
+#: info/session.c:672
+msgid "Move to the end of the line"
+msgstr "óÍÅÓÔÉÔØÓÑ × ËÏÎÅÃ ÓÔÒÏËÉ"
+
+#. Move WINDOW's point to the beginning of the true line.
+#: info/session.c:692
+msgid "Move to the start of the line"
+msgstr "óÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÓÔÒÏËÉ"
+
+#: info/session.c:884 makeinfo/node.c:1092
+msgid "Next"
+msgstr "óÌÅÄÕÀÝÁÑ"
+
+#: info/session.c:887
+msgid "Following Next node..."
+msgstr "ðÅÒÅÈÏÄ ÎÁ ÎÏÄÕ \"óÌÅÄÕÀÝÁÑ\"..."
+
+#: info/session.c:904
+msgid "Selecting first menu item..."
+msgstr "÷ÙÂÉÒÁÅÔÓÑ ÐÅÒ×ÙÊ ÐÕÎËÔ ÍÅÎÀ..."
+
+#: info/session.c:915
+msgid "Selecting Next node..."
+msgstr "÷ÙÂÉÒÁÅÔÓÑ ÎÏÄÁ \"óÌÅÄÕÀÝÁÑ\"..."
+
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
+msgstr "ðÅÒÅÍÅÝÅÎÉÅ \"÷×ÅÒÈ\" %d ÒÁÚ(Á), ÚÁÔÅÍ \"óÌÅÄÕÀÝÁÑ\"."
+
+#: info/session.c:1009
+msgid "No more nodes within this document."
+msgstr "÷ ÜÔÏÍ ÄÏËÕÍÅÎÔÅ ÂÏÌØÛÅ ÎÅÔ ÎÏÄ."
+
+#: info/session.c:1033
+#, fuzzy
+msgid "No `Prev' for this node."
+msgstr "÷ ÜÔÏÊ ÎÏÄÅ ÎÅÔ ÓÓÙÌËÉ \"ðÒÅÄÙÄÕÝÁÑ\"."
+
+#. Move to the previous node. If this node now contains a menu,
+#. and we have not inhibited movement to it, move to the node
+#. corresponding to the last menu item.
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
+msgstr "ðÅÒÅÈÏÄ ÎÁ ÎÏÄÕ \"ðÒÅÄÙÄÕÝÁÑ\" × ÜÔÏÍ ÏËÎÅ."
+
+#: info/session.c:1050
+#, fuzzy
+msgid "No `Prev' or `Up' for this node within this document."
+msgstr ""
+"÷ ÜÔÏÍ ÄÏËÕÍÅÎÔÅ ÎÅÔ ÓÓÙÌËÉ \"ðÒÅÄÙÄÕÝÁÑ\" ÉÌÉ \"÷×ÅÒÈ\" ÄÌÑ ÜÔÏÊ ÎÏÄÙ."
+
+#: info/session.c:1053
+msgid "Moving Up in this window."
+msgstr "ðÅÒÅÈÏÄ ÎÁ ÎÏÄÕ \"÷×ÅÒÈ\" × ÜÔÏÍ ÏËÎÅ."
+
+#: info/session.c:1101
+#, fuzzy
+msgid "Moving to `Prev's last menu item."
+msgstr "ðÅÒÅÈÏÄ ÎÁ ÐÏÓÌÅÄÎÉÊ ÐÕÎËÔ ÍÅÎÀ ÎÏÄÙ \"ðÒÅÄÙÄÕÝÁÑ\"."
+
+#: info/session.c:1112
+msgid "Move forwards or down through node structure"
+msgstr "ðÒÏÄ×ÉÇÁÔØÓÑ ×ÐÅÒÅÄ ÉÌÉ ×ÎÉÚ ÐÏ ÓÔÒÕËÔÕÒÅ ÎÏÄ"
+
+#: info/session.c:1128
+msgid "Move backwards or up through node structure"
+msgstr "ðÒÏÄ×ÉÇÁÔØÓÑ ÎÁÚÁÄ ÉÌÉ ××ÅÒÈ ÐÏ ÓÔÒÕËÔÕÒÅ ÎÏÄ"
+
+#. Show the next screen of WINDOW's node.
+#: info/session.c:1143
+msgid "Scroll forward in this window"
+msgstr "ðÒÏËÒÕÔÉÔØ ×ÐÅÒÅÄ ÔÅËÕÝÅÅ ÏËÎÏ"
+
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr "ðÒÏËÒÕÔÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ ×ÐÅÒÅÄ É ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÍÅÒ ÏËÎÁ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#. Show the previous screen of WINDOW's node.
+#: info/session.c:1200
+msgid "Scroll backward in this window"
+msgstr "ðÒÏËÒÕÔÉÔØ ÎÁÚÁÄ ÔÅËÕÝÅÅ ÏËÎÏ"
+
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr "ðÒÏËÒÕÔÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ ÎÁÚÁÄ É ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÍÅÒ ÏËÎÁ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#. Move to the beginning of the node.
+#: info/session.c:1252
+msgid "Move to the start of this node"
+msgstr "ðÅÒÅÍÅÓÔÉÔØÓÑ × ÎÁÞÁÌÏ ÎÏÄÙ"
+
+#. Move to the end of the node.
+#: info/session.c:1259
+msgid "Move to the end of this node"
+msgstr "ðÅÒÅÍÅÓÔÉÔØÓÑ × ËÏÎÅà ÎÏÄÙ"
+
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr "ðÒÏËÒÕÔÉÔØ ÎÁ ÎÅÓËÏÌØËÏ ÓÔÒÏË ×ÎÉÚ"
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr "ðÒÏËÒÕÔÉÔØ ÎÁ ÎÅÓËÏÌØËÏ ÓÔÒÏË ××ÅÒÈ"
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr "ðÒÏËÒÕÔÉÔØ ÎÁ ÐÏÌÜËÒÁÎÁ ×ÎÉÚ"
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr "ðÒÏËÒÕÔÉÔØ ÎÁ ÐÏÌÜËÒÁÎÁ ××ÅÒÈ"
+
+#. ****************************************************************
+#.
+#. Commands for Manipulating Windows
+#.
+#. ****************************************************************
+#. Make the next window in the chain be the active window.
+#: info/session.c:1356
+msgid "Select the next window"
+msgstr "÷ÙÂÒÁÔØ ÓÌÅÄÕÀÝÅÅ ÏËÎÏ"
+
+#. Make the previous window in the chain be the active window.
+#: info/session.c:1395
+msgid "Select the previous window"
+msgstr "÷ÙÂÒÁÔØ ÐÒÅÄÙÄÕÝÅÅ ÏËÎÏ"
+
+#. Split WINDOW into two windows, both showing the same node. If we
+#. are automatically tiling windows, re-tile after the split.
+#: info/session.c:1446
+msgid "Split the current window"
+msgstr "òÁÚÂÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ"
+
+#. Delete WINDOW, forgetting the list of last visited nodes. If we are
+#. automatically displaying footnotes, show or remove the footnotes
+#. window. If we are automatically tiling windows, re-tile after the
+#. deletion.
+#: info/session.c:1527
+msgid "Delete the current window"
+msgstr "õÄÁÌÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ"
+
+#: info/session.c:1535
+msgid "Cannot delete a permanent window"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÏÓÔÏÑÎÎÏÅ ÏËÎÏ"
+
+#. Just keep WINDOW, deleting all others.
+#: info/session.c:1568
+msgid "Delete all other windows"
+msgstr "õÄÁÌÉÔØ ×ÓÅ ÏÓÔÁÌØÎÙÅ ÏËÎÁ"
+
+#. Scroll the "other" window of WINDOW.
+#: info/session.c:1614
+msgid "Scroll the other window"
+msgstr "ðÒÏËÒÕÔÉÔØ ÄÒÕÇÏÅ ÏËÎÏ"
+
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr "ðÒÏËÒÕÔÉÔØ ÄÒÕÇÏÅ ÏËÎÏ ÎÁÚÁÄ"
+
+#. Change the size of WINDOW by AMOUNT.
+#: info/session.c:1641
+msgid "Grow (or shrink) this window"
+msgstr "õ×ÅÌÉÞÉÔØ (ÉÌÉ ÕÍÅÎØÛÉÔØ) ÔÅËÕÝÅÅ ÏËÎÏ"
+
+#: info/session.c:1652
+msgid "Divide the available screen space among the visible windows"
+msgstr "òÁÚÄÅÌÉÔØ ÄÏÓÔÕÐÎÏÅ ÍÅÓÔÏ ÎÁ ÜËÒÁÎÅ ÍÅÖÄÕ ×ÉÄÉÍÙÍÉ ÏËÎÁÍÉ"
+
+#: info/session.c:1659
+msgid "Toggle the state of line wrapping in the current window"
+msgstr "ðÅÒÅËÌÀÞÉÔØ ÒÅÖÉÍ ÒÁÚÂÉ×ÁÎÉÑ ÓÔÒÏË × ÔÅËÕÝÅÍ ÏËÎÅ"
+
+#. Make WINDOW display the "Next:" node of the node currently being
+#. displayed.
+#: info/session.c:1838
+msgid "Select the Next node"
+msgstr "ðÅÒÅÊÔÉ ÎÁ `óÌÅÄÕÀÝÕÀ' ÎÏÄÕ"
+
+#. Make WINDOW display the "Prev:" node of the node currently being
+#. displayed.
+#: info/session.c:1846
+msgid "Select the Prev node"
+msgstr "ðÅÒÅÊÔÉ ÎÁ `ðÒÅÄÙÄÕÝÕÀ' ÎÏÄÕ"
+
+#. Make WINDOW display the "Up:" node of the node currently being
+#. displayed.
+#: info/session.c:1854
+msgid "Select the Up node"
+msgstr "ðÅÒÅÊÔÉ ÎÁ `÷ÅÒÈÎÀÀ' ÎÏÄÕ"
+
+#. Make WINDOW display the last node of this info file.
+#: info/session.c:1861
+msgid "Select the last node in this file"
+msgstr "ðÅÒÅÊÔÉ ÎÁ ÐÏÓÌÅÄÎÀÀ ÎÏÄÕ × ÆÁÊÌÅ"
+
+#: info/session.c:1888 info/session.c:1921
+msgid "This window has no additional nodes"
+msgstr "üÔÏ ÏËÎÏ ÎÅ ÉÍÅÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÎÏÄ"
+
+#. Make WINDOW display the first node of this info file.
+#: info/session.c:1894
+msgid "Select the first node in this file"
+msgstr "ðÅÒÅÊÔÉ ÎÁ ÐÅÒ×ÕÀ ÎÏÄÕ × ÆÁÊÌÅ"
+
+#: info/session.c:1928
+msgid "Select the last item in this node's menu"
+msgstr "÷ÙÂÒÁÔØ ÐÏÓÌÅÄÎÉÊ ÐÕÎËÔ ÍÅÎÀ × ÔÅËÕÝÅÊ ÎÏÄÅ"
+
+#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
+#: info/session.c:1934
+msgid "Select this menu item"
+msgstr "÷ÙÂÒÁÔØ ÚÁÄÁÎÎÙÊ ÐÕÎËÔ ÍÅÎÀ"
+
+#: info/session.c:1963
+#, c-format
+msgid "There aren't %d items in this menu."
+msgstr "÷ ÜÔÏÍ ÍÅÎÀ ÎÅÔ %d ÐÕÎËÔÏ×."
+
+#: info/session.c:2094
+#, c-format
+msgid "Menu item (%s): "
+msgstr "ðÕÎËÔ ÍÅÎÀ (%s): "
+
+#: info/session.c:2096
+msgid "Menu item: "
+msgstr "ðÕÎËÔ ÍÅÎÀ: "
+
+#: info/session.c:2101
+#, c-format
+msgid "Follow xref (%s): "
+msgstr "ðÅÒÅÊÔÉ ÐÏ ÓÓÙÌËÅ (%s): "
+
+#: info/session.c:2103
+msgid "Follow xref: "
+msgstr "ðÅÒÅÊÔÉ ÐÏ ÓÓÙÌËÅ: "
+
+#. Read a line (with completion) which is the name of a menu item,
+#. and select that item.
+#: info/session.c:2191
+msgid "Read a menu item and select its node"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ÐÕÎËÔÁ ÍÅÎÀ É ÐÅÒÅÊÔÉ Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÎÏÄÅ"
+
+#: info/session.c:2199
+msgid "Read a footnote or cross reference and select its node"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ÓÓÙÌËÉ ÉÌÉ ÓÎÏÓËÉ É ÐÅÒÅÊÔÉ Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÎÏÄÅ"
+
+#. Position the cursor at the start of this node's menu.
+#: info/session.c:2205
+msgid "Move to the start of this node's menu"
+msgstr "óÍÅÓÔÉÔØÓÑ Ë ÎÁÞÁÌÕ ÍÅÎÀ ÔÅËÕÝÅÊ ÎÏÄÙ"
+
+#: info/session.c:2229
+msgid "Visit as many menu items at once as possible"
+msgstr "ðÒÏÓÍÏÔÒÅÔØ ÏÄÎÏ×ÒÅÍÅÎÎÏ ËÁË ÍÏÖÎÏ ÂÏÌØÛÅ ÎÏÄ"
+
+#. Read a line of input which is a node name, and go to that node.
+#: info/session.c:2257
+msgid "Read a node name and select it"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ÎÏÄÙ É ÐÅÒÅÊÔÉ Ë ÎÅÊ"
+
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr "ðÅÒÅÊÔÉ Ë ÎÏÄÅ: "
+
+#: info/session.c:2382
+#, fuzzy, c-format
+msgid "No menu in node `%s'."
+msgstr "÷ ÎÏÄÅ \"%s\" ÎÅÔ ÍÅÎÀ."
+
+#: info/session.c:2422
+#, fuzzy, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr "ðÕÎËÔ ÍÅÎÀ \"%s\" ÏÔÓÕÔÓÔ×ÕÅÔ × ÎÏÄÅ \"%s\"."
+
+#: info/session.c:2452
+#, fuzzy, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÎÏÄÕ ÐÏ ÓÓÙÌËÅ \"%s\" × \"%s\"."
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr "óÞÉÔÁÔØ ÓÐÉÓÏË ÍÅÎÀ, ÎÁÞÉÎÁÀÝÉÊÓÑ Ó dir É ÐÒÏÓÌÅÄÏ×ÁÔØ ÐÏ ÎÉÍ"
+
+#: info/session.c:2505
+msgid "Follow menus: "
+msgstr "ðÒÏÓÌÅÄÏ×ÁÔØ ÐÏ ÍÅÎÀ: "
+
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr "îÁÈÏÄÉÔ ÎÏÄÕ, ÒÁÓÓËÁÚÙ×ÁÀÝÕÀ, ËÁË ×ÙÚÙ×ÁÔØ ÐÒÏÇÒÁÍÍÕ"
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr "îÁÊÔÉ ÎÏÄÕ Invocation ÄÌÑ [%s]: "
+
+#: info/session.c:2743
+msgid "Read a manpage reference and select it"
+msgstr "óÞÉÔÁÔØ ÉÍÑ manpage É ÐÅÒÅÊÔÉ Ë ÎÅÊ"
+
+#: info/session.c:2747
+msgid "Get Manpage: "
+msgstr "ðÒÏÓÍÏÔÒÅÔØ manpage: "
+
+#. Move to the "Top" node in this file.
+#: info/session.c:2777
+msgid "Select the node `Top' in this file"
+msgstr "ðÅÒÅÊÔÉ ÎÁ `ðÅÒ×ÕÀ' ÎÏÄÕ"
+
+#. Move to the node "(dir)Top".
+#: info/session.c:2783
+msgid "Select the node `(dir)'"
+msgstr "ðÅÒÅÊÔÉ ÎÁ ÎÏÄÕ `(dir)'"
+
+#: info/session.c:2803
+#, c-format
+msgid "Kill node (%s): "
+msgstr "õÄÁÌÉÔØ ÎÏÄÕ (%s): "
+
+#: info/session.c:2857
+#, c-format
+msgid "Cannot kill node `%s'"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÎÏÄÕ `%s'"
+
+#: info/session.c:2867
+msgid "Cannot kill the last node"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÏÓÌÅÄÎÀÀ ÎÏÄÕ"
+
+#: info/session.c:2953
+msgid "Select the most recently selected node"
+msgstr "ðÅÒÅÊÔÉ Ë ÐÏÓÌÅÄÎÅÊ ×ÙÂÒÁÎÎÏÊ ÎÏÄÅ"
+
+#. Kill named node.
+#: info/session.c:2959
+msgid "Kill this node"
+msgstr "õÄÁÌÉÔØ ÔÅËÕÝÕÀ ÎÏÄÕ"
+
+#. Read the name of a file and select the entire file.
+#: info/session.c:2967
+msgid "Read the name of a file and select it"
+msgstr "óÞÉÔÁÔØ ÉÍÑ ÆÁÊÌÁ É ÐÅÒÅÊÔÉ Ë ÎÅÍÕ"
+
+#: info/session.c:2971
+msgid "Find file: "
+msgstr "ïÂÒÁÔÉÔØÓÑ Ë ÆÁÊÌÕ: "
+
+#: info/session.c:2988
+#, fuzzy, c-format
+msgid "Cannot find `%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ \"%s\"."
+
+#: info/session.c:3033 info/session.c:3154
+#, fuzzy, c-format
+msgid "Could not create output file `%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ \"%s\"."
+
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
+msgid "Done."
+msgstr "úÁ×ÅÒÛÅÎÏ."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
+#, fuzzy, c-format
+msgid "Writing node %s..."
+msgstr "úÁÐÉÓØ ÎÏÄÙ \"%s\"..."
+
+#: info/session.c:3180
+msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
+msgstr "îÁÐÒÁ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÜÔÏÊ ÎÏÄÙ ÎÁ ×ÈÏÄ ËÏÍÁÎÄÙ INFO_PRINT_COMMAND"
+
+#: info/session.c:3216
+#, fuzzy, c-format
+msgid "Cannot open pipe to `%s'."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÎÁÌ Ë \"%s\"."
+
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
+#, fuzzy, c-format
+msgid "Printing node %s..."
+msgstr "ðÅÞÁÔØ ÎÏÄÙ \"%s\"..."
+
+#: info/session.c:3464
+#, fuzzy, c-format
+msgid "Searching subfile %s ..."
+msgstr "ðÏÉÓË × ÆÁÊÌÅ \"%s\"..."
+
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
+msgstr "óÞÉÔÁÔØ ÓÔÒÏËÕ É ÚÁÐÕÓÔÉÔØ ÒÅÇÉÓÔÒÏÚÁ×ÉÓÉÍÙÊ ÐÏÉÓË"
+
+#: info/session.c:3523
+msgid "Read a string and search for it"
+msgstr "óÞÉÔÁÔØ ÓÔÒÏËÕ É ÚÁÐÕÓÔÉÔØ ÐÏÉÓË"
+
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr "óÞÉÔÁÔØ ÓÔÒÏËÕ É ÚÁÐÕÓÔÉÔØ ÐÏÉÓË × ÏÂÒÁÔÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ"
+
+#: info/session.c:3573
+#, c-format
+msgid "%s%sfor string [%s]: "
+msgstr "%s%s ÓÔÒÏËÉ [%s]: "
+
+#: info/session.c:3574
+msgid "Search backward"
+msgstr "ïÂÒÁÔÎÙÊ ÐÏÉÓË"
+
+#: info/session.c:3574
+msgid "Search"
+msgstr "ðÏÉÓË"
+
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr " c ÕÞÅÔÏÍ ÒÅÇÉÓÔÒÁ "
+
+#: info/session.c:3575
+msgid " "
+msgstr ""
+
+#: info/session.c:3615
+msgid "Search failed."
+msgstr "îÅ ÎÁÊÄÅÎÏ"
+
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr "ðÏ×ÔÏÒÉÔØ ÐÏÓÌÅÄÎÉÊ ÐÏÉÓË × ÔÏÍ ÖÅ ÎÁÐÒÁ×ÌÅÎÉÉ"
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr "îÅÔ ÓÔÒÏËÉ ÐÒÅÄÙÄÕÝÅÇÏ ÐÏÉÓËÁ"
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr "ðÏ×ÔÏÒÉÔØ ÐÏÓÌÅÄÎÉÊ ÐÏÉÓË × ÏÂÒÁÔÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ"
+
+#: info/session.c:3661 info/session.c:3667
+msgid "Search interactively for a string as you type it"
+msgstr "úÁÐÕÓÔÉÔØ ÉÎÔÅÒÁËÔÉ×ÎÙÊ ÎÁÒÁÝÉ×ÁÅÍÙÊ ÐÏÉÓË"
+
+#: info/session.c:3761
+msgid "I-search backward: "
+msgstr "îÁÒÁÝÉ×ÁÅÍÙÊ ÏÂÒÁÔÎÙÊ ÐÏÉÓË: "
+
+#: info/session.c:3763
+msgid "I-search: "
+msgstr "îÁÒÁÝÉ×ÁÅÍÙÊ ÐÏÉÓË: "
+
+#: info/session.c:3788
+msgid "Failing "
+msgstr "îÅ ÎÁÊÄÅÎÏ. "
+
+#: info/session.c:4244
+msgid "Move to the previous cross reference"
+msgstr "óÍÅÓÔÉÔØÓÑ Ë ÐÒÅÄÙÄÕÝÅÊ ÓÓÙÌËÅ"
+
+#: info/session.c:4253
+msgid "Move to the next cross reference"
+msgstr "óÍÅÓÔÉÔØÓÑ Ë ÓÌÅÄÕÀÝÅÊ ÓÓÙÌËÅ"
+
+#: info/session.c:4263
+msgid "Select reference or menu item appearing on this line"
+msgstr "÷ÙÂÒÁÔØ ÓÓÙÌËÕ ÉÌÉ ÐÕÎËÔ ÍÅÎÀ, ÎÁÈÏÄÑÝÉÊÓÑ ÎÁ ÄÁÎÎÏÊ ÓÔÒÏËÅ"
+
+#. ****************************************************************
+#.
+#. Miscellaneous Info Commands
+#.
+#. ****************************************************************
+#. What to do when C-g is pressed in a window.
+#: info/session.c:4285
+msgid "Cancel current operation"
+msgstr "ïÔÍÅÎÉÔØ ×ÙÐÏÌÎÅÎÉÅ ÔÅËÕÝÅÊ ËÏÍÁÎÄÙ"
+
+#: info/session.c:4292
+msgid "Quit"
+msgstr "÷ÙÈÏÄ"
+
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
+msgstr "ðÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ Ë ÚÁÄÁÎÎÏÊ ÓÔÒÏËÅ ÏËÎÁ"
+
+#. Clear the screen and redraw its contents. Given a numeric argument,
+#. move the line the cursor is on to the COUNT'th line of the window.
+#: info/session.c:4333
+msgid "Redraw the display"
+msgstr "ðÅÒÅÒÉÓÏ×ÁÔØ ÜËÒÁÎ"
+
+#. This command does nothing. It is the fact that a key is bound to it
+#. that has meaning. See the code at the top of info_session ().
+#: info/session.c:4370
+msgid "Quit using Info"
+msgstr "÷ÙÊÔÉ ÉÚ Info"
+
+#: info/session.c:4393
+#, c-format
+msgid "Unknown command (%s)."
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ËÏÍÁÎÄÁ (%s)."
+
+#: info/session.c:4396
+msgid "\"\" is invalid"
+msgstr "\"\" ÎÅ×ÅÒÎÁÑ ËÏÍÁÎÄÁ"
+
+#: info/session.c:4397
+#, c-format
+msgid "\"%s\" is invalid"
+msgstr "\"%s\" ÎÅ×ÅÒÎÁÑ ËÏÍÁÎÄÁ"
+
+#: info/session.c:4620
+msgid "Add this digit to the current numeric argument"
+msgstr "äÏÂÁ×ÌÑÅÔ ÃÉÆÒÕ Ë ÔÅËÕÝÅÍÕ ÞÉÓÌÏ×ÏÍÕ ÁÒÇÕÍÅÎÔÕ"
+
+#: info/session.c:4629
+msgid "Start (or multiply by 4) the current numeric argument"
+msgstr "îÁÞÁÔØ (ÉÌÉ ÕÍÎÏÖÉÔØ ÎÁ 4) ÔÅËÕÝÉÊ ÞÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ"
+
+#: info/session.c:4644
+msgid "Internally used by \\[universal-argument]"
+msgstr "éÓÐÏÌØÚÕÅÔÓÑ ÆÕÎËÃÉÅÊ \\[universal-argument]"
+
+#: info/tilde.c:344
+msgid "readline: Out of virtual memory!\n"
+msgstr "readline: ÷ÉÒÔÕÁÌØÎÁÑ ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ!\n"
+
+#: info/variables.c:40
+msgid "When \"On\", footnotes appear and disappear automatically"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ÓÎÏÓËÉ ÐÏÑ×ÌÑÀÔÓÑ É ÉÓÞÅÚÁÀÔ Á×ÔÏÍÁÔÉÞÅÓËÉ"
+
+#: info/variables.c:44
+msgid "When \"On\", creating or deleting a window resizes other windows"
+msgstr ""
+"åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ÓÏÚÄÁÎÉÅ ÉÌÉ ÕÄÁÌÅÎÉÅ ÏËÎÁ ÉÚÍÅÎÑÅÔ ÒÁÚÍÅÒ ÄÒÕÇÉÈ "
+"ÏËÏÎ"
+
+#: info/variables.c:48
+msgid "When \"On\", flash the screen instead of ringing the bell"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ×ÍÅÓÔÏ Ú×ÕËÏ×ÏÇÏ ÓÉÇÎÁÌÁ ÍÉÇÁÅÔ ÜËÒÁÎ"
+
+#: info/variables.c:52
+msgid "When \"On\", errors cause the bell to ring"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ÏÛÉÂËÉ ×ÙÚÙ×ÁÀÔ Ú×ÕËÏ×ÏÊ ÓÉÇÎÁÌ"
+
+#: info/variables.c:56
+msgid "When \"On\", Info garbage collects files which had to be uncompressed"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ÐÒÏÉÚ×ÏÄÉÔØ ÓÂÏÒËÕ ÍÕÓÏÒÁ ÄÌÑ ÓÖÁÔÙÈ ÆÁÊÌÏ×"
+
+#: info/variables.c:59
+msgid "When \"On\", the portion of the matched search string is highlighted"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), ×ÙÄÅÌÑÔØ ÐÒÉ ÐÏÉÓËÅ ÓÏ×ÐÁ×ÛÕÀ ÓÔÒÏËÕ"
+
+#: info/variables.c:63
+msgid "Controls what happens when scrolling is requested at the end of a node"
+msgstr "ïÐÒÅÄÅÌÑÅÔ ÐÏ×ÅÄÅÎÉÅ ÐÒÏËÒÕÔËÉ × ËÏÎÃÅ ÎÏÄÙ"
+
+#: info/variables.c:67
+msgid "The number lines to scroll when the cursor moves out of the window"
+msgstr "þÉÓÌÏ ÐÒÏËÒÕÞÉ×ÁÅÍÙÈ ÓÔÒÏË, ËÏÇÄÁ ËÕÒÓÏÒ ÐÅÒÅÍÅÝÁÅÔÓÑ ÚÁ ÐÒÅÄÅÌÙ ÏËÎÁ"
+
+#: info/variables.c:71
+msgid "When \"On\", Info accepts and displays ISO Latin characters"
+msgstr "åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ (\"On\"), Info ÏÔÏÂÒÁÖÁÅÔ ÓÉÍ×ÏÌÙ ISO Latin"
+
+#: info/variables.c:77
+msgid "Explain the use of a variable"
+msgstr "ïÐÉÓÁÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ"
+
+#. Get the variable's name.
+#: info/variables.c:83
+msgid "Describe variable: "
+msgstr "ïÐÉÓÁÔØ ÐÅÒÅÍÅÎÎÕÀ: "
+
+#: info/variables.c:102
+msgid "Set the value of an Info variable"
+msgstr "õÓÔÁÎÏ×ÉÔØ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ"
+
+#. Get the variable's name and value.
+#: info/variables.c:108
+msgid "Set variable: "
+msgstr "õÓÔÁÎÏ×ÉÔØ ÐÅÒÅÍÅÎÎÕÀ: "
+
+#: info/variables.c:126
+#, c-format
+msgid "Set %s to value (%d): "
+msgstr "õÓÔÁÎÏ×ÉÔØ ÚÎÁÞÅÎÉÅ %s ÒÁ×ÎÙÍ (%d): "
+
+#: info/variables.c:167
+#, c-format
+msgid "Set %s to value (%s): "
+msgstr "õÓÔÁÎÏ×ÉÔØ ÚÎÁÞÅÎÉÅ %s ÒÁ×ÎÙÍ (%s): "
+
+#: info/window.c:1101
+msgid "--*** Tags out of Date ***"
+msgstr "--*** ôÅÇÉ ÕÓÔÁÒÅÌÉ ***"
+
+#. strlen (location_indicator).
+#. 10 for the decimal representation of the number of lines in this
+#. node, and the remainder of the text that can appear in the line.
+#: info/window.c:1112
+msgid "-----Info: (), lines ----, "
+msgstr "-----Info: (), ÓÔÒÏË ----, "
+
+#: info/window.c:1119
+#, c-format
+msgid "-%s---Info: %s, %d lines --%s--"
+msgstr "-%s---Info: %s, ÓÔÒÏË: %d --%s--"
+
+#: info/window.c:1123
+#, c-format
+msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
+msgstr "-%s%s-Info: (%s)%s, ÓÔÒÏË: %d --%s--"
+
+#: info/window.c:1130
+#, c-format
+msgid " Subfile: %s"
+msgstr " æÁÊÌ: %s"
+
+#: lib/getopt.c:680
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
+
+#: lib/getopt.c:704
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: lib/getopt.c:709
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: lib/getopt.c:726 lib/getopt.c:899
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ c ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#. --option
+#: lib/getopt.c:755
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
+
+#. +option or -option
+#: lib/getopt.c:759
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:785
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
+
+#: lib/getopt.c:788
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
+
+#. 1003.2 specifies the format of this message.
+#: lib/getopt.c:818 lib/getopt.c:948
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ËÌÀÞ %c ÄÏÌÖÅÎ ÂÙ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ c ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#: lib/getopt.c:865
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `-W %s'\n"
+
+#: lib/getopt.c:883
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: makeinfo/cmds.c:447
+msgid "January"
+msgstr "ÑÎ×ÁÒÑ"
+
+#: makeinfo/cmds.c:447
+msgid "February"
+msgstr "ÆÅ×ÒÁÌÑ"
+
+#: makeinfo/cmds.c:447
+msgid "March"
+msgstr "ÍÁÒÔÁ"
+
+#: makeinfo/cmds.c:447
+msgid "April"
+msgstr "ÁÐÒÅÌÑ"
+
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr "ÍÁÑ"
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr "ÉÀÎÑ"
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr "ÉÀÌÑ"
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr "Á×ÇÕÓÔÁ"
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr "ÓÅÎÔÑÂÒÑ"
+
+#: makeinfo/cmds.c:448
+msgid "October"
+msgstr "ÏËÔÑÂÒÑ"
+
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr "ÎÏÑÂÒÑ"
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr "ÄÅËÁÂÒÑ"
+
+#: makeinfo/cmds.c:571
+#, c-format
+msgid "unlikely character %c in @var"
+msgstr "ÍÁÌÏ×ÅÒÏÑÔÎÙÊ ÚÎÁË %c × @var"
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
+msgstr "×ÅÓØ ÁÒÇÕÍÅÎÔ @sc ÎÁÂÒÁÎ ÚÁÇÌÁ×ÎÙÍÉ ÂÕË×ÁÍÉ, ÒÅÚÕÌØÔÁÔÁ ÎÅ ÂÕÄÅÔ"
+
+#: makeinfo/cmds.c:754
+#, c-format
+msgid "%c%s is obsolete"
+msgstr "ëÏÍÁÎÄÁ %c%s ÕÓÔÁÒÅÌÁ É ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
+
+#: makeinfo/cmds.c:814
+#, c-format
+msgid "@sp requires a positive numeric argument, not `%s'"
+msgstr "ËÏÍÁÎÄÅ @sp ÎÕÖÎÏ ÕËÁÚÁÔØ ÐÏÌÏÖÉÔÅÌØÎÙÊ ÞÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ, Á ÎÅ `%s'"
+
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
+#, c-format
+msgid "Bad argument to %c%s"
+msgstr "ðÌÏÈÏÊ ÁÒÇÕÍÅÎÔ ÄÌÑ %c%s"
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr ""
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr ""
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr "÷ ÁÒÇÕÍÅÎÔÅ @def ÐÒÏÐÕÝÅÎÁ `}'"
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr "æÕÎËÃÉÑ"
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr "íÁËÒÏ"
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr "óÐÅÃÉÁÌØÎÁÑ ÆÏÒÍÁ"
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr "ðÅÒÅÍÅÎÎÁÑ"
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr "ðÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÐÁÒÁÍÅÔÒ"
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr "ðÅÒÅÍÅÎÎÁÑ ÜËÚÅÍÐÌÑÒÁ"
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr "íÅÔÏÄ"
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr "ÉÚ"
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
+msgstr "ÎÁÄ"
+
+#: makeinfo/defun.c:656
+#, c-format
+msgid "Must be in `%s' insertion to use `%sx'"
+msgstr "ëÏÍÁÎÄÕ `%sx' ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ×Ï ×ÓÔÁ×ËÅ `%s'"
+
+#: makeinfo/files.c:460
+#, c-format
+msgid "%s: getwd: %s, %s\n"
+msgstr ""
+
+#: makeinfo/footnote.c:149
+#, c-format
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgstr "`%c%s' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ `{...}', Á ÎÅ ÐÒÏÓÔÏ `%s'"
+
+#: makeinfo/footnote.c:164
+#, c-format
+msgid "No closing brace for footnote `%s'"
+msgstr "äÌÑ ÓÎÏÓËÉ `%s' ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÊ ÆÉÇÕÒÎÏÊ ÓËÏÂËÉ"
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr "óÎÏÓËÁ ÏÐÒÅÄÅÌÅÎÁ ÂÅÚ ÒÏÄÉÔÅÌØÓËÏÊ ÎÏÄÙ"
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr "óÎÏÓËÉ"
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
+msgstr "âÅÚ ÚÁÇÏÌÏ×ËÁ"
+
+#: makeinfo/index.c:212
+#, c-format
+msgid "Unknown index `%s'"
+msgstr "éÍÅÎÎÏÊ ÕËÁÚÁÔÅÌØ `%s' ÎÅÉÚ×ÅÓÔÅÎ"
+
+#: makeinfo/index.c:382
+#, c-format
+msgid "Index `%s' already exists"
+msgstr "éÍÅÎÎÏÊ ÕËÁÚÁÔÅÌØ `%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#: makeinfo/index.c:425
+#, c-format
+msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgstr "îÅÉÚ×ÅÓÔÅÎ ÉÍÅÎÎÏÊ ÕËÁÚÁÔÅÌØ `%s' É/ÉÌÉ `%s' × @synindex"
+
+#: makeinfo/index.c:642
+#, c-format
+msgid "Unknown index `%s' in @printindex"
+msgstr "îÅÉÚ×ÅÓÔÅÎ ÉÍÅÎÎÏÊ ÕËÁÚÁÔÅÌØ `%s' × @printindex"
+
+#: makeinfo/index.c:680
+#, c-format
+msgid "Entry for index `%s' outside of any node"
+msgstr "÷ÈÏÖÄÅÎÉÅ ÄÌÑ ÉÍÅÎÎÏÇÏ ÕËÁÚÁÔÅÌÑ `%s' ×ÎÅ ÎÏÄÙ"
+
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr "(×ÎÅ ËÁËÏÊ-ÌÉÂÏ ÎÏÄÙ)"
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr "Broken-Type × insertion_type_pname"
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr "ðÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ ÐÅÒÅÞÉÓÌÅÎÉÑ"
+
+#: makeinfo/insertion.c:297
+#, c-format
+msgid "lettering overflow, restarting at %c"
+msgstr "ÚÁËÏÎÞÉÌÓÑ ÁÌÆÁ×ÉÔ, ×ÏÚ×ÒÁÔ ÎÁ %c"
+
+#: makeinfo/insertion.c:481
+#, c-format
+msgid "%s requires an argument: the formatter for %citem"
+msgstr "%s ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ c ÁÒÇÕÍÅÎÔÏÍ: ÆÏÒÍÁÔÏÍ ÄÌÑ %citem"
+
+#: makeinfo/insertion.c:623
+#, c-format
+msgid "`@end' expected `%s', but saw `%s'"
+msgstr "ÏÖÉÄÁÌÏÓØ `@end' Ó `%s', ×ÓÔÒÅÞÅÎÏ `%s'"
+
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
+msgstr "îÅÔ ÐÁÒÎÏÊ `%cend %s'"
+
+#: makeinfo/insertion.c:902
+#, c-format
+msgid "%s requires letter or digit"
+msgstr "%s ÔÒÅÂÕÅÔ ÂÕË×Ù ÉÌÉ ÃÉÆÒÙ"
+
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
+msgstr "@menu ×ÓÔÒÅÞÅÎÏ ÐÅÒÅÄ ÐÅÒ×ÏÊ @node, ÂÕÄÅÔ ÓÏÚÄÁÎÁ ÎÏÄÁ `Top'"
+
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
+msgstr ""
+"×ÅÒÏÑÔÎÏ, ×ÁÛÁ ÎÏÄÁ @top ÄÏÌÖÎÁ ÂÙÔØ × ÂÌÏËÅ @ifnottex, Á ÎÅ × @ifinfo?"
+
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
+msgstr "@detailmenu ×ÓÔÒÅÞÅÎÏ ÐÅÒÅÄ ÐÅÒ×ÏÊ @node, ÂÕÄÅÔ ÓÏÚÄÁÎÁ ÎÏÄÁ `Top'"
+
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
+msgstr "îÅÐÁÒÎÁÑ `%c%s'"
+
+#: makeinfo/insertion.c:1081
+#, c-format
+msgid "`%c%s' needs something after it"
+msgstr "ðÏÓÌÅ `%c%s' ÄÏÌÖÎÏ ÞÔÏ-ÔÏ ÉÄÔÉ"
+
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
+msgstr "ðÌÏÈÏÊ ÁÒÇÕÍÅÎÔ `%s', `%s', ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ `%s'"
+
+#: makeinfo/insertion.c:1175
+#, c-format
+msgid "@%s not meaningful inside `@%s' block"
+msgstr "@%s ÎÅ ÉÍÅÅÔ ÓÍÙÓÌÁ ×ÎÕÔÒÉ ÂÌÏËÁ `@%s'"
+
+#: makeinfo/insertion.c:1184
+#, c-format
+msgid "@itemx not meaningful inside `%s' block"
+msgstr "@itemx ÎÅ ÉÍÅÅÔ ÓÍÙÓÌÁ ×ÎÕÔÒÉ ÂÌÏËÁ `%s'"
+
+#: makeinfo/insertion.c:1357
+#, c-format
+msgid "%c%s found outside of an insertion block"
+msgstr "%c%s ×ÓÔÒÅÞÅÎÁ ×ÎÅ ÂÌÏËÁ ×ÓÔÁ×ËÉ"
+
+#: makeinfo/lang.c:199
+#, c-format
+msgid "%s is not a valid ISO 639 language code"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ËÏÄÏÍ ÑÚÙËÁ ÉÚ ISO 639"
+
+#. This error message isn't perfect if the argument is multiple
+#. characters, but it doesn't seem worth getting right.
+#: makeinfo/lang.c:406
+#, c-format
+msgid "%c%s expects `i' or `j' as argument, not `%c'"
+msgstr "%c%s ÏÖÉÄÁÅÔ × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÁ `i' ÉÌÉ `j', Á ÎÅ `%c'"
+
+#: makeinfo/lang.c:410
+#, c-format
+msgid "%c%s expects a single character `i' or `j' as argument"
+msgstr "%c%s ÏÖÉÄÁÅÔ × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÁ ÏÄÉÎ ÓÉÍ×ÏÌ `i' ÉÌÉ `j'"
+
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
+msgstr "ÍÁËÒÏ `%s' ÂÙÌÏ ÏÐÒÅÄÅÌÅÎÏ ÒÁÎØÛÅ"
+
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
+msgstr "ÍÅÓÔÏ ÐÒÅÄÙÄÕÝÅÇÏ ÏÐÒÅÄÅÌÅÎÉÑ `%s'"
+
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
+msgstr "ÐÏÓÌÅ \\ × ÒÁÓËÒÙÔÉÉ ÍÁËÒÏ ÓÔÏÉÔ `%s', Á ÎÅ \\ ÉÌÉ ÉÍÑ ÐÁÒÁÍÅÔÒÁ"
+
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
+msgstr "íÁËÒÏ `%s' ×ÙÚ×ÁÎÏ ÎÁ ÓÔÒÏËÅ %d Ó ÉÚÌÉÛÎÉÍÉ ÁÒÇÕÍÅÎÔÁÍÉ"
+
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
+msgstr "ÎÅ ×ÓÔÒÅÞÅÎÏ %cend macro"
+
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
+msgstr "@quote-arg ÐÏÌÅÚÎÁ, ÔÏÌØËÏ ÅÓÌÉ ÍÁËÒÏ ÐÒÉÎÉÍÁÅÔ ÏÄÉÎ ÁÒÇÕÍÅÎÔ"
+
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
+msgstr "ÎÅÐÁÒÎÙÅ @end %s É @%s"
+
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
+msgstr "%s:%d: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÛÉÂÏË! ïÓÔÁÎÏ×ËÁ.\n"
+
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
+msgstr "úÄÅÓØ ÎÅ ÄÏÌÖÎÏ ÂÙÔØ %c"
+
+#: makeinfo/makeinfo.c:362
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\n"
+
+#: makeinfo/makeinfo.c:365
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:391
+#, fuzzy, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+" --ifhtml ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @ifhtml É "
+"@html,\n"
+" ÄÁÖÅ ÐÒÉ ×Ù×ÏÄÅ ÎÅ × ÆÏÒÍÁÔÅ HTML.\n"
+" --ifinfo ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @ifinfo, ÄÁÖÅ "
+"ÐÒÉ\n"
+" ×Ù×ÏÄÅ × ÆÏÒÍÁÔÅ HTML.\n"
+" --iftex ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @iftex É @tex.\n"
+" --macro-expand, -E æáêì ×Ù×ÅÓÔÉ × æáêì ÐÅÒ×ÏÎÁÞÁÌØÎÙÊ Texinfo-ÆÁÊÌ Ó\n"
+" ÒÁÓËÒÙÔÙÍÉ ÍÁËÒÏÓÁÍÉ.\n"
+" --no-headers ÎÅ ×Ù×ÏÄÉÔØ ÒÁÚÄÅÌÉÔÅÌÉ ÎÏÄ Info É ÓÔÒÏËÉ Node:;\n"
+" ÐÉÓÁÔØ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ, ÅÓÌÉ ÎÅ ÚÁÄÁÎ "
+"ËÌÀÞ\n"
+" --output.\n"
+" --no-ifhtml ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @ifhtml É "
+"@html.\n"
+" --no-ifinfo ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @ifinfo.\n"
+" --no-iftex ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÅËÓÔ ×ÎÕÔÒÉ ÂÌÏËÏ× @iftex É "
+"@tex.\n"
+" --no-split ÐÏÄÁ×ÉÔØ ÒÁÚÂÉÅÎÉÅ ÂÏÌØÛÉÈ Info-ÆÁÊÌÏ× ÉÌÉ "
+"ÓÏÚÄÁÎÉÅ\n"
+" ÏÄÎÏÇÏ HTML-ÆÁÊÌÁ ÎÁ ËÁÖÄÕÀ ÎÏÄÕ.\n"
+" --no-validate ÎÅ ÐÒÏÉÚ×ÏÄÉÔØ ÐÒÏ×ÅÒËÕ ÐÅÒÅËÒÅÓÔÎÙÈ ÓÓÙÌÏË.\n"
+" --no-warn ÎÅ ÐÏËÁÚÙ×ÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ (ÎÏ ÎÅ ÏÛÉÂËÉ).\n"
+" --number-sections ×ËÌÀÞÁÔØ × ×Ù×ÏÄ ÎÏÍÅÒÁ ÇÌÁ×, ÒÁÚÄÅÌÏ× É "
+"ÐÒÉÌÏÖÅÎÉÊ.\n"
+" --output=æáêì, -o æáêì ×Ù×ÏÄÉÔØ × æáêì, ÉÇÎÏÒÉÒÕÑ @setfilename.\n"
+" --paragraph-indent=î ÄÅÌÁÔØ ÏÔÓÔÕÐÙ ÛÉÒÉÎÏÊ î ÐÒÏÂÅÌÏ× (ÐÏ ÕÍÏÌÞÁÎÉÀ "
+"%d).\n"
+" åÓÌÉ î ÒÁ×ÎÏ `none', ÎÅ ÄÅÌÁÔØ ÏÔÓÔÕÐÙ, ÅÓÌÉ\n"
+" `asis', ÓÏÈÒÁÎÑÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÏÔÓÔÕÐÙ.\n"
+" --reference-limit=î ÍÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ÓÓÙÌÏË, ÎÅ ×ÙÚÙ×ÁÀÝÅÅ\n"
+" ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ (ÐÏ ÕÍÏÌÞÁÎÉÀ %d).\n"
+" -v, --verbose ÐÏÑÓÎÑÔØ ÄÅÊÓÔ×ÉÑ.\n"
+" --version ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ.\n"
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÏÂÒÁÂÏÔËÁ ÕÓÌÏ×ÎÙÈ ËÏÍÁÎÄ @if... ÚÁ×ÉÓÉÔ ÏÔ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ: "
+"ÐÒÉ\n"
+"×Ù×ÏÄÅ × ÆÏÒÍÁÔÅ HTML ×ËÌÀÞÅÎ --ifhtml É ×ÙËÌÀÞÅÎÙ ÏÓÔÁÌØÎÙÅ; ÐÒÉ ×Ù×ÏÄÅ ×\n"
+"ÆÏÒÍÁÔÅ Info ÉÌÉ ÐÒÏÓÔÏÇÏ ÔÅËÓÔÁ, ×ËÌÀÞÅÎ --ifinfo É ×ÙËÌÀÞÅÎÙ ÏÓÔÁÌØÎÙÅ.\n"
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" makeinfo foo.texi ÚÁÐÉÓÁÔØ Info × @setfilename ÉÚ foo\n"
+" makeinfo --html foo.texi ÚÁÐÉÓÁÔØ HTML × @setfilename ÉÚ foo\n"
+" makeinfo --no-headers -o - foo.texi ÚÁÐÉÓÁÔØ ÐÒÏÓÔÏÊ ÔÅËÓÔ ÎÁ "
+"ÓÔÁÎÄÁÒÔÎÙÊ\n"
+" ×Ù×ÏÄ\n"
+" makeinfo --number-sections foo.texi ÚÁÐÉÓÁÔØ Info Ó ÎÕÍÅÒÏ×ÁÎÎÙÍÉ "
+"ÒÁÚÄÅÌÁÍÉ\n"
+" makeinfo --no-split foo.texi ÚÁÐÉÓÁÔØ ÏÄÉÎ ÂÏÌØÛÏÊ Info\n"
+"\n"
+"ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ bug-texinfo@gnu.org,\n"
+"ÏÂÝÅÅ ÏÂÓÕÖÄÅÎÉÅ É ×ÏÐÒÏÓÙ ÎÁÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ help-texinfo@gnu.org."
+
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
+#, c-format
+msgid "%s: %s arg must be numeric, not `%s'.\n"
+msgstr "%s: %s ÁÒÇÕÍÅÎÔ ÄÏÌÖÅÎ ÂÙÔØ ÞÉÓÌÏ×ÙÍ, ÎÅ `%s'.\n"
+
+#: makeinfo/makeinfo.c:521
+#, c-format
+msgid "Couldn't open macro expansion output `%s'"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÍÁËÒÏÒÁÓÛÉÒÅÎÉÑ `%s'"
+
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
+msgstr "íÏÖÎÏ ÚÁÄÁÔØ ÔÏÌØËÏ ÏÄÉÎ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÍÁËÒÏÒÁÓÛÉÒÅÎÉÑ"
+
+#: makeinfo/makeinfo.c:561
+#, c-format
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgstr ""
+"%s: ÁÒÇÕÍÅÎÔ --paragraph-indent ÄÏÌÖÅÎ ÂÙÔØ ÞÉÓÌÏ×ÙÍ, ÉÌÉ\n"
+"`none', ÉÌÉ `asis'; ÎÅ `%s'.\n"
+
+#: makeinfo/makeinfo.c:602
+#, c-format
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgstr ""
+"%s: ÁÒÇÕÍÅÎÔ --footnote-style ÄÏÌÖÅÎ ÂÙÔØ `separate' ÉÌÉ `end'; Á ÎÅ `%s'.\n"
+
+#: makeinfo/makeinfo.c:647
+#, c-format
+msgid "%s: missing file argument.\n"
+msgstr "%s: ÐÒÏÐÕÝÅÎ ÁÒÇÕÍÅÎÔ, ÚÁÄÁÀÝÉÊ ÆÁÊÌ.\n"
+
+#: makeinfo/makeinfo.c:810
+#, c-format
+msgid "Expected `%s'"
+msgstr "ïÖÉÄÁÅÔÓÑ `%s'"
+
+#: makeinfo/makeinfo.c:1229
+#, c-format
+msgid "No `%s' found in `%s'"
+msgstr "`%s' ÎÅ ÎÁÊÄÅÎ × `%s'"
+
+#: makeinfo/makeinfo.c:1306
+#, c-format
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgstr ""
+"%s: òÁÓËÒÙÔÉÅ ÍÁËÒÏÓÏ× × ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÎÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ,\n"
+"ÔÁË ËÁË ÔÕÄÁ ÎÁÐÒÁ×ÌÅÎ ×Ù×ÏÄ × ÆÏÒÍÁÔÅ Info.\n"
+
+#: makeinfo/makeinfo.c:1327
+#, c-format
+msgid "Making %s file `%s' from `%s'.\n"
+msgstr "óÏÚÄÁÎÉÅ %s-ÆÁÊÌÁ `%s' ÉÚ `%s'.\n"
+
+#: makeinfo/makeinfo.c:1358
+#, c-format
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
+msgstr "üÔÏ %s, ÓÏÚÄÁÎÎÙÊ makeinfo ×ÅÒÓÉÉ %s ÉÚ %s.\n"
+
+#: makeinfo/makeinfo.c:1377
+#, c-format
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: õÄÁÌÅÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ ÍÁËÒÏÒÁÓÛÉÒÅÎÉÊ `%s' -- ÂÙÌÉ ÏÛÉÂËÉ;\n"
+"ÉÓÐÏÌØÚÕÊÔÅ --force, ÞÔÏÂÙ ÐÒÉÎÕÄÉÔÅÌØÎÏ ÓÏÈÒÁÎÉÔØ ÒÅÚÕÌØÔÁÔÙ.\n"
+
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
+#, c-format
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgstr ""
+"%s: õÄÁÌÅÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ `%s' -- ÂÙÌÉ ÏÛÉÂËÉ;\n"
+"ÉÓÐÏÌØÚÕÊÔÅ --force, ÞÔÏÂÙ ÐÒÉÎÕÄÉÔÅÌØÎÏ ÓÏÈÒÁÎÉÔØ ÒÅÚÕÌØÔÁÔÙ.\n"
+
+#: makeinfo/makeinfo.c:1635
+#, c-format
+msgid "Unknown command `%s'"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ËÏÍÁÎÄÁ `%s'"
+
+#: makeinfo/makeinfo.c:1657
+#, c-format
+msgid "Use braces to give a command as an argument to @%s"
+msgstr ""
+"éÓÐÏÌØÚÕÊÔÅ ÆÉÇÕÒÎÙÅ ÓËÏÂËÉ, ÞÔÏÂÙ ÐÅÒÅÄÁÔØ @%s ËÏÍÁÎÄÕ × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÁ"
+
+#: makeinfo/makeinfo.c:1838
+#, c-format
+msgid "%c%s expected `{...}'"
+msgstr "%c%s ÐÏÄÒÁÚÕÍÅ×ÁÅÔ `{...}'"
+
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
+msgstr "îÅÐÁÒÎÁÑ }"
+
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
+msgstr "âåú_éíåîé!"
+
+#: makeinfo/makeinfo.c:1940
+#, c-format
+msgid "%c%s missing close brace"
+msgstr "%c%s ÐÒÏÐÕÝÅÎÁ ÚÁËÒÙ×ÁÀÝÁÑ ÓËÏÂËÁ"
+
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
+msgstr "ÓÍÏÔÒÉÔÅ "
+
+#: makeinfo/makeinfo.c:2707
+msgid "See "
+msgstr "óÍÏÔÒÉÔÅ "
+
+#: makeinfo/makeinfo.c:2836
+#, c-format
+msgid "`.' or `,' must follow cross reference, not %c"
+msgstr "ÐÏÓÌÅ ÓÓÙÌËÉ ÄÏÌÖÎÙ ÓÌÅÄÏ×ÁÔØ `.' ÉÌÉ `,', ×ÓÔÒÅÞÅÎÏ %c"
+
+#: makeinfo/makeinfo.c:3026
+#, c-format
+msgid "No .png or .jpg for `%s'"
+msgstr "äÌÑ `%s' ÎÅ ÎÁÊÄÅÎ .png ÉÌÉ .jpg"
+
+#: makeinfo/makeinfo.c:3063
+#, c-format
+msgid "@image file `%s' unreadable: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ @image ÆÁÊÌ `%s': %s"
+
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
+msgstr "ÐÏÓÌÅ @image ÐÒÏÐÕÝÅÎ ÁÒÇÕÍÅÎÔ ÚÁÄÁÀÝÉÊ ÆÁÊÌ "
+
+#: makeinfo/makeinfo.c:3259
+#, c-format
+msgid "{No value for `%s'}"
+msgstr "{úÎÁÞÅÎÉÅ `%s' ÎÅ ÚÁÄÁÎÏ}"
+
+#: makeinfo/makeinfo.c:3313
+#, c-format
+msgid "%c%s requires a name"
+msgstr "ËÏÍÁÎÄÅ %c%s ÎÕÖÎÏ ÕËÁÚÁÔØ ÉÍÑ"
+
+#: makeinfo/makeinfo.c:3421
+#, c-format
+msgid "Reached eof before matching @end %s"
+msgstr "ëÏÎÅà ÆÁÊÌÁ ÒÁÎØÛÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ËÏÍÁÎÄÙ @end %s"
+
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
+msgstr "÷ ÛÁÂÌÏÎÅ @multitable ÐÒÏÐÕÝÅÎÁ `}'"
+
+#: makeinfo/multi.c:284
+#, c-format
+msgid "ignoring stray text `%s' after @multitable"
+msgstr "ÔÅËÓÔ `%s' ÐÏÓÌÅ @multitable ÉÇÎÏÒÉÒÏ×ÁÎ"
+
+#: makeinfo/multi.c:357
+#, c-format
+msgid "Too many columns in multitable item (max %d)"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ËÏÌÏÎÏË × ÜÌÅÍÅÎÔÅ ÔÁÂÌÉÃÙ (ÍÁËÓÉÍÕÍ %d)"
+
+#: makeinfo/multi.c:401
+#, c-format
+msgid "Cannot select column #%d in multitable"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÂÒÁÔØ ËÏÌÏÎËÕ %d × ÔÁÂÌÉÃÅ"
+
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
+msgstr "@tab ×ÎÅ ÔÁÂÌÉÃÙ ÉÇÎÏÒÉÒÏ×ÁÎ"
+
+# ???
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
+msgstr "á ÚÁÞÅÍ Ñ ÄÏÌÖÅÎ ÜÔÏ ÐÅÒÅ×ÏÄÉÔØ?\n"
+
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
+msgstr "* ËÏÌÏÎËÁ %d: ×Ù×ÏÄ = %s\n"
+
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
+msgstr "îÏÄÁ `%s' ÂÙÌÁ ÒÁÎÅÅ ÏÐÒÅÄÅÌÅÎÁ × ÓÔÒÏËÅ %d"
+
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
+msgstr "æÏÒÍÁÔÉÒÏ×ÁÎÉÅ ÎÏÄÙ %s...\n"
+
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgstr "äÌÑ ÎÏÄÙ `%s' ÔÒÅÂÕÅÔÓÑ ËÏÍÁÎÄÁ ÏÐÉÓÁÎÉÑ ÓÔÒÕËÔÕÒÙ ÇÌÁ× (e.g. %c%s)"
+
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
+msgstr "äÌÑ ËÏÍÁÎÄÙ `%c%s' ÎÅ ÚÁÄÁÎÏ ÉÍÑ ÎÏÄÙ"
+
+#: makeinfo/node.c:774
+msgid "Node:"
+msgstr "óÌÅÄÕÀÝÁÑ:"
+
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
+msgstr "óÌÅÄÕÀÝÁÑ:"
+
+#: makeinfo/node.c:793
+msgid "Previous:"
+msgstr "ðÒÅÄÙÄÕÝÁÑ:"
+
+#: makeinfo/node.c:803
+msgid "Up:"
+msgstr "÷×ÅÒÈ:"
+
+# ÚÄÅÓØ %s ÍÏÖÅÔ ÂÙÔØ `cross' ÉÌÉ `menu'
+#: makeinfo/node.c:1012
+#, c-format
+msgid "%s reference to nonexistent node `%s'"
+msgstr "%s ÎÁ ÎÅÓÕÝÅÓÔ×ÕÀÝÕÀ ÎÏÄÕ `%s'"
+
+#: makeinfo/node.c:1029
+msgid "Menu"
+msgstr "óÓÙÌËÁ ÉÚ ÍÅÎÀ"
+
+#: makeinfo/node.c:1031
+msgid "Cross"
+msgstr "ðÅÒÅËÒÅÓÔÎÁÑ ÓÓÙÌËÁ"
+
+#: makeinfo/node.c:1115
+#, c-format
+msgid "Next field of node `%s' not pointed to"
+msgstr "îÁ ÐÏÌÅ Next ÎÏÄÙ `%s' ÎÅÔ ÓÓÙÌÏË"
+
+#: makeinfo/node.c:1119
+#, c-format
+msgid "This node (%s) has the bad Prev"
+msgstr "÷ ÜÔÏÊ ÎÏÄÅ (%s) ÎÅÐÒÁ×ÉÌØÎÙÊ ÕËÁÚÁÔÅÌØ Prev"
+
+#: makeinfo/node.c:1133
+msgid "Prev"
+msgstr "ðÒÅÄÙÄÕÝÁÑ"
+
+#: makeinfo/node.c:1176
+#, c-format
+msgid "Prev field of node `%s' not pointed to"
+msgstr "îÁ ÐÏÌÅ Prev ÎÏÄÙ `%s' ÎÅÔ ÓÓÙÌÏË"
+
+#: makeinfo/node.c:1180
+#, c-format
+msgid "This node (%s) has the bad Next"
+msgstr "÷ ÜÔÏÊ ÎÏÄÅ (%s) ÎÅÐÒÁ×ÉÌØÎÙÊ ÕËÁÚÁÔÅÌØ Next"
+
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
+msgstr "÷ ÎÏÄÅ `%s' ÎÅÔ ÐÏÌÑ Up"
+
+#: makeinfo/node.c:1197
+msgid "Up"
+msgstr "÷×ÅÒÈ"
+
+#: makeinfo/node.c:1265
+#, c-format
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
+msgstr "îÏÄÁ `%s' ÎÅ ÉÍÅÅÔ ÐÕÎËÔÁ ÍÅÎÀ ÄÌÑ `%s', ÈÏÔÑ ÎÁ ÎÅÅ ÓÓÙÌÁÅÔÓÑ ÐÏÌÅ Up"
+
+#: makeinfo/node.c:1296
+#, c-format
+msgid "node `%s' has been referenced %d times"
+msgstr "ÎÁ ÎÏÄÕ `%s' ÐÏÑ×ÉÌÏÓØ %d ÓÓÙÌÏË"
+
+#: makeinfo/node.c:1310
+#, c-format
+msgid "unreferenced node `%s'"
+msgstr "ÎÁ ÎÏÄÕ `%s' ÎÅÔ ÓÓÙÌÏË"
+
+#: makeinfo/sectioning.c:116
+#, c-format
+msgid "Appendix %c "
+msgstr "ðÒÉÌÏÖÅÎÉÅ %c "
+
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
+#, c-format
+msgid "Internal error (search_sectioning) \"%s\"!"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ (search_sectioning) \"%s\"!"
+
+#: makeinfo/sectioning.c:468
+#, c-format
+msgid "%c%s is obsolete; use %c%s instead"
+msgstr "ëÏÍÁÎÄÁ %c%s ÕÓÔÁÒÅÌÁ; ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÎÅÅ %c%s"
+
+#: makeinfo/sectioning.c:484
+#, c-format
+msgid "Node with %ctop as a section already exists"
+msgstr "îÏÄÁ Ó %ctop × ËÁÞÅÓÔ×Å ÒÁÚÄÅÌÁ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
+msgstr "úÄÅÓØ ÎÁÈÏÄÉÔÓÑ ÎÏÄÁ %ctop"
+
+#: makeinfo/sectioning.c:515
+#, c-format
+msgid "%ctop used before %cnode, defaulting to %s"
+msgstr "%ctop ×ÓÔÒÅÞÅÎÁ ÐÅÒÅÄ %cnode, ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ %s"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
+msgstr "óÏÄÅÒÖÁÎÉÅ"
+
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
+msgstr "ëÒÁÔËÏÅ ÓÏÄÅÒÖÁÎÉÅ"
+
+#: makeinfo/toc.c:354
+#, c-format
+msgid "%s: TOC should be here, but it was not found"
+msgstr "%s: ÚÄÅÓØ ÄÏÌÖÎÏ ÂÙÔØ ÓÏÄÅÒÁÖÁÎÉÅ, ÎÏ ÏÎÏ ÎÅ ÎÁÊÄÅÎÏ"
+
+#: util/install-info.c:151
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr "×ÉÒÔÕÁÌØÎÁÑ ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+
+#: util/install-info.c:232
+#, c-format
+msgid " for %s"
+msgstr " ÄÌÑ %s"
+
+#: util/install-info.c:381
+#, c-format
+msgid "\tTry `%s --help' for a complete list of options.\n"
+msgstr "\túÁÐÕÓÔÉÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÎÏÇÏ ÓÐÉÓËÁ ËÌÀÞÅÊ.\n"
+
+#: util/install-info.c:389
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
+"\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
+"\n"
+"Options:\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [INFO-æáêì [DIR-æáêì]]\n"
+"\n"
+"õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÌÉ ÕÄÁÌÑÅÔ ×ÈÏÖÄÅÎÉÑ ËÁÔÁÌÏÇÁ ÄÌÑ INFO-æáêìá ÉÚ\n"
+"ÆÁÊÌÁ-ËÁÔÁÌÏÇÁ Info DIR-æáêì.\n"
+"\n"
+"ëÌÀÞÉ:\n"
+"--delete ÕÄÁÌÉÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ×ÈÏÖÄÅÎÉÑ ÄÌÑ INFO-æáêìá ÉÚ "
+"DIR-æáêìá;\n"
+" ÎÅ ×ÓÔÁ×ÌÑÔØ ÎÏ×ÙÅ ×ÈÏÖÄÅÎÉÑ.\n"
+"--dir-file=éíñ ÚÁÄÁÅÔ ÉÍÑ ËÁÔÁÌÏÇÅ Info,\n"
+" ÜË×É×ÁÌÅÎÔÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ ÁÒÇÕÍÅÎÔÁ DIR-æáêì.\n"
+"--entry=ôåëóô ×ÓÔÁ×ÉÔØ ôåëóô × ËÁÞÅÓÔ×Å ×ÈÏÖÄÅÎÉÑ ËÁÔÁÌÏÇÁ Info.\n"
+" ôÅËÓÔ ÄÏÌÖÅÎ ÉÍÅÔØ ÆÏÒÍÕ ÐÕÎËÔÁ ÍÅÎÀ ÐÌÀÓ (×ÏÚÍÏÖÎÏ)\n"
+" ÎÅÓËÏÌØËÏ ÓÔÒÏË, ÎÁÞÉÎÁÀÝÉÈÓÑ ÐÒÏÂÅÌØÎÙÍÉ ÓÉÍ×ÏÌÁÍÉ. åÓÌÉ "
+"×Ù\n"
+" ÚÁÄÁÄÉÔÅ ÎÅÓËÏÌØËÏ ×ÈÏÖÄÅÎÉÊ, ×ÓÅ ÏÎÉ ÂÕÄÕÔ ×ÓÔÁ×ÌÅÎÙ. "
+"åÓÌÉ\n"
+" ×Ù ÎÅ ÚÁÄÁÄÉÔÅ ×ÈÏÖÄÅÎÉÊ, ÂÕÄÅÔ ×ÓÔÁ×ÌÅÎ ÔÅËÓÔ ÉÚ "
+"Info-ÆÁÊÌÁ.\n"
+"--help ÐÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ.\n"
+"--info-file=æáêì ÚÁÄÁÅÔ ÉÍÑ ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÏÇÏ Info-ÆÁÊÌÁ,\n"
+" ÜË×É×ÁÌÅÎÔÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ ÁÒÇÕÍÅÎÔÁ INFO-æáêì.\n"
+"--info-dir=éíñ ÓÉÎÏÎÉÍ --dir-file=éíñ/dir.\n"
+"--item=ôåëóô ÓÉÎÏÎÉÍ --entry ôåëóô.\n"
+" ÷ÈÏÖÄÅÎÉÅ ËÁÔÁÌÏÇÁ Info ÎÁ ÓÁÍÏÍ ÄÅÌÅ Ñ×ÌÑÅÔÓÑ ÐÕÎËÔÏÍ "
+"ÍÅÎÀ.\n"
+"--quiet ÎÅ ×Ù×ÏÄÉÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ.\n"
+"--remove ÓÉÎÏÎÉÍ --delete.\n"
+"--section=óåë ÐÏÍÅÓÔÉÔØ ×ÈÏÖÄÅÎÉÑ × ÚÁÄÁÎÎÕÀ ÓÅËÃÉÀ ËÁÔÁÌÏÇÁ.\n"
+" åÓÌÉ ×Ù ÚÁÄÁÄÉÔÅ ÎÅÓËÏÌØËÏ ÓÅËÃÉÊ, ×ÈÏÖÄÅÎÉÑ ÂÕÄÕÔ "
+"×ÓÔÁ×ÌÅÎÙ ×\n"
+" ËÁÖÄÕÀ. åÓÌÉ ×Ù ÎÅ ÚÁÄÁÄÉÔÅ ÓÅËÃÉÊ, ×ÈÏÖÄÅÎÉÑ ÂÕÄÕÔ "
+"×ÓÔÁ×ÌÅÎÙ\n"
+" × ÓÅËÃÉÉ, ÚÁÄÁÎÎÙÅ × Info-ÆÁÊÌÅ.\n"
+"--version ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ.\n"
+"\n"
+"ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ <bug-texinfo@gnu.org>,\n"
+"ÏÂÝÅÅ ÏÂÓÕÖÄÅÎÉÅ É ×ÏÐÒÏÓÙ ÎÁÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ <help-texinfo@gnu.org>.\n"
+
+#: util/install-info.c:442
+#, fuzzy, c-format
+msgid ""
+"This is the file .../info/dir, which contains the\n"
+"topmost node of the Info hierarchy, called (dir)Top.\n"
+"The first time you invoke Info you start off looking at this node.\n"
+"\n"
+"%s\tThis is the top of the INFO tree\n"
+"\n"
+" This (the Directory node) gives a menu of major topics.\n"
+" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
+" \"h\" gives a primer for first-timers,\n"
+" \"mEmacs<Return>\" visits the Emacs manual, etc.\n"
+"\n"
+" In Emacs, you can click mouse button 2 on a menu item or cross reference\n"
+" to select it.\n"
+"\n"
+"* Menu:\n"
+msgstr ""
+"üÔÏ ÆÁÊÌ .../info/dir, ÓÏÄÅÒÖÁÝÉÊ ËÏÒÎÅ×ÕÀ ÎÏÄÕ ÉÅÒÁÒÈÉÉ Info,\n"
+"ÎÁÚÙ×ÁÅÍÕÀ (dir)Top. ðÒÉ ×ÙÚÏ×Å Info ×Ù ×ÉÄÉÔÅ ÜÔÕ ÎÏÄÕ.\n"
+"\n"
+"File: dir,\tNode: Top,\tüÔÏ ËÏÒÎÅ×ÁÑ ÎÏÄÁ ÉÅÒÁÒÈÉÉ Info\n"
+"\n"
+" úÄÅÓØ (× ËÁÔÁÌÏÇÅ Info) ÐÒÅÄÓÔÁ×ÌÅÎÏ ÍÅÎÀ ÐÏ ÏÓÎÏ×ÎÙÍ ÔÅÍÁÍ.\n"
+" îÁÖÍÉÔÅ \"q\" ÞÔÏÂÙ ×ÙÊÔÉ, \"?\" ÞÔÏÂÙ ÐÏÓÍÏÔÒÅÔØ ×ÓÅ ËÏÍÁÎÄÙ Info,\n"
+" \"d\" ÞÔÏÂÙ ×ÅÒÎÕÔØÓÑ ÓÀÄÁ, \"h\" ÞÔÏÂÙ ÐÒÏÞÉÔÁÔØ ÒÕËÏ×ÏÄÓÔ×Ï ÄÌÑ "
+"ÎÏ×ÉÞËÏ×,\n"
+" \"mEmacs<Return>\" ÞÔÏÂÙ ÐÒÏÞÉÔÁÔØ ÒÕËÏ×ÏÄÓÔ×Ï ÐÏ Emacs.\n"
+"\n"
+" ÷ Emacs ×Ù ÍÏÖÅÔÅ ÎÁÖÁÔØ ×ÔÏÒÕÀ ËÎÏÐËÕ ÍÙÛÉ ÎÁ ÐÕÎËÔÅ ÍÅÎÀ ÉÌÉ ÓÓÙÌËÅ,\n"
+" ÞÔÏÂÙ ÐÅÒÅÊÔÉ Ë ÎÅÍÕ.\n"
+"\n"
+"* Menu:\n"
+
+#: util/install-info.c:465
+#, c-format
+msgid "%s: could not read (%s) and could not create (%s)\n"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ (%s) É ÓÏÚÄÁÔØ (%s)\n"
+
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr "%s: ÐÕÓÔÏÊ ÆÁÊÌ"
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr "START-INFO-DIR-ENTRY ÂÅÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ END-INFO-DIR-ENTRY"
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr "END-INFO-DIR-ENTRY ÂÅÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ START-INFO-DIR-ENTRY"
+
+#: util/install-info.c:1147 util/install-info.c:1157
+#, c-format
+msgid "%s: Specify the Info directory only once.\n"
+msgstr "%s: íÏÖÎÏ ÚÁÄÁÔØ ÔÏÌØËÏ ÏÄÉÎ ËÁÔÁÌÏÇ Info.\n"
+
+#: util/install-info.c:1192
+#, c-format
+msgid "%s: Specify the Info file only once.\n"
+msgstr "%s: íÏÖÎÏ ÚÁÄÁÔØ ÔÏÌØËÏ ÏÄÉÎ Info-ÆÁÊÌ.\n"
+
+#: util/install-info.c:1241
+#, c-format
+msgid "excess command line argument `%s'"
+msgstr "ÉÚÌÉÛÎÉÊ ÁÒÇÕÍÅÎÔ `%s'"
+
+#: util/install-info.c:1245
+msgid "No input file specified; try --help for more information."
+msgstr ""
+"îÅ ÚÁÄÁÎ ×ÈÏÄÎÏÊ ÆÁÊÌ.\n"
+"ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ."
+
+#: util/install-info.c:1247
+msgid "No dir file specified; try --help for more information."
+msgstr ""
+"îÅ ÚÁÄÁÎ ÆÁÊÌ ËÁÔÁÌÏÇÁ.\n"
+"ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ."
+
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
+#, c-format
+msgid "no info dir entry in `%s'"
+msgstr "× `%s' ÎÅÔ ×ÈÏÖÄÅÎÉÑ ÄÌÑ ËÁÔÁÌÏÇÁ Info"
+
+#: util/install-info.c:1384
+#, c-format
+msgid "menu item `%s' already exists, for file `%s'"
+msgstr "ÐÕÎËÔ ÍÅÎÀ `%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, ÄÌÑ ÆÁÊÌÁ `%s'"
+
+#: util/install-info.c:1407
+#, c-format
+msgid "no entries found for `%s'; nothing deleted"
+msgstr "ÎÅ ÎÁÊÄÅÎÏ ×ÈÏÖÄÅÎÉÊ ÄÌÑ `%s'; ÎÉÞÅÇÏ ÎÅ ÕÄÁÌÅÎÏ"
+
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr "ÐÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ"
+
+#: util/texindex.c:246
+msgid "keep temporary files around after processing"
+msgstr "ÓÏÈÒÁÎÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ ÐÏÓÌÅ ÒÁÂÏÔÙ"
+
+#: util/texindex.c:248
+msgid "do not keep temporary files around after processing (default)"
+msgstr "ÎÅ ÓÏÈÒÁÎÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ (ÐÏ ÕÍÏÌÞÁÎÉÀ)"
+
+#: util/texindex.c:250
+msgid "send output to FILE"
+msgstr "ÚÁÐÉÓÁÔØ ×Ù×ÏÄ × æáêì"
+
+#: util/texindex.c:252
+msgid "display version information and exit"
+msgstr "ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ"
+
+#: util/texindex.c:263
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì...\n"
+
+#: util/texindex.c:264
+msgid "Generate a sorted index for each TeX output FILE.\n"
+msgstr ""
+"óÏÚÄÁÅÔ ÓÏÒÔÉÒÏ×ÁÎÎÙÊ ÁÌÆÁ×ÉÔÎÙÊ ÕËÁÚÁÔÅÌØ ÄÌÑ\n"
+"ËÁÖÄÏÇÏ ×ÙÈÏÄÎÏÇÏ TeX-ÆÁÊÌÁ.\n"
+
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
+msgstr "æáêì... ÄÌÑ ÄÏËÕÍÅÎÔÁ `foo.texi' ÏÂÙÞÎÏ ÚÁÄÁÅÔÓÑ ËÁË `foo.%c%c'.\n"
+
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"ëÌÀÞÉ:\n"
+
+#: util/texindex.c:285
+msgid ""
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+"\n"
+"ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ bug-texinfo@gnu.org,\n"
+"ÏÂÝÅÅ ÏÂÓÕÖÄÅÎÉÅ É ×ÏÐÒÏÓÙ ÎÁÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ help-texinfo@gnu.org.\n"
+
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
+#, c-format
+msgid "%s: not a texinfo index file"
+msgstr "%s: ÎÅ texinfo-ÆÁÊÌ Ó ÁÌÆÁ×ÉÔÎÙÍ ÕËÁÚÁÔÅÌÅÍ"
+
+#: util/texindex.c:980
+#, c-format
+msgid "failure reopening %s"
+msgstr "ÏÛÉÂËÁ ÐÏ×ÔÏÒÎÏÇÏ ÏÔËÒÙÔÉÑ %s"
+
+#: util/texindex.c:1222
+#, c-format
+msgid "No page number in %s"
+msgstr "÷ %s ÎÅÔ ÎÏÍÅÒÁ ÓÔÒÁÎÉÃÙ"
+
+#: util/texindex.c:1293
+#, c-format
+msgid "entry %s follows an entry with a secondary name"
+msgstr "ÚÁ ×ÈÏÖÄÅÎÉÅÍ %s ÓÌÅÄÕÅÔ ×ÈÏÖÄÅÎÉÅ Ó ×ÔÏÒÉÞÎÙÍ ÉÍÅÎÅÍ"
+
+#: util/texindex.c:1631
+#, c-format
+msgid "%s; for file `%s'.\n"
+msgstr "%s; ÄÌÑ ÆÁÊÌÁ `%s'.\n"
+
+#~ msgid ""
+#~ "---------- Footnotes ----------\n"
+#~ "\n"
+#~ msgstr ""
+#~ "---------- óÎÏÓËÉ ----------\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TEXINFO-FILE...\n"
+#~ "\n"
+#~ "Translate Texinfo source documentation to various other formats:\n"
+#~ "Info files suitable for reading online with Emacs or standalone GNU Info\n"
+#~ "(by default); plain text (with --no-headers); or HTML (with --html).\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " -D VAR define a variable, as with @set.\n"
+#~ " -I DIR append DIR to the @include search path.\n"
+#~ " -P DIR prepend DIR to the @include search path.\n"
+#~ " -U VAR undefine a variable, as with @clear.\n"
+#~ " --commands-in-node-names allow @ commands in node names.\n"
+#~ " --error-limit=NUM quit after NUM errors (default %d).\n"
+#~ " --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+#~ " --footnote-style=STYLE output footnotes according to STYLE:\n"
+#~ " `separate' to place footnotes in their own "
+#~ "node,\n"
+#~ " `end' to place the footnotes at the end of the\n"
+#~ " node in which they are defined (the default).\n"
+#~ " --force preserve output even if errors.\n"
+#~ " --help display this help and exit.\n"
+#~ " --html output HTML rather than Info format;\n"
+#~ " implies --no-split.\n"
+#~ msgstr ""
+#~ "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... TEXINFO-æáêì...\n"
+#~ "\n"
+#~ "ðÒÅÏÂÒÁÚÕÅÔ ÉÓÈÏÄÎÙÅ Texinfo-ÆÁÊÌÙ × ÒÁÚÌÉÞÎÙÅ ÄÒÕÇÉÅ ÆÏÒÍÁÔÙ: × "
+#~ "Info-ÆÁÊÌÙ,\n"
+#~ "ËÏÔÏÒÙÅ ÍÏÖÎÏ ÞÉÔÁÔØ × Emacs ÉÌÉ × ÓÁÍÏÓÔÏÑÔÅÌØÎÏÊ ÐÒÏÇÒÁÍÍÅ GNU Info (ÐÏ\n"
+#~ "ÕÍÏÌÞÁÎÉÀ), ÐÒÏÓÔÏÊ ÔÅËÓÔ (Ó ËÌÀÞÏÍ --no-headers) ÉÌÉ HTML (Ó --html).\n"
+#~ "\n"
+#~ "ëÌÀÞÉ:\n"
+#~ " -D ðåòåíåîîáñ ÏÐÒÅÄÅÌÉÔØ ÐÅÒÅÍÅÎÎÕÀ, ÁÎÁÌÏÇÉÞÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ "
+#~ "@set.\n"
+#~ " -I ëáôáìïç ÄÏÂÁ×ÉÔØ ëáôáìïç × ËÏÎÅà ÓÐÉÓËÁ ÐÏÉÓËÁ "
+#~ "×ËÌÀÞÁÅÍÙÈ\n"
+#~ " ÆÁÊÌÏ×.\n"
+#~ " -P ëáôáìïç ÄÏÂÁ×ÉÔØ ëáôáìïç × ÎÁÞÁÌÏ ÓÐÉÓËÁ ÐÏÉÓËÁ "
+#~ "×ËÌÀÞÁÅÍÙÈ\n"
+#~ " ÆÁÊÌÏ×.\n"
+#~ " -U ðåòåíåîîáñ ÓÄÅÌÁÔØ ÐÅÒÅÍÅÎÎÕÀ ÎÅÏÐÒÅÄÅÌÅÎÎÏÊ, ÁÎÁÌÏÇÉÞÎÏ\n"
+#~ " ÉÓÐÏÌØÚÏ×ÁÎÉÀ @clear.\n"
+#~ " --commands-in-node-names ÐÏÚ×ÏÌÉÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ @-ËÏÍÁÎÄ × ÉÍÅÎÁÈ ÎÏÄ.\n"
+#~ " --error-limit=þéóìï ÏÓÔÁÎÏ×ÉÔØÓÑ ÐÏÓÌÅ þéóìá ÏÛÉÂÏË (ÐÏ ÕÍÏÌÞÁÎÉÀ "
+#~ "%d).\n"
+#~ " --fill-column=þéóìï ÒÁÚÂÉ×ÁÔØ ÓÔÒÏËÉ ÄÌÉÎÎÅÅ þéóìá ÓÉÍ×ÏÌÏ× (ÐÏ\n"
+#~ " ÕÍÏÌÞÁÎÉÀ %d).\n"
+#~ " --footnote-style=óôéìø ×Ù×ÏÄÉÔØ ÓÎÏÓËÉ ÏÄÎÉÍ ÉÚ óôéìåê:\n"
+#~ " `separate' ÐÏÍÅÝÁÔØ ÓÎÏÓËÉ × ÏÔÄÅÌØÎÕÀ ÎÏÄÕ,\n"
+#~ " `end' ÐÏÍÅÝÁÔØ ÓÎÏÓËÉ × ËÏÎÅÃ ÎÏÄÙ, ÇÄÅ ÏÎÉ "
+#~ "ÂÙÌÉ\n"
+#~ " ÏÐÒÅÄÅÌÅÎÙ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+#~ " --force ÓÏÈÒÁÎÑÔØ ×Ù×ÏÄ, ÄÁÖÅ ÅÓÌÉ ÂÙÌÉ ÏÛÉÂËÉ.\n"
+#~ " --help ÐÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ.\n"
+#~ " --html ×Ù×ÏÄÉÔØ × ÆÏÒÍÁÔÅ HTML, Á ÎÅ Info; "
+#~ "ÐÏÄÒÁÚÕÍÅ×ÁÅÔ\n"
+#~ " --no-split\n"
diff --git a/gnu/usr.bin/texinfo/po/texinfo.pot b/gnu/usr.bin/texinfo/po/texinfo.pot
index f6e1ce472b4..dc6b949f3b5 100644
--- a/gnu/usr.bin/texinfo/po/texinfo.pot
+++ b/gnu/usr.bin/texinfo/po/texinfo.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1998-03-03 13:32-0500\n"
+"POT-Creation-Date: 1999-09-25 12:11-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,12 +19,12 @@ msgstr ""
#. Echo Area Movement Commands
#.
#. ****************************************************************
-#: info/echo-area.c:283 info/session.c:698
+#: info/echo-area.c:283 info/session.c:711
msgid "Move forward a character"
msgstr ""
#. Move point backward in the node.
-#: info/echo-area.c:295 info/session.c:714
+#: info/echo-area.c:295 info/session.c:727
msgid "Move backward a character"
msgstr ""
@@ -37,11 +37,11 @@ msgid "Move to the end of this line"
msgstr ""
#. Move forward a word in the input line.
-#: info/echo-area.c:320 info/session.c:732
+#: info/echo-area.c:320 info/session.c:745
msgid "Move forward a word"
msgstr ""
-#: info/echo-area.c:360 info/session.c:781
+#: info/echo-area.c:360 info/session.c:794
msgid "Move backward a word"
msgstr ""
@@ -137,26 +137,26 @@ msgstr ""
msgid "%d completions:\n"
msgstr ""
-#: info/echo-area.c:1088
+#: info/echo-area.c:1089
msgid "Insert completion"
msgstr ""
-#: info/echo-area.c:1221
+#: info/echo-area.c:1222
msgid "Building completions..."
msgstr ""
#. Scroll the "other" window. If there is a window showing completions, scroll
#. that one, otherwise scroll the window which was active on entering the read
#. function.
-#: info/echo-area.c:1319
+#: info/echo-area.c:1320
msgid "Scroll the completions window"
msgstr ""
-#: info/footnotes.c:206
+#: info/footnotes.c:212
msgid "Footnotes could not be displayed"
msgstr ""
-#: info/footnotes.c:232
+#: info/footnotes.c:238
msgid "Show the footnotes associated with this node in another window"
msgstr ""
@@ -207,32 +207,32 @@ msgstr ""
msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"
msgstr ""
-#: info/indices.c:533
+#: info/indices.c:549
#, c-format
msgid "Scanning indices of \"%s\"..."
msgstr ""
-#: info/indices.c:616
+#: info/indices.c:632
msgid "Grovel all known info file's indices for a string and build a menu"
msgstr ""
-#: info/indices.c:620
+#: info/indices.c:636
msgid "Index apropos: "
msgstr ""
-#: info/indices.c:650
+#: info/indices.c:666
#, c-format
msgid ""
"\n"
"* Menu: Nodes whoses indices contain \"%s\":\n"
msgstr ""
-#: info/info.c:212
-msgid "Try --help for more information."
+#: info/info.c:248
+msgid "Try --help for more information.\n"
msgstr ""
-#: info/info.c:231 makeinfo/makeinfo.c:1089 util/install-info.c:530
-#: util/texindex.c:338
+#: info/info.c:267 makeinfo/makeinfo.c:616 util/install-info.c:1221
+#: util/texindex.c:336
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -241,121 +241,383 @@ msgid ""
"For more information about these matters, see the files named COPYING.\n"
msgstr ""
-#: info/info.c:363
-msgid "no entries found\n"
-msgstr ""
-
-#: info/info.c:406
-msgid "There is no menu in this node."
-msgstr ""
-
-#: info/info.c:437
+#: info/info.c:461
#, c-format
-msgid "There is no menu item \"%s\" in this node."
+msgid "no index entries found for `%s'\n"
msgstr ""
-#: info/info.c:501
-#, c-format
-msgid "Unable to find the node referenced by \"%s\"."
-msgstr ""
-
-#: info/info.c:602
+#: info/info.c:530
#, c-format
msgid ""
-"Usage: %s [OPTION]... [INFO-FILE [MENU-ITEM...]]\n"
+"Usage: %s [OPTION]... [MENU-ITEM...]\n"
"\n"
"Read documentation in Info format.\n"
-"For more complete documentation on how to use Info, run `info info "
-"options'.\n"
"\n"
"Options:\n"
-"--directory DIR add DIR to INFOPATH.\n"
-"--dribble FILENAME remember user keystrokes in FILENAME.\n"
-"--file FILENAME specify Info file to visit.\n"
-"--node NODENAME specify nodes in first visited Info file.\n"
-"--output FILENAME output selected nodes to FILENAME.\n"
-"--restore FILENAME read initial keystrokes from FILENAME.\n"
-"--subnodes recursively output menu items.\n"
-"--help display this help and exit.\n"
-"--version display version information and exit.\n"
+" --apropos=SUBJECT look up SUBJECT in all indices of all manuals.\n"
+" --directory=DIR add DIR to INFOPATH.\n"
+" --dribble=FILENAME remember user keystrokes in FILENAME.\n"
+" --file=FILENAME specify Info file to visit.\n"
+" --help display this help and exit.\n"
+" --index-search=STRING go to node pointed by index entry STRING.\n"
+" --node=NODENAME specify nodes in first visited Info file.\n"
+" --output=FILENAME output selected nodes to FILENAME.\n"
+" --restore=FILENAME read initial keystrokes from FILENAME.\n"
+" --show-options, --usage go to command-line options node.\n"
+" --subnodes recursively output menu items.\n"
+"%s --vi-keys use vi-like and less-like key bindings.\n"
+" --version display version information and exit.\n"
"\n"
-"The first argument, if present, is the name of the Info file to read.\n"
+"The first non-option argument, if present, is the menu entry to start from;\n"
+"it is searched for in all `dir' files along INFOPATH.\n"
+"If it is not present, info merges all `dir' files and shows the result.\n"
"Any remaining arguments are treated as the names of menu\n"
-"items in the initial node visited. For example, `info emacs buffers'\n"
-"moves to the node `buffers' in the info file `emacs'.\n"
+"items relative to the initial node visited.\n"
"\n"
-"Email bug reports to bug-texinfo@gnu.org."
+"Examples:\n"
+" info show top-level dir menu\n"
+" info emacs start at emacs node from top-level dir\n"
+" info emacs buffers start at buffers node within emacs manual\n"
+" info --show-options emacs start at node with emacs' command line options\n"
+" info -f ./foo.info show file ./foo.info, not searching dir\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
+msgstr ""
+
+#: info/info.c:604
+#, c-format
+msgid "Cannot find node `%s'."
+msgstr ""
+
+#: info/info.c:605
+#, c-format
+msgid "Cannot find node `(%s)%s'."
+msgstr ""
+
+#: info/info.c:606
+msgid "Cannot find a window!"
+msgstr ""
+
+#: info/info.c:607
+msgid "Point doesn't appear within this window's node!"
+msgstr ""
+
+#: info/info.c:608
+msgid "Cannot delete the last window."
+msgstr ""
+
+#: info/info.c:609
+msgid "No menu in this node."
+msgstr ""
+
+#: info/info.c:610
+msgid "No footnotes in this node."
+msgstr ""
+
+#: info/info.c:611
+msgid "No cross references in this node."
+msgstr ""
+
+#: info/info.c:612
+#, c-format
+msgid "No `%s' pointer for this node."
+msgstr ""
+
+#: info/info.c:613
+#, c-format
+msgid "Unknown Info command `%c'; try `?' for help."
+msgstr ""
+
+#: info/info.c:614
+#, c-format
+msgid "Terminal type `%s' is not smart enough to run Info."
+msgstr ""
+
+#: info/info.c:615
+msgid "You are already at the last page of this node."
+msgstr ""
+
+#: info/info.c:616
+msgid "You are already at the first page of this node."
+msgstr ""
+
+#: info/info.c:617
+msgid "Only one window."
+msgstr ""
+
+#: info/info.c:618
+msgid "Resulting window would be too small."
+msgstr ""
+
+#: info/info.c:619
+msgid "Not enough room for a help window, please delete a window."
+msgstr ""
+
+#: info/infodoc.c:45
+msgid "Basic Commands in Info Windows\n"
+msgstr ""
+
+#: info/infodoc.c:46
+msgid "******************************\n"
+msgstr ""
+
+#: info/infodoc.c:48
+#, c-format
+msgid " %-10s Quit this help.\n"
+msgstr ""
+
+#: info/infodoc.c:49
+#, c-format
+msgid " %-10s Quit Info altogether.\n"
msgstr ""
#: info/infodoc.c:50
-msgid "Basic Commands in Info Windows"
+#, c-format
+msgid " %-10s Invoke the Info tutorial.\n"
+msgstr ""
+
+#: info/infodoc.c:52
+msgid "Moving within a node:\n"
+msgstr ""
+
+#: info/infodoc.c:53
+msgid "---------------------\n"
+msgstr ""
+
+#: info/infodoc.c:54
+#, c-format
+msgid " %-10s Scroll forward a page.\n"
+msgstr ""
+
+#: info/infodoc.c:55
+#, c-format
+msgid " %-10s Scroll backward a page.\n"
+msgstr ""
+
+#: info/infodoc.c:56
+#, c-format
+msgid " %-10s Go to the beginning of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:57
+#, c-format
+msgid " %-10s Go to the end of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:58
+#, c-format
+msgid " %-10s Scroll forward 1 line.\n"
+msgstr ""
+
+#: info/infodoc.c:59
+#, c-format
+msgid " %-10s Scroll backward 1 line.\n"
+msgstr ""
+
+#: info/infodoc.c:61
+msgid "Selecting other nodes:\n"
+msgstr ""
+
+#: info/infodoc.c:62
+msgid "----------------------\n"
+msgstr ""
+
+#: info/infodoc.c:63
+#, c-format
+msgid " %-10s Move to the `next' node of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:64
+#, c-format
+msgid " %-10s Move to the `previous' node of this node.\n"
+msgstr ""
+
+#: info/infodoc.c:65
+#, c-format
+msgid " %-10s Move `up' from this node.\n"
+msgstr ""
+
+#: info/infodoc.c:66
+#, c-format
+msgid " %-10s Pick menu item specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:67
+msgid " Picking a menu item causes another node to be selected.\n"
+msgstr ""
+
+#: info/infodoc.c:68
+#, c-format
+msgid " %-10s Follow a cross reference. Reads name of reference.\n"
+msgstr ""
+
+#: info/infodoc.c:69
+#, c-format
+msgid " %-10s Move to the last node seen in this window.\n"
+msgstr ""
+
+#: info/infodoc.c:70
+#, c-format
+msgid " %-10s Skip to next hypertext link within this node.\n"
+msgstr ""
+
+#: info/infodoc.c:71
+#, c-format
+msgid " %-10s Follow the hypertext link under cursor.\n"
+msgstr ""
+
+#: info/infodoc.c:72
+#, c-format
+msgid " %-10s Move to the `directory' node. Equivalent to `g (DIR)'.\n"
+msgstr ""
+
+#: info/infodoc.c:73
+#, c-format
+msgid " %-10s Move to the Top node. Equivalent to `g Top'.\n"
+msgstr ""
+
+#: info/infodoc.c:75
+msgid "Other commands:\n"
+msgstr ""
+
+#: info/infodoc.c:76
+msgid "---------------\n"
+msgstr ""
+
+#: info/infodoc.c:77
+#, c-format
+msgid " %-10s Pick first ... ninth item in node's menu.\n"
+msgstr ""
+
+#: info/infodoc.c:78
+#, c-format
+msgid " %-10s Pick last item in node's menu.\n"
+msgstr ""
+
+#: info/infodoc.c:79
+#, c-format
+msgid ""
+" %-10s Search for a specified string in the index entries of this Info\n"
+msgstr ""
+
+#: info/infodoc.c:80
+msgid ""
+" file, and select the node referenced by the first entry "
+"found.\n"
+msgstr ""
+
+#: info/infodoc.c:81
+#, c-format
+msgid " %-10s Move to node specified by name.\n"
+msgstr ""
+
+#: info/infodoc.c:82
+msgid ""
+" You may include a filename as well, as in (FILENAME)NODENAME.\n"
msgstr ""
-#: info/infodoc.c:211
+#: info/infodoc.c:83
+#, c-format
+msgid ""
+" %-10s Search forward through this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:84 info/infodoc.c:86
+msgid ""
+" and select the node in which the next occurrence is found.\n"
+msgstr ""
+
+#: info/infodoc.c:85
+#, c-format
+msgid " %-10s Search backward in this Info file for a specified string,\n"
+msgstr ""
+
+#: info/infodoc.c:258
+msgid "The current search path is:\n"
+msgstr ""
+
+#: info/infodoc.c:261
+msgid ""
+"Commands available in Info windows:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:264
+msgid ""
+"Commands available in the echo area:\n"
+"\n"
+msgstr ""
+
+#: info/infodoc.c:280
msgid ""
"The following commands can only be invoked via M-x:\n"
"\n"
msgstr ""
-#: info/infodoc.c:228
+#: info/infodoc.c:301
msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"
msgstr ""
#. Create or move to the help window.
-#: info/infodoc.c:328
+#: info/infodoc.c:411
msgid "Display help message"
msgstr ""
#. Show the Info help node. This means that the "info" file is installed
#. where it can easily be found on your system.
-#: info/infodoc.c:346
+#: info/infodoc.c:429
msgid "Visit Info node `(info)Help'"
msgstr ""
-#: info/infodoc.c:470
+#: info/infodoc.c:555
msgid "Print documentation for KEY"
msgstr ""
-#: info/infodoc.c:483
+#: info/infodoc.c:568
#, c-format
msgid "Describe key: %s"
msgstr ""
-#: info/infodoc.c:492
+#: info/infodoc.c:577
#, c-format
msgid "ESC %s is undefined."
msgstr ""
-#: info/infodoc.c:509
+#: info/infodoc.c:594
#, c-format
msgid "%s is undefined."
msgstr ""
-#: info/infodoc.c:535
+#: info/infodoc.c:620
#, c-format
msgid "%s is defined to %s."
msgstr ""
-#: info/infodoc.c:731
+#: info/infodoc.c:812
+msgid "Show what to type to execute a given command"
+msgstr ""
+
+#: info/infodoc.c:816
msgid "Where is command: "
msgstr ""
-#: info/infodoc.c:753
+#: info/infodoc.c:838
#, c-format
msgid "`%s' is not on any keys"
msgstr ""
-#: info/infodoc.c:759
+#: info/infodoc.c:844
#, c-format
msgid "%s can only be invoked via %s."
msgstr ""
-#: info/infodoc.c:762
+#: info/infodoc.c:847
#, c-format
msgid "%s can be invoked via %s."
msgstr ""
-#: info/infodoc.c:766
+#: info/infodoc.c:851
#, c-format
msgid "There is no function named `%s'"
msgstr ""
@@ -385,13 +647,13 @@ msgstr ""
msgid "Set screen height to (%d): "
msgstr ""
-#: info/makedoc.c:126
+#: info/makedoc.c:132
msgid ""
" Source files groveled to make this file include:\n"
"\n"
msgstr ""
-#: info/makedoc.c:450
+#: info/makedoc.c:465
#, c-format
msgid "Couldn't manipulate the file %s.\n"
msgstr ""
@@ -404,167 +666,176 @@ msgid ""
" ---------- ----- ---- ---------------"
msgstr ""
-#: info/nodemenu.c:197
+#: info/nodemenu.c:199
msgid ""
"Here is the menu of nodes you have recently visited.\n"
"Select one from this menu, or use `\\[history-node]' in another window.\n"
msgstr ""
-#: info/nodemenu.c:217
+#: info/nodemenu.c:219
msgid "Make a window containing a menu of all of the currently visited nodes"
msgstr ""
-#: info/nodemenu.c:297
+#: info/nodemenu.c:299
msgid "Select a node which has been previously visited in a visible window"
msgstr ""
-#: info/nodemenu.c:309
+#: info/nodemenu.c:311
msgid "Select visited node: "
msgstr ""
-#: info/nodemenu.c:329 info/session.c:1996
+#: info/nodemenu.c:331 info/session.c:2146
#, c-format
msgid "The reference disappeared! (%s)."
msgstr ""
-#: info/session.c:162
+#: info/session.c:169
#, c-format
msgid ""
-"Welcome to Info version %s. \"\\[get-help-window]\" for help, "
-"\"\\[menu-item]\" for menu item."
+"Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] "
+"for menu item."
msgstr ""
#. Move WINDOW's point down to the next line if possible.
-#: info/session.c:629
+#: info/session.c:642
msgid "Move down to the next line"
msgstr ""
#. Move WINDOW's point up to the previous line if possible.
-#: info/session.c:644
+#: info/session.c:657
msgid "Move up to the previous line"
msgstr ""
#. Move WINDOW's point to the end of the true line.
-#: info/session.c:659
+#: info/session.c:672
msgid "Move to the end of the line"
msgstr ""
#. Move WINDOW's point to the beginning of the true line.
-#: info/session.c:679
+#: info/session.c:692
msgid "Move to the start of the line"
msgstr ""
-#: info/session.c:855
-msgid " times"
-msgstr ""
-
-#: info/session.c:857
-#, c-format
-msgid "%d times"
-msgstr ""
-
-#: info/session.c:895
-msgid "No \"Next\" pointer for this node."
-msgstr ""
-
-#: info/session.c:898
-msgid "Following \"Next\" node..."
+#: info/session.c:884 makeinfo/node.c:1092
+msgid "Next"
msgstr ""
-#: info/session.c:899 info/session.c:927 info/session.c:999
-#: info/session.c:1717
-msgid "Next"
+#: info/session.c:887
+msgid "Following Next node..."
msgstr ""
-#: info/session.c:915
+#: info/session.c:904
msgid "Selecting first menu item..."
msgstr ""
-#: info/session.c:926
-msgid "Selecting \"Next\" node..."
+#: info/session.c:915
+msgid "Selecting Next node..."
msgstr ""
-#: info/session.c:950 info/session.c:1063 info/session.c:1733
-msgid "Up"
+#: info/session.c:985
+#, c-format
+msgid "Moving Up %d time(s), then Next."
msgstr ""
-#: info/session.c:1020
-msgid "No more nodes."
+#: info/session.c:1009
+msgid "No more nodes within this document."
msgstr ""
-#: info/session.c:1044
-msgid "No \"Prev\" for this node."
+#: info/session.c:1033
+msgid "No `Prev' for this node."
msgstr ""
#. Move to the previous node. If this node now contains a menu,
#. and we have not inhibited movement to it, move to the node
#. corresponding to the last menu item.
-#: info/session.c:1047 info/session.c:1100
-msgid "Moving \"Prev\" in this window."
+#: info/session.c:1036 info/session.c:1091
+msgid "Moving Prev in this window."
msgstr ""
-#: info/session.c:1048 info/session.c:1101 info/session.c:1725
-msgid "Prev"
-msgstr ""
-
-#: info/session.c:1059
-msgid "No \"Prev\" or \"Up\" for this node."
+#: info/session.c:1050
+msgid "No `Prev' or `Up' for this node within this document."
msgstr ""
-#: info/session.c:1062
-msgid "Moving \"Up\" in this window."
+#: info/session.c:1053
+msgid "Moving Up in this window."
msgstr ""
-#: info/session.c:1110
-msgid "Moving to \"Prev\"'s last menu item."
+#: info/session.c:1101
+msgid "Moving to `Prev's last menu item."
msgstr ""
-#: info/session.c:1121
+#: info/session.c:1112
msgid "Move forwards or down through node structure"
msgstr ""
-#: info/session.c:1137
+#: info/session.c:1128
msgid "Move backwards or up through node structure"
msgstr ""
#. Show the next screen of WINDOW's node.
-#: info/session.c:1152
+#: info/session.c:1143
msgid "Scroll forward in this window"
msgstr ""
+#: info/session.c:1192
+msgid "Scroll forward in this window and set default window size"
+msgstr ""
+
#. Show the previous screen of WINDOW's node.
-#: info/session.c:1197
+#: info/session.c:1200
msgid "Scroll backward in this window"
msgstr ""
+#: info/session.c:1244
+msgid "Scroll backward in this window and set default window size"
+msgstr ""
+
#. Move to the beginning of the node.
-#: info/session.c:1237
+#: info/session.c:1252
msgid "Move to the start of this node"
msgstr ""
#. Move to the end of the node.
-#: info/session.c:1244
+#: info/session.c:1259
msgid "Move to the end of this node"
msgstr ""
+#. Scroll the window forward by N lines.
+#: info/session.c:1266
+msgid "Scroll down by lines"
+msgstr ""
+
+#. Scroll the window backward by N lines.
+#: info/session.c:1283
+msgid "Scroll up by lines"
+msgstr ""
+
+#: info/session.c:1301
+msgid "Scroll down by half screen size"
+msgstr ""
+
+#: info/session.c:1327
+msgid "Scroll up by half screen size"
+msgstr ""
+
#. ****************************************************************
#.
#. Commands for Manipulating Windows
#.
#. ****************************************************************
#. Make the next window in the chain be the active window.
-#: info/session.c:1257
+#: info/session.c:1356
msgid "Select the next window"
msgstr ""
#. Make the previous window in the chain be the active window.
-#: info/session.c:1296
+#: info/session.c:1395
msgid "Select the previous window"
msgstr ""
#. Split WINDOW into two windows, both showing the same node. If we
#. are automatically tiling windows, re-tile after the split.
-#: info/session.c:1347
+#: info/session.c:1446
msgid "Split the current window"
msgstr ""
@@ -572,283 +843,329 @@ msgstr ""
#. automatically displaying footnotes, show or remove the footnotes
#. window. If we are automatically tiling windows, re-tile after the
#. deletion.
-#: info/session.c:1428
+#: info/session.c:1527
msgid "Delete the current window"
msgstr ""
-#: info/session.c:1436
+#: info/session.c:1535
msgid "Cannot delete a permanent window"
msgstr ""
#. Just keep WINDOW, deleting all others.
-#: info/session.c:1469
+#: info/session.c:1568
msgid "Delete all other windows"
msgstr ""
#. Scroll the "other" window of WINDOW.
-#: info/session.c:1515
+#: info/session.c:1614
msgid "Scroll the other window"
msgstr ""
+#: info/session.c:1635
+msgid "Scroll the other window backward"
+msgstr ""
+
#. Change the size of WINDOW by AMOUNT.
-#: info/session.c:1535
+#: info/session.c:1641
msgid "Grow (or shrink) this window"
msgstr ""
-#: info/session.c:1546
+#: info/session.c:1652
msgid "Divide the available screen space among the visible windows"
msgstr ""
-#: info/session.c:1553
+#: info/session.c:1659
msgid "Toggle the state of line wrapping in the current window"
msgstr ""
#. Make WINDOW display the "Next:" node of the node currently being
#. displayed.
-#: info/session.c:1714
-msgid "Select the `Next' node"
+#: info/session.c:1838
+msgid "Select the Next node"
msgstr ""
#. Make WINDOW display the "Prev:" node of the node currently being
#. displayed.
-#: info/session.c:1722
-msgid "Select the `Prev' node"
+#: info/session.c:1846
+msgid "Select the Prev node"
msgstr ""
#. Make WINDOW display the "Up:" node of the node currently being
#. displayed.
-#: info/session.c:1730
-msgid "Select the `Up' node"
+#: info/session.c:1854
+msgid "Select the Up node"
msgstr ""
#. Make WINDOW display the last node of this info file.
-#: info/session.c:1737
+#: info/session.c:1861
msgid "Select the last node in this file"
msgstr ""
-#: info/session.c:1750 info/session.c:1768
+#: info/session.c:1888 info/session.c:1921
msgid "This window has no additional nodes"
msgstr ""
#. Make WINDOW display the first node of this info file.
-#: info/session.c:1759
+#: info/session.c:1894
msgid "Select the first node in this file"
msgstr ""
-#: info/session.c:1778
+#: info/session.c:1928
msgid "Select the last item in this node's menu"
msgstr ""
#. Use KEY (a digit) to select the Nth menu item in WINDOW->node.
-#: info/session.c:1784
+#: info/session.c:1934
msgid "Select this menu item"
msgstr ""
-#: info/session.c:1813
+#: info/session.c:1963
#, c-format
msgid "There aren't %d items in this menu."
msgstr ""
-#: info/session.c:1944
+#: info/session.c:2094
#, c-format
msgid "Menu item (%s): "
msgstr ""
-#: info/session.c:1946
+#: info/session.c:2096
msgid "Menu item: "
msgstr ""
-#: info/session.c:1951
+#: info/session.c:2101
#, c-format
msgid "Follow xref (%s): "
msgstr ""
-#: info/session.c:1953
+#: info/session.c:2103
msgid "Follow xref: "
msgstr ""
#. Read a line (with completion) which is the name of a menu item,
#. and select that item.
-#: info/session.c:2042
+#: info/session.c:2191
msgid "Read a menu item and select its node"
msgstr ""
-#: info/session.c:2050
+#: info/session.c:2199
msgid "Read a footnote or cross reference and select its node"
msgstr ""
#. Position the cursor at the start of this node's menu.
-#: info/session.c:2056
+#: info/session.c:2205
msgid "Move to the start of this node's menu"
msgstr ""
-#: info/session.c:2080
+#: info/session.c:2229
msgid "Visit as many menu items at once as possible"
msgstr ""
#. Read a line of input which is a node name, and go to that node.
-#: info/session.c:2108
+#: info/session.c:2257
msgid "Read a node name and select it"
msgstr ""
-#: info/session.c:2169 info/session.c:2173
-msgid "Goto Node: "
+#: info/session.c:2312 info/session.c:2316
+msgid "Goto node: "
+msgstr ""
+
+#: info/session.c:2382
+#, c-format
+msgid "No menu in node `%s'."
+msgstr ""
+
+#: info/session.c:2422
+#, c-format
+msgid "No menu item `%s' in node `%s'."
+msgstr ""
+
+#: info/session.c:2452
+#, c-format
+msgid "Unable to find node referenced by `%s' in `%s'."
+msgstr ""
+
+#: info/session.c:2503
+msgid "Read a list of menus starting from dir and follow them"
+msgstr ""
+
+#: info/session.c:2505
+msgid "Follow menus: "
msgstr ""
-#: info/session.c:2194
+#: info/session.c:2703
+msgid "Find the node describing program invocation"
+msgstr ""
+
+#: info/session.c:2705
+#, c-format
+msgid "Find Invocation node of [%s]: "
+msgstr ""
+
+#: info/session.c:2743
msgid "Read a manpage reference and select it"
msgstr ""
-#: info/session.c:2198
+#: info/session.c:2747
msgid "Get Manpage: "
msgstr ""
#. Move to the "Top" node in this file.
-#: info/session.c:2228
+#: info/session.c:2777
msgid "Select the node `Top' in this file"
msgstr ""
-#. Notice that the node "Top" is special, and doesn't have to
-#. be referenced.
-#: info/session.c:2230 makeinfo/makeinfo.c:5145 makeinfo/makeinfo.c:5228
-msgid "Top"
-msgstr ""
-
#. Move to the node "(dir)Top".
-#: info/session.c:2234
+#: info/session.c:2783
msgid "Select the node `(dir)'"
msgstr ""
-#: info/session.c:2254
+#: info/session.c:2803
#, c-format
msgid "Kill node (%s): "
msgstr ""
-#: info/session.c:2307
+#: info/session.c:2857
#, c-format
msgid "Cannot kill node `%s'"
msgstr ""
-#: info/session.c:2317
+#: info/session.c:2867
msgid "Cannot kill the last node"
msgstr ""
-#: info/session.c:2401
+#: info/session.c:2953
msgid "Select the most recently selected node"
msgstr ""
#. Kill named node.
-#: info/session.c:2407
+#: info/session.c:2959
msgid "Kill this node"
msgstr ""
#. Read the name of a file and select the entire file.
-#: info/session.c:2415
+#: info/session.c:2967
msgid "Read the name of a file and select it"
msgstr ""
-#: info/session.c:2419
+#: info/session.c:2971
msgid "Find file: "
msgstr ""
-#: info/session.c:2436
+#: info/session.c:2988
#, c-format
-msgid "Cannot find \"%s\"."
+msgid "Cannot find `%s'."
msgstr ""
-#: info/session.c:2483 info/session.c:2608
+#: info/session.c:3033 info/session.c:3154
#, c-format
-msgid "Could not create output file \"%s\"."
+msgid "Could not create output file `%s'."
msgstr ""
-#: info/session.c:2496 info/session.c:2625 info/session.c:2671
+#: info/session.c:3046 info/session.c:3171 info/session.c:3232
msgid "Done."
msgstr ""
-#: info/session.c:2553
-#, c-format
-msgid "Writing node \"(%s)%s\"..."
-msgstr ""
-
-#: info/session.c:2556
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3102
#, c-format
-msgid "Writing node \"%s\"..."
+msgid "Writing node %s..."
msgstr ""
-#: info/session.c:2634
+#: info/session.c:3180
msgid "Pipe the contents of this node through INFO_PRINT_COMMAND"
msgstr ""
-#: info/session.c:2654
+#: info/session.c:3216
#, c-format
-msgid "Cannot open pipe to \"%s\"."
+msgid "Cannot open pipe to `%s'."
msgstr ""
-#: info/session.c:2661
+#. Maybe we should print some information about the node being output.
+#: info/session.c:3222
#, c-format
-msgid "Printing node \"(%s)%s\"..."
+msgid "Printing node %s..."
msgstr ""
-#: info/session.c:2664
+#: info/session.c:3464
#, c-format
-msgid "Printing node \"%s\"..."
+msgid "Searching subfile %s ..."
msgstr ""
-#: info/session.c:2896
-#, c-format
-msgid "Searching subfile \"%s\"..."
+#: info/session.c:3516
+msgid "Read a string and search for it case-sensitively"
msgstr ""
-#: info/session.c:2946
+#: info/session.c:3523
msgid "Read a string and search for it"
msgstr ""
-#: info/session.c:2966
+#: info/session.c:3531
+msgid "Read a string and search backward for it"
+msgstr ""
+
+#: info/session.c:3573
#, c-format
-msgid "%s for string [%s]: "
+msgid "%s%sfor string [%s]: "
msgstr ""
-#: info/session.c:2967
+#: info/session.c:3574
msgid "Search backward"
msgstr ""
-#: info/session.c:2967
+#: info/session.c:3574
msgid "Search"
msgstr ""
-#: info/session.c:2994
+#: info/session.c:3575
+msgid " case-sensitively "
+msgstr ""
+
+#: info/session.c:3575
+msgid " "
+msgstr ""
+
+#: info/session.c:3615
msgid "Search failed."
msgstr ""
-#: info/session.c:3020 info/session.c:3026
+#: info/session.c:3633
+msgid "Repeat last search in the same direction"
+msgstr ""
+
+#: info/session.c:3636 info/session.c:3646
+msgid "No previous search string"
+msgstr ""
+
+#: info/session.c:3643
+msgid "Repeat last search in the reverse direction"
+msgstr ""
+
+#: info/session.c:3661 info/session.c:3667
msgid "Search interactively for a string as you type it"
msgstr ""
-#: info/session.c:3120
+#: info/session.c:3761
msgid "I-search backward: "
msgstr ""
-#: info/session.c:3122
+#: info/session.c:3763
msgid "I-search: "
msgstr ""
-#: info/session.c:3147
+#: info/session.c:3788
msgid "Failing "
msgstr ""
-#: info/session.c:3512
-msgid "No cross references in this node."
-msgstr ""
-
-#: info/session.c:3579
+#: info/session.c:4244
msgid "Move to the previous cross reference"
msgstr ""
-#: info/session.c:3588
+#: info/session.c:4253
msgid "Move to the next cross reference"
msgstr ""
-#: info/session.c:3598
+#: info/session.c:4263
msgid "Select reference or menu item appearing on this line"
msgstr ""
@@ -858,57 +1175,57 @@ msgstr ""
#.
#. ****************************************************************
#. What to do when C-g is pressed in a window.
-#: info/session.c:3620
+#: info/session.c:4285
msgid "Cancel current operation"
msgstr ""
-#: info/session.c:3627
+#: info/session.c:4292
msgid "Quit"
msgstr ""
-#: info/session.c:3636
-msgid "Move to the cursor to a specific line of the window"
+#: info/session.c:4301
+msgid "Move the cursor to a specific line of the window"
msgstr ""
#. Clear the screen and redraw its contents. Given a numeric argument,
#. move the line the cursor is on to the COUNT'th line of the window.
-#: info/session.c:3668
+#: info/session.c:4333
msgid "Redraw the display"
msgstr ""
#. This command does nothing. It is the fact that a key is bound to it
#. that has meaning. See the code at the top of info_session ().
-#: info/session.c:3705
+#: info/session.c:4370
msgid "Quit using Info"
msgstr ""
-#: info/session.c:3728
+#: info/session.c:4393
#, c-format
msgid "Unknown command (%s)."
msgstr ""
-#: info/session.c:3733
+#: info/session.c:4396
msgid "\"\" is invalid"
msgstr ""
-#: info/session.c:3735
+#: info/session.c:4397
#, c-format
msgid "\"%s\" is invalid"
msgstr ""
-#: info/session.c:3958
+#: info/session.c:4620
msgid "Add this digit to the current numeric argument"
msgstr ""
-#: info/session.c:3967
+#: info/session.c:4629
msgid "Start (or multiply by 4) the current numeric argument"
msgstr ""
-#: info/session.c:3982
+#: info/session.c:4644
msgid "Internally used by \\[universal-argument]"
msgstr ""
-#: info/tilde.c:362
+#: info/tilde.c:344
msgid "readline: Out of virtual memory!\n"
msgstr ""
@@ -976,736 +1293,877 @@ msgstr ""
msgid "Set %s to value (%s): "
msgstr ""
-#: info/window.c:1102
+#: info/window.c:1101
msgid "--*** Tags out of Date ***"
msgstr ""
#. strlen (location_indicator).
#. 10 for the decimal representation of the number of lines in this
#. node, and the remainder of the text that can appear in the line.
-#: info/window.c:1113
+#: info/window.c:1112
msgid "-----Info: (), lines ----, "
msgstr ""
-#: info/window.c:1120
+#: info/window.c:1119
#, c-format
msgid "-%s---Info: %s, %d lines --%s--"
msgstr ""
-#: info/window.c:1124
+#: info/window.c:1123
#, c-format
msgid "-%s%s-Info: (%s)%s, %d lines --%s--"
msgstr ""
-#: info/window.c:1131
+#: info/window.c:1130
#, c-format
msgid " Subfile: %s"
msgstr ""
-#: lib/getopt.c:672
+#: lib/getopt.c:680
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr ""
-#: lib/getopt.c:696
+#: lib/getopt.c:704
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr ""
-#: lib/getopt.c:701
+#: lib/getopt.c:709
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr ""
-#: lib/getopt.c:718 lib/getopt.c:891
+#: lib/getopt.c:726 lib/getopt.c:899
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr ""
#. --option
-#: lib/getopt.c:747
+#: lib/getopt.c:755
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr ""
#. +option or -option
-#: lib/getopt.c:751
+#: lib/getopt.c:759
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr ""
#. 1003.2 specifies the format of this message.
-#: lib/getopt.c:777
+#: lib/getopt.c:785
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr ""
-#: lib/getopt.c:780
+#: lib/getopt.c:788
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr ""
#. 1003.2 specifies the format of this message.
-#: lib/getopt.c:810 lib/getopt.c:940
+#: lib/getopt.c:818 lib/getopt.c:948
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: lib/getopt.c:857
+#: lib/getopt.c:865
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr ""
-#: lib/getopt.c:875
+#: lib/getopt.c:883
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr ""
-#: makeinfo/makeinfo.c:893
-#, c-format
-msgid "%s:%d: warning: "
+#: makeinfo/cmds.c:447
+msgid "January"
msgstr ""
-#: makeinfo/makeinfo.c:916
-msgid "Too many errors! Gave up.\n"
+#: makeinfo/cmds.c:447
+msgid "February"
msgstr ""
-#: makeinfo/makeinfo.c:975 makeinfo/makeinfo.c:1000 makeinfo/makeinfo.c:1068
-#, c-format
-msgid "%s: %s arg must be numeric, not `%s'.\n"
+#: makeinfo/cmds.c:447
+msgid "March"
msgstr ""
-#: makeinfo/makeinfo.c:989
-#, c-format
-msgid "Couldn't open macro expansion output `%s'"
+#: makeinfo/cmds.c:447
+msgid "April"
msgstr ""
-#: makeinfo/makeinfo.c:992
-msgid "Cannot specify more than one macro expansion output"
+#: makeinfo/cmds.c:447
+msgid "May"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "June"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "July"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "August"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "September"
+msgstr ""
+
+#: makeinfo/cmds.c:448
+msgid "October"
msgstr ""
-#: makeinfo/makeinfo.c:1036
+#: makeinfo/cmds.c:449
+msgid "November"
+msgstr ""
+
+#: makeinfo/cmds.c:449
+msgid "December"
+msgstr ""
+
+#: makeinfo/cmds.c:571
#, c-format
-msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
+msgid "unlikely character %c in @var"
+msgstr ""
+
+#: makeinfo/cmds.c:605
+msgid "@sc argument all uppercase, thus no effect"
msgstr ""
-#: makeinfo/makeinfo.c:1079
+#: makeinfo/cmds.c:754
#, c-format
-msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
+msgid "%c%s is obsolete"
msgstr ""
-#: makeinfo/makeinfo.c:1110
+#: makeinfo/cmds.c:814
#, c-format
-msgid "%s: missing file argument.\n"
+msgid "@sp requires a positive numeric argument, not `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:1163
+#: makeinfo/cmds.c:1092 makeinfo/cmds.c:1118 makeinfo/footnote.c:80
#, c-format
-msgid "Try `%s --help' for more information.\n"
+msgid "Bad argument to %c%s"
+msgstr ""
+
+#: makeinfo/cmds.c:1102 makeinfo/makeinfo.c:3678
+msgid "asis"
+msgstr ""
+
+#: makeinfo/cmds.c:1104 makeinfo/makeinfo.c:3680
+msgid "none"
+msgstr ""
+
+#: makeinfo/defun.c:83
+msgid "Missing `}' in @def arg"
+msgstr ""
+
+#: makeinfo/defun.c:358
+msgid "Function"
+msgstr ""
+
+#: makeinfo/defun.c:361
+msgid "Macro"
+msgstr ""
+
+#: makeinfo/defun.c:364
+msgid "Special Form"
+msgstr ""
+
+#: makeinfo/defun.c:368
+msgid "Variable"
+msgstr ""
+
+#: makeinfo/defun.c:371
+msgid "User Option"
+msgstr ""
+
+#: makeinfo/defun.c:375
+msgid "Instance Variable"
+msgstr ""
+
+#: makeinfo/defun.c:379
+msgid "Method"
+msgstr ""
+
+#: makeinfo/defun.c:450 makeinfo/defun.c:454 makeinfo/defun.c:556
+#: makeinfo/defun.c:570 makeinfo/defun.c:610
+msgid "of"
+msgstr ""
+
+#: makeinfo/defun.c:458 makeinfo/defun.c:462 makeinfo/defun.c:466
+#: makeinfo/defun.c:564 makeinfo/defun.c:615
+msgid "on"
msgstr ""
-#: makeinfo/makeinfo.c:1165
+#: makeinfo/defun.c:656
#, c-format
-msgid ""
-"Usage: %s [OPTION]... TEXINFO-FILE...\n"
-"\n"
-"Translate Texinfo source documentation to a format suitable for reading\n"
-"with GNU Info.\n"
-"\n"
-"Options:\n"
-"-D VAR define a variable, as with @set.\n"
-"-E MACRO-OFILE process macros only, output texinfo source.\n"
-"-I DIR append DIR to the @include directory search path.\n"
-"-P DIR prepend DIR to the @include directory search path.\n"
-"-U VAR undefine a variable, as with @clear.\n"
-"--error-limit NUM quit after NUM errors (default %d).\n"
-"--fill-column NUM break lines at NUM characters (default %d).\n"
-"--footnote-style STYLE output footnotes according to STYLE:\n"
-" `separate' to place footnotes in their own node,\n"
-" `end' to place the footnotes at the end of\n"
-" the node in which they are defined (the default).\n"
-"--force preserve output even if errors.\n"
-"--help display this help and exit.\n"
-"--no-validate suppress node cross-reference validation.\n"
-"--no-warn suppress warnings (but not errors).\n"
-"--no-split suppress splitting of large files.\n"
-"--no-headers suppress node separators and Node: Foo headers.\n"
-"--output FILE, -o FILE output to FILE, and ignore any @setfilename.\n"
-"--paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n"
-" if VAL is `none', do not indent; if VAL is `asis',\n"
-" preserve any existing indentation.\n"
-"--reference-limit NUM complain about at most NUM references (default %d).\n"
-"--verbose report about what is being done.\n"
-"--version display version information and exit.\n"
-"\n"
-"Email bug reports to bug-texinfo@gnu.org.\n"
+msgid "Must be in `%s' insertion to use `%sx'"
msgstr ""
-#: makeinfo/makeinfo.c:1552
+#: makeinfo/files.c:460
#, c-format
msgid "%s: getwd: %s, %s\n"
msgstr ""
-#: makeinfo/makeinfo.c:1748
+#: makeinfo/footnote.c:149
#, c-format
-msgid "Expected `%s'"
+msgid "`%c%s' needs an argument `{...}', not just `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:2082
+#: makeinfo/footnote.c:164
#, c-format
-msgid "No `%s' found in `%s'"
+msgid "No closing brace for footnote `%s'"
+msgstr ""
+
+#: makeinfo/footnote.c:197
+msgid "Footnote defined without parent node"
+msgstr ""
+
+#: makeinfo/footnote.c:278
+msgid "Footnotes"
+msgstr ""
+
+#. The <title> should not have markup.
+#: makeinfo/html.c:40
+msgid "Untitled"
msgstr ""
-#: makeinfo/makeinfo.c:2132
+#: makeinfo/index.c:212
#, c-format
-msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
+msgid "Unknown index `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:2151
+#: makeinfo/index.c:382
#, c-format
-msgid "Making %s file `%s' from `%s'.\n"
+msgid "Index `%s' already exists"
msgstr ""
-#: makeinfo/makeinfo.c:2181
+#: makeinfo/index.c:425
#, c-format
-msgid "This is Info file %s, produced by Makeinfo version %d.%d"
+msgid "Unknown index `%s' and/or `%s' in @synindex"
msgstr ""
-#: makeinfo/makeinfo.c:2183
+#: makeinfo/index.c:642
#, c-format
-msgid " from the input file %s.\n"
+msgid "Unknown index `%s' in @printindex"
msgstr ""
-#: makeinfo/makeinfo.c:2202
+#: makeinfo/index.c:680
#, c-format
-msgid ""
-"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
+msgid "Entry for index `%s' outside of any node"
msgstr ""
-#. If there were errors, and no --force, remove the output.
-#: makeinfo/makeinfo.c:2234
+#: makeinfo/index.c:683 makeinfo/index.c:722
+msgid "(outside of any node)"
+msgstr ""
+
+#: makeinfo/insertion.c:192
+msgid "Broken-Type in insertion_type_pname"
+msgstr ""
+
+#: makeinfo/insertion.c:265
+msgid "Enumeration stack overflow"
+msgstr ""
+
+#: makeinfo/insertion.c:297
#, c-format
-msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
+msgid "lettering overflow, restarting at %c"
msgstr ""
-#. Special case. I'm not supposed to see this character by itself.
-#. If I do, it means there is a syntax error in the input text.
-#. Report the error here, but remember this brace on the stack so
-#. you can ignore its partner.
-#: makeinfo/makeinfo.c:2374 makeinfo/makeinfo.c:7629
+#: makeinfo/insertion.c:481
#, c-format
-msgid "Misplaced %c"
+msgid "%s requires an argument: the formatter for %citem"
msgstr ""
-#: makeinfo/makeinfo.c:2461
+#: makeinfo/insertion.c:623
#, c-format
-msgid "Unknown command `%s'"
+msgid "`@end' expected `%s', but saw `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:2481
-msgid "NO_NAME!"
+#: makeinfo/insertion.c:797
+#, c-format
+msgid "No matching `%cend %s'"
msgstr ""
-#: makeinfo/makeinfo.c:2495
+#: makeinfo/insertion.c:902
#, c-format
-msgid "%c%s expected `{...}'"
+msgid "%s requires letter or digit"
msgstr ""
-#: makeinfo/makeinfo.c:2528
-msgid "Unmatched }"
+#: makeinfo/insertion.c:1046
+msgid "@menu seen before first @node, creating `Top' node"
msgstr ""
-#: makeinfo/makeinfo.c:2576
-#, c-format
-msgid "%c%s missing close brace"
+#: makeinfo/insertion.c:1047
+msgid ""
+"perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"
msgstr ""
-#: makeinfo/makeinfo.c:3372
-msgid "Broken-Type in insertion_type_pname"
+#. Problems anyway, @detailmenu should always be inside @menu.
+#: makeinfo/insertion.c:1059
+msgid "@detailmenu seen before first node, creating `Top' node"
msgstr ""
-#: makeinfo/makeinfo.c:3438
-msgid "Enumeration stack overflow"
+#: makeinfo/insertion.c:1074
+#, c-format
+msgid "Unmatched `%c%s'"
msgstr ""
-#: makeinfo/makeinfo.c:3470
+#: makeinfo/insertion.c:1081
#, c-format
-msgid "lettering overflow, restarting at %c"
+msgid "`%c%s' needs something after it"
msgstr ""
-#: makeinfo/makeinfo.c:3509
-msgid "* Menu:\n"
+#: makeinfo/insertion.c:1087
+#, c-format
+msgid "Bad argument to `%s', `%s', using `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:3593
+#: makeinfo/insertion.c:1175
#, c-format
-msgid "%s requires an argument: the formatter for %citem"
+msgid "@%s not meaningful inside `@%s' block"
msgstr ""
-#: makeinfo/makeinfo.c:3697
+#: makeinfo/insertion.c:1184
#, c-format
-msgid "`%cend' expected `%s', but saw `%s'"
+msgid "@itemx not meaningful inside `%s' block"
msgstr ""
-#: makeinfo/makeinfo.c:3810
+#: makeinfo/insertion.c:1357
#, c-format
-msgid "No matching `%cend %s'"
+msgid "%c%s found outside of an insertion block"
msgstr ""
-#: makeinfo/makeinfo.c:3949
+#: makeinfo/lang.c:199
#, c-format
-msgid "How did @%s end up in cm_special_char?\n"
+msgid "%s is not a valid ISO 639 language code"
msgstr ""
#. This error message isn't perfect if the argument is multiple
#. characters, but it doesn't seem worth getting right.
-#: makeinfo/makeinfo.c:3963
+#: makeinfo/lang.c:406
#, c-format
msgid "%c%s expects `i' or `j' as argument, not `%c'"
msgstr ""
-#: makeinfo/makeinfo.c:3967
+#: makeinfo/lang.c:410
#, c-format
msgid "%c%s expects a single character `i' or `j' as argument"
msgstr ""
-#: makeinfo/makeinfo.c:3979
-msgid "January"
-msgstr ""
-
-#: makeinfo/makeinfo.c:3979
-msgid "February"
-msgstr ""
-
-#: makeinfo/makeinfo.c:3979
-msgid "March"
+#: makeinfo/macro.c:134
+#, c-format
+msgid "macro `%s' previously defined"
msgstr ""
-#: makeinfo/makeinfo.c:3979
-msgid "April"
+#: makeinfo/macro.c:138
+#, c-format
+msgid "here is the previous definition of `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:3979
-msgid "May"
+#: makeinfo/macro.c:355
+#, c-format
+msgid "\\ in macro expansion followed by `%s' instead of \\ or parameter name"
msgstr ""
-#: makeinfo/makeinfo.c:3980
-msgid "June"
+#: makeinfo/macro.c:403
+#, c-format
+msgid "Macro `%s' called on line %d with too many args"
msgstr ""
-#: makeinfo/makeinfo.c:3980
-msgid "July"
+#: makeinfo/macro.c:595
+#, c-format
+msgid "%cend macro not found"
msgstr ""
-#: makeinfo/makeinfo.c:3980
-msgid "August"
+#: makeinfo/macro.c:634
+msgid "@quote-arg only useful for single-argument macros"
msgstr ""
-#: makeinfo/makeinfo.c:3980
-msgid "September"
+#: makeinfo/macro.c:670
+#, c-format
+msgid "mismatched @end %s with @%s"
msgstr ""
-#: makeinfo/makeinfo.c:3980
-msgid "October"
+#: makeinfo/makeinfo.c:308
+#, c-format
+msgid "%s:%d: warning: "
msgstr ""
-#: makeinfo/makeinfo.c:3981
-msgid "November"
+#: makeinfo/makeinfo.c:331
+msgid "Too many errors! Gave up.\n"
msgstr ""
-#: makeinfo/makeinfo.c:3981
-msgid "December"
+#: makeinfo/makeinfo.c:342 makeinfo/makeinfo.c:1802
+#, c-format
+msgid "Misplaced %c"
msgstr ""
-#: makeinfo/makeinfo.c:4039
+#: makeinfo/makeinfo.c:362
#, c-format
-msgid "%c%s expects a single character as an argument"
+msgid "Try `%s --help' for more information.\n"
msgstr ""
-#: makeinfo/makeinfo.c:4153
+#: makeinfo/makeinfo.c:365
#, c-format
-msgid "%c%s is obsolete"
+msgid ""
+"Usage: %s [OPTION]... TEXINFO-FILE...\n"
+"\n"
+"Translate Texinfo source documentation to various other formats:\n"
+"Info files suitable for reading online with Emacs or standalone GNU Info\n"
+"(by default); plain text (with --no-headers); or HTML (with --html).\n"
+"\n"
+"Options:\n"
+" --commands-in-node-names allow @ commands in node names.\n"
+" -D VAR define a variable, as with @set.\n"
+" -E, --macro-expand FILE output macro-expanded source to FILE.\n"
+" --error-limit=NUM quit after NUM errors (default %d).\n"
+" --fill-column=NUM break Info lines at NUM characters (default %d).\n"
+" --footnote-style=STYLE output footnotes according to STYLE:\n"
+" `separate' to place footnotes in their own "
+"node,\n"
+" `end' to place the footnotes at the end of the\n"
+" node in which they are defined (the default).\n"
+" --force preserve output even if errors.\n"
+" --help display this help and exit.\n"
+" --html output HTML rather than Info format;\n"
+" -I DIR append DIR to the @include search path.\n"
+" --ifhtml process @ifhtml and @html text even when not\n"
+" generating HTML.\n"
+" --ifinfo process @ifinfo text even when generating HTML.\n"
+" --iftex process @iftex and @tex text.\n"
+" implies --no-split.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:391
+#, c-format
+msgid ""
+" --no-headers suppress Info node separators and Node: lines "
+"and\n"
+" write to standard output without --output.\n"
+" --no-ifhtml do not process @ifhtml and @html text.\n"
+" --no-ifinfo do not process @ifinfo text.\n"
+" --no-iftex do not process @iftex and @tex text.\n"
+" --no-split suppress splitting of large Info output files or\n"
+" generation of one HTML file per node.\n"
+" --no-validate suppress node cross-reference validation.\n"
+" --no-warn suppress warnings (but not errors).\n"
+" --number-sections include chapter, section, etc. numbers in "
+"output.\n"
+" -o, --output=FILE output to FILE, ignoring any @setfilename.\n"
+" -P DIR prepend DIR to the @include search path.\n"
+" --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default "
+"%d).\n"
+" if VAL is `none', do not indent;\n"
+" if VAL is `asis', preserve existing "
+"indentation.\n"
+" --reference-limit=NUM warn about at most NUM references (default %d).\n"
+" -U VAR undefine a variable, as with @clear.\n"
+" -v, --verbose explain what is being done.\n"
+" --version display version information and exit.\n"
+msgstr ""
+
+#: makeinfo/makeinfo.c:415
+msgid ""
+"\n"
+"The defaults for the @if... conditionals depend on the output format:\n"
+"if generating HTML, --ifhtml is on and the others are off;\n"
+"if generating Info or plain text, --ifinfo is on and the others are off.\n"
+"\n"
+"Examples:\n"
+" makeinfo foo.texi write Info to foo's @setfilename\n"
+" makeinfo --html foo.texi write HTML to foo's @setfilename\n"
+" makeinfo --no-headers -o - foo.texi write plain text to standard output\n"
+" makeinfo --number-sections foo.texi write Info with numbered sections\n"
+" makeinfo --no-split foo.texi write one Info file however big\n"
+"\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org."
msgstr ""
-#: makeinfo/makeinfo.c:4325
+#: makeinfo/makeinfo.c:508 makeinfo/makeinfo.c:531 makeinfo/makeinfo.c:592
#, c-format
-msgid "Node with %ctop as a section already exists"
+msgid "%s: %s arg must be numeric, not `%s'.\n"
msgstr ""
-#: makeinfo/makeinfo.c:4337
+#: makeinfo/makeinfo.c:521
#, c-format
-msgid "Here is the %ctop node"
+msgid "Couldn't open macro expansion output `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:4356
-#, c-format
-msgid "%ctop used before %cnode, defaulting to %s"
+#: makeinfo/makeinfo.c:524
+msgid "Cannot specify more than one macro expansion output"
msgstr ""
-#: makeinfo/makeinfo.c:4431
+#: makeinfo/makeinfo.c:561
#, c-format
-msgid "%c%s is obsolete; use %c%s instead"
+msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n"
msgstr ""
-#: makeinfo/makeinfo.c:4680
+#: makeinfo/makeinfo.c:602
#, c-format
-msgid "Node `%s' multiply defined (line %d is first definition at)"
+msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"
msgstr ""
-#: makeinfo/makeinfo.c:4753
+#: makeinfo/makeinfo.c:647
#, c-format
-msgid "Formatting node %s...\n"
+msgid "%s: missing file argument.\n"
msgstr ""
-#: makeinfo/makeinfo.c:4802
+#: makeinfo/makeinfo.c:810
#, c-format
-msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
+msgid "Expected `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:5085
+#: makeinfo/makeinfo.c:1229
#, c-format
-msgid "Node `%s''s Next field not pointed back to"
+msgid "No `%s' found in `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:5090
+#: makeinfo/makeinfo.c:1306
#, c-format
-msgid "This node (`%s') is the one with the bad `Prev'"
+msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n"
msgstr ""
-#: makeinfo/makeinfo.c:5130
+#: makeinfo/makeinfo.c:1327
#, c-format
-msgid "Node `%s's Prev field not pointed back to"
+msgid "Making %s file `%s' from `%s'.\n"
msgstr ""
-#: makeinfo/makeinfo.c:5134
+#: makeinfo/makeinfo.c:1358
#, c-format
-msgid "This node (`%s') has the bad Next"
+msgid "This is %s, produced by makeinfo version %s from %s.\n"
msgstr ""
-#: makeinfo/makeinfo.c:5146
+#: makeinfo/makeinfo.c:1377
#, c-format
-msgid "Node `%s' missing Up field"
+msgid ""
+"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"
msgstr ""
-#: makeinfo/makeinfo.c:5186
+#. If there were errors, and no --force, remove the output.
+#: makeinfo/makeinfo.c:1420
#, c-format
-msgid "`%s' has an Up field of `%s', but `%s' has no menu item for `%s'"
+msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n"
msgstr ""
-#: makeinfo/makeinfo.c:5217
+#: makeinfo/makeinfo.c:1635
#, c-format
-msgid "node `%s' has been referenced %d times"
+msgid "Unknown command `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:5229
+#: makeinfo/makeinfo.c:1657
#, c-format
-msgid "unreferenced node `%s'"
+msgid "Use braces to give a command as an argument to @%s"
msgstr ""
-#: makeinfo/makeinfo.c:5256
+#: makeinfo/makeinfo.c:1838
#, c-format
-msgid "%s reference to nonexistent node `%s'"
+msgid "%c%s expected `{...}'"
msgstr ""
-#: makeinfo/makeinfo.c:5668 makeinfo/makeinfo.c:5680
-#, c-format
-msgid "%cmenu seen before first node"
+#: makeinfo/makeinfo.c:1868
+msgid "Unmatched }"
msgstr ""
-#: makeinfo/makeinfo.c:5669 makeinfo/makeinfo.c:5681
-msgid "creating `Top' node"
+#: makeinfo/makeinfo.c:1918
+msgid "NO_NAME!"
msgstr ""
-#: makeinfo/makeinfo.c:5794
+#: makeinfo/makeinfo.c:1940
#, c-format
-msgid "`.' or `,' must follow cross reference, not %c"
+msgid "%c%s missing close brace"
msgstr ""
-#: makeinfo/makeinfo.c:5962
-#, c-format
-msgid "@image file `%s' unreadable: %s"
+#: makeinfo/makeinfo.c:2707 makeinfo/makeinfo.c:2884
+msgid "see "
msgstr ""
-#: makeinfo/makeinfo.c:5966
-msgid "@image missing filename argument"
+#: makeinfo/makeinfo.c:2707
+msgid "See "
msgstr ""
-#: makeinfo/makeinfo.c:6067
+#: makeinfo/makeinfo.c:2836
#, c-format
-msgid "%s requires letter or digit"
+msgid "`.' or `,' must follow cross reference, not %c"
msgstr ""
-#: makeinfo/makeinfo.c:6152
+#: makeinfo/makeinfo.c:3026
#, c-format
-msgid "Unmatched `%c%s'"
+msgid "No .png or .jpg for `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:6159
+#: makeinfo/makeinfo.c:3063
#, c-format
-msgid "`%c%s' needs something after it"
+msgid "@image file `%s' unreadable: %s"
msgstr ""
-#: makeinfo/makeinfo.c:6165
-#, c-format
-msgid "Bad argument to `%s', `%s', using `%s'"
+#: makeinfo/makeinfo.c:3070
+msgid "@image missing filename argument"
msgstr ""
-#: makeinfo/makeinfo.c:6338
+#: makeinfo/makeinfo.c:3259
#, c-format
-msgid "{No Value For \"%s\"}"
+msgid "{No value for `%s'}"
msgstr ""
-#: makeinfo/makeinfo.c:6388
+#: makeinfo/makeinfo.c:3313
#, c-format
msgid "%c%s requires a name"
msgstr ""
-#: makeinfo/makeinfo.c:6496
+#: makeinfo/makeinfo.c:3421
#, c-format
msgid "Reached eof before matching @end %s"
msgstr ""
-#: makeinfo/makeinfo.c:6722
-#, c-format
-msgid "The `%c%s' command is meaningless within a `@%s' block"
+#: makeinfo/multi.c:208
+msgid "Missing } in @multitable template"
msgstr ""
-#: makeinfo/makeinfo.c:6731
+#: makeinfo/multi.c:284
#, c-format
-msgid "%citemx is not meaningful inside of a `%s' block"
+msgid "ignoring stray text `%s' after @multitable"
msgstr ""
-#: makeinfo/makeinfo.c:6844
+#: makeinfo/multi.c:357
#, c-format
-msgid "%c%s found outside of an insertion block"
+msgid "Too many columns in multitable item (max %d)"
msgstr ""
-#: makeinfo/makeinfo.c:6935
+#: makeinfo/multi.c:401
#, c-format
-msgid "Missing `}' in %cdef arg"
+msgid "Cannot select column #%d in multitable"
msgstr ""
-#: makeinfo/makeinfo.c:7144 makeinfo/makeinfo.c:7164
-msgid "Function"
+#: makeinfo/multi.c:504
+msgid "ignoring @tab outside of multitable"
msgstr ""
-#: makeinfo/makeinfo.c:7148
-msgid "Macro"
+#: makeinfo/multi.c:534
+msgid "** Multicolumn output from last row:\n"
msgstr ""
-#: makeinfo/makeinfo.c:7152
-msgid "Special Form"
+#: makeinfo/multi.c:537
+#, c-format
+msgid "* column #%d: output = %s\n"
msgstr ""
-#: makeinfo/makeinfo.c:7156 makeinfo/makeinfo.c:7168
-msgid "Variable"
+#: makeinfo/node.c:250
+#, c-format
+msgid "Node `%s' previously defined at line %d"
msgstr ""
-#: makeinfo/makeinfo.c:7160
-msgid "User Option"
+#: makeinfo/node.c:514
+#, c-format
+msgid "Formatting node %s...\n"
msgstr ""
-#: makeinfo/makeinfo.c:7172
-msgid "Instance Variable"
+#: makeinfo/node.c:559
+#, c-format
+msgid "Node `%s' requires a sectioning command (e.g. %c%s)"
msgstr ""
-#: makeinfo/makeinfo.c:7176 makeinfo/makeinfo.c:7180
-msgid "Method"
+#: makeinfo/node.c:719
+#, c-format
+msgid "No node name specified for `%c%s' command"
msgstr ""
-#: makeinfo/makeinfo.c:7335
-#, c-format
-msgid "Must be in a `%s' insertion in order to use `%s'x"
+#: makeinfo/node.c:774
+msgid "Node:"
msgstr ""
-#: makeinfo/makeinfo.c:7407
-#, c-format
-msgid "%csp requires a positive numeric argument"
+#: makeinfo/node.c:783 makeinfo/sectioning.c:528
+msgid "Next:"
msgstr ""
-#: makeinfo/makeinfo.c:7650
-msgid "asis"
+#: makeinfo/node.c:793
+msgid "Previous:"
msgstr ""
-#: makeinfo/makeinfo.c:7652
-msgid "none"
+#: makeinfo/node.c:803
+msgid "Up:"
msgstr ""
-#: makeinfo/makeinfo.c:7674
+#: makeinfo/node.c:1012
#, c-format
-msgid "Bad argument to %c%s"
+msgid "%s reference to nonexistent node `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:7966
-#, c-format
-msgid "Unknown index `%s'"
+#: makeinfo/node.c:1029
+msgid "Menu"
msgstr ""
-#: makeinfo/makeinfo.c:8031
-#, c-format
-msgid "Index `%s' already exists"
+#: makeinfo/node.c:1031
+msgid "Cross"
msgstr ""
-#: makeinfo/makeinfo.c:8062
+#: makeinfo/node.c:1115
#, c-format
-msgid "Unknown index `%s' and/or `%s' in @synindex"
+msgid "Next field of node `%s' not pointed to"
msgstr ""
-#: makeinfo/makeinfo.c:8251
+#: makeinfo/node.c:1119
#, c-format
-msgid "Unknown index `%s' in @printindex"
+msgid "This node (%s) has the bad Prev"
msgstr ""
-#: makeinfo/makeinfo.c:8266
-msgid ""
-"* Menu:\n"
-"\n"
+#: makeinfo/node.c:1133
+msgid "Prev"
msgstr ""
-#: makeinfo/makeinfo.c:8453
+#: makeinfo/node.c:1176
#, c-format
-msgid "`%c%s' needs an argument `{...}', not just `%s'"
+msgid "Prev field of node `%s' not pointed to"
msgstr ""
-#: makeinfo/makeinfo.c:8468
+#: makeinfo/node.c:1180
#, c-format
-msgid "No closing brace for footnote `%s'"
-msgstr ""
-
-#: makeinfo/makeinfo.c:8507
-msgid "Footnote defined without parent node"
+msgid "This node (%s) has the bad Next"
msgstr ""
-#: makeinfo/makeinfo.c:8539
-msgid "-Footnotes"
+#: makeinfo/node.c:1194
+#, c-format
+msgid "`%s' has no Up field"
msgstr ""
-#: makeinfo/makeinfo.c:8594
-msgid ""
-"---------- Footnotes ----------\n"
-"\n"
+#: makeinfo/node.c:1197
+msgid "Up"
msgstr ""
-#: makeinfo/makeinfo.c:8690
+#: makeinfo/node.c:1265
#, c-format
-msgid "macro `%s' previously defined"
+msgid "Node `%s' lacks menu item for `%s' despite being its Up target"
msgstr ""
-#: makeinfo/makeinfo.c:8694
+#: makeinfo/node.c:1296
#, c-format
-msgid "here is the previous definition of `%s'"
+msgid "node `%s' has been referenced %d times"
msgstr ""
-#: makeinfo/makeinfo.c:8908
+#: makeinfo/node.c:1310
#, c-format
-msgid "Macro `%s' called with too many args"
+msgid "unreferenced node `%s'"
msgstr ""
-#: makeinfo/makeinfo.c:9060
+#: makeinfo/sectioning.c:116
#, c-format
-msgid "%cend macro not found"
+msgid "Appendix %c "
msgstr ""
-#: makeinfo/makeinfo.c:9100
+#. should never happen, but a poor guy, named Murphy ...
+#: makeinfo/sectioning.c:328 makeinfo/sectioning.c:410
#, c-format
-msgid "%cquote-arg only useful when the macro takes a single argument"
+msgid "Internal error (search_sectioning) \"%s\"!"
msgstr ""
-#: makeinfo/multi.c:206
+#: makeinfo/sectioning.c:468
#, c-format
-msgid "ignoring stray text `%s' after @multitable"
+msgid "%c%s is obsolete; use %c%s instead"
msgstr ""
-#: makeinfo/multi.c:277
+#: makeinfo/sectioning.c:484
#, c-format
-msgid "Too many columns in multitable item (max %d)"
+msgid "Node with %ctop as a section already exists"
msgstr ""
-#. impossible, I think.
-#: makeinfo/multi.c:304
-msgid "multitable item not in active multitable"
+#: makeinfo/sectioning.c:496
+#, c-format
+msgid "Here is the %ctop node"
msgstr ""
-#: makeinfo/multi.c:313
+#: makeinfo/sectioning.c:515
#, c-format
-msgid "Cannot select column #%d in multitable"
+msgid "%ctop used before %cnode, defaulting to %s"
msgstr ""
-#: makeinfo/multi.c:404
-msgid "ignoring @tab outside of multitable"
+#. in case we are writing stdout
+#: makeinfo/toc.c:212 makeinfo/toc.c:261 makeinfo/toc.c:262
+msgid "Table of Contents"
msgstr ""
-#: makeinfo/multi.c:428
-msgid "** Multicolumn output from last row:\n"
+#. in case we are writing stdout
+#: makeinfo/toc.c:292 makeinfo/toc.c:319 makeinfo/toc.c:320
+msgid "Short Contents"
msgstr ""
-#: makeinfo/multi.c:431
+#: makeinfo/toc.c:354
#, c-format
-msgid "* column #%d: output = %s\n"
+msgid "%s: TOC should be here, but it was not found"
msgstr ""
-#: util/install-info.c:123 util/install-info.c:136
-msgid "virtual memory exhausted"
-msgstr ""
-
-#: util/install-info.c:192
+#: util/install-info.c:151
#, c-format
msgid "%s: warning: "
msgstr ""
-#: util/install-info.c:213
+#: util/install-info.c:176 util/install-info.c:189
+msgid "virtual memory exhausted"
+msgstr ""
+
+#: util/install-info.c:232
#, c-format
msgid " for %s"
msgstr ""
-#: util/install-info.c:282
+#: util/install-info.c:381
#, c-format
msgid "\tTry `%s --help' for a complete list of options.\n"
msgstr ""
-#: util/install-info.c:290
+#: util/install-info.c:389
#, c-format
msgid ""
"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n"
"\n"
-"Install INFO-FILE in the Info directory file DIR-FILE.\n"
+"Install or delete dir entries from INFO-FILE in the Info directory file\n"
+"DIR-FILE.\n"
"\n"
"Options:\n"
-"--delete Delete existing entries in INFO-FILE;\n"
-" don't insert any new entries.\n"
-"--dir-file=NAME Specify file name of Info directory file.\n"
-" This is equivalent to using the DIR-FILE argument.\n"
-"--entry=TEXT Insert TEXT as an Info directory entry.\n"
-" TEXT should have the form of an Info menu item line\n"
-" plus zero or more extra lines starting with whitespace.\n"
-" If you specify more than one entry, they are all added.\n"
-" If you don't specify any entries, they are determined\n"
-" from information in the Info file itself.\n"
-"--help Display this help and exit.\n"
-"--info-file=FILE Specify Info file to install in the directory.\n"
-" This is equivalent to using the INFO-FILE argument.\n"
-"--info-dir=DIR Same as --dir-file=DIR/dir.\n"
-"--item=TEXT Same as --entry TEXT.\n"
-" An Info directory entry is actually a menu item.\n"
-"--quiet Suppress warnings.\n"
-"--remove Same as --delete.\n"
-"--section=SEC Put this file's entries in section SEC of the directory.\n"
-" If you specify more than one section, all the entries\n"
-" are added in each of the sections.\n"
-" If you don't specify any sections, they are determined\n"
-" from information in the Info file itself.\n"
-"--version Display version information and exit.\n"
+" --delete delete existing entries for INFO-FILE from DIR-FILE;\n"
+" don't insert any new entries.\n"
+" --dir-file=NAME specify file name of Info directory file.\n"
+" This is equivalent to using the DIR-FILE argument.\n"
+" --entry=TEXT insert TEXT as an Info directory entry.\n"
+" TEXT should have the form of an Info menu item line\n"
+" plus zero or more extra lines starting with "
+"whitespace.\n"
+" If you specify more than one entry, they are all "
+"added.\n"
+" If you don't specify any entries, they are determined\n"
+" from information in the Info file itself.\n"
+" --help display this help and exit.\n"
+" --info-file=FILE specify Info file to install in the directory.\n"
+" This is equivalent to using the INFO-FILE argument.\n"
+" --info-dir=DIR same as --dir-file=DIR/dir.\n"
+" --item=TEXT same as --entry TEXT.\n"
+" An Info directory entry is actually a menu item.\n"
+" --quiet suppress warnings.\n"
+" --remove same as --delete.\n"
+" --section=SEC put this file's entries in section SEC of the directory.\n"
+" If you specify more than one section, all the entries\n"
+" are added in each of the sections.\n"
+" If you don't specify any sections, they are determined\n"
+" from information in the Info file itself.\n"
+" --version display version information and exit.\n"
"\n"
-"Email bug reports to bug-texinfo@gnu.org.\n"
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
msgstr ""
-#: util/install-info.c:341
+#: util/install-info.c:442
+#, c-format
msgid ""
"This is the file .../info/dir, which contains the\n"
"topmost node of the Info hierarchy, called (dir)Top.\n"
"The first time you invoke Info you start off looking at this node.\n"
"\n"
-"File: dir,\tNode: Top,\tThis is the top of the INFO tree\n"
+"%s\tThis is the top of the INFO tree\n"
"\n"
" This (the Directory node) gives a menu of major topics.\n"
" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n"
@@ -1718,130 +2176,137 @@ msgid ""
"* Menu:\n"
msgstr ""
-#: util/install-info.c:364
+#: util/install-info.c:465
#, c-format
msgid "%s: could not read (%s) and could not create (%s)\n"
msgstr ""
-#: util/install-info.c:464 util/install-info.c:474
+#: util/install-info.c:549
+#, c-format
+msgid "%s: empty file"
+msgstr ""
+
+#: util/install-info.c:864 util/install-info.c:904
+msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
+msgstr ""
+
+#: util/install-info.c:899
+msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
+msgstr ""
+
+#: util/install-info.c:1147 util/install-info.c:1157
#, c-format
msgid "%s: Specify the Info directory only once.\n"
msgstr ""
-#: util/install-info.c:502
+#: util/install-info.c:1192
#, c-format
msgid "%s: Specify the Info file only once.\n"
msgstr ""
-#: util/install-info.c:550
+#: util/install-info.c:1241
#, c-format
msgid "excess command line argument `%s'"
msgstr ""
-#: util/install-info.c:554
+#: util/install-info.c:1245
msgid "No input file specified; try --help for more information."
msgstr ""
-#: util/install-info.c:556
+#: util/install-info.c:1247
msgid "No dir file specified; try --help for more information."
msgstr ""
-#: util/install-info.c:608 util/install-info.c:631
-msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY"
-msgstr ""
-
-#: util/install-info.c:627
-msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY"
-msgstr ""
-
-#. No need to abort here, the original info file may not have
-#. the requisite Texinfo commands. This is not something an
-#. installer should have to correct (it's a problem for the
-#. maintainer), and there's no need to cause subsequent parts of
-#. `make install' to fail.
-#: util/install-info.c:641
+#. No need to abort here, the original info file may not
+#. have the requisite Texinfo commands. This is not
+#. something an installer should have to correct (it's a
+#. problem for the maintainer), and there's no need to cause
+#. subsequent parts of `make install' to fail.
+#: util/install-info.c:1269
#, c-format
msgid "no info dir entry in `%s'"
msgstr ""
-#: util/install-info.c:852
+#: util/install-info.c:1384
#, c-format
msgid "menu item `%s' already exists, for file `%s'"
msgstr ""
-#: util/install-info.c:875
+#: util/install-info.c:1407
#, c-format
msgid "no entries found for `%s'; nothing deleted"
msgstr ""
-#: util/texindex.c:253
+#: util/texindex.c:244
+msgid "display this help and exit"
+msgstr ""
+
+#: util/texindex.c:246
msgid "keep temporary files around after processing"
msgstr ""
-#: util/texindex.c:255
+#: util/texindex.c:248
msgid "do not keep temporary files around after processing (default)"
msgstr ""
-#: util/texindex.c:257
+#: util/texindex.c:250
msgid "send output to FILE"
msgstr ""
-#: util/texindex.c:259
+#: util/texindex.c:252
msgid "display version information and exit"
msgstr ""
-#: util/texindex.c:261
-msgid "display this help and exit"
-msgstr ""
-
-#: util/texindex.c:272
+#: util/texindex.c:263
#, c-format
msgid "Usage: %s [OPTION]... FILE...\n"
msgstr ""
-#: util/texindex.c:273
+#: util/texindex.c:264
msgid "Generate a sorted index for each TeX output FILE.\n"
msgstr ""
-#. Avoid trigraph nonsense.
-#: util/texindex.c:275
-msgid "Usually FILE... is `foo.??' for a document `foo.texi'.\n"
+#: util/texindex.c:267
+#, c-format
+msgid "Usually FILE... is specified as `foo.%c%c' for a document `foo.texi'.\n"
msgstr ""
-#: util/texindex.c:276
+#. avoid trigraph in cat-id-tbl.c
+#: util/texindex.c:269
msgid ""
"\n"
"Options:\n"
msgstr ""
-#: util/texindex.c:290
+#: util/texindex.c:285
msgid ""
"\n"
-"Email bug reports to bug-texinfo@gnu.org."
+"Email bug reports to bug-texinfo@gnu.org,\n"
+"general questions and discussion to help-texinfo@gnu.org.\n"
msgstr ""
-#: util/texindex.c:917 util/texindex.c:951 util/texindex.c:1027
-#: util/texindex.c:1055
+#: util/texindex.c:885 util/texindex.c:919 util/texindex.c:995
+#: util/texindex.c:1023
#, c-format
msgid "%s: not a texinfo index file"
msgstr ""
-#: util/texindex.c:1012
+#: util/texindex.c:980
#, c-format
msgid "failure reopening %s"
msgstr ""
-#: util/texindex.c:1325
+#: util/texindex.c:1222
#, c-format
-msgid "entry %s follows an entry with a secondary name"
+msgid "No page number in %s"
msgstr ""
-#: util/texindex.c:1663
+#: util/texindex.c:1293
#, c-format
-msgid "%s; for file `%s'.\n"
+msgid "entry %s follows an entry with a secondary name"
msgstr ""
-#: util/texindex.c:1724
+#: util/texindex.c:1631
#, c-format
-msgid "Virtual memory exhausted in %s ()! Needed %d bytes."
+msgid "%s; for file `%s'.\n"
msgstr ""
diff --git a/gnu/usr.bin/texinfo/util/README b/gnu/usr.bin/texinfo/util/README
index 5385522543b..20d7bdafd86 100644
--- a/gnu/usr.bin/texinfo/util/README
+++ b/gnu/usr.bin/texinfo/util/README
@@ -2,3 +2,9 @@ Assorted Texinfo-related programs and scripts.
texindex, texi2dvi, and install-info get installed.
The other items here are for your amusement and/or hacking pleasure.
+
+You may also be interested in a2ps, an ASCII->PostScript program which
+has a Texinfo style option. Available from
+http://www.inf.enst.fr/~demaille/a2ps/ and
+ftp://ftp.enst.fr/pub/unix/a2ps/.
+
diff --git a/gnu/usr.bin/texinfo/util/deref.c b/gnu/usr.bin/texinfo/util/deref.c
index c15bc1abcf1..e08be48105f 100644
--- a/gnu/usr.bin/texinfo/util/deref.c
+++ b/gnu/usr.bin/texinfo/util/deref.c
@@ -1,44 +1,28 @@
/*
* deref.c
-
- * compile command: gcc -g -o deref deref.c
-
- * execute command: deref filename.texi > newfile.texi
-
- * To: bob@gnu.ai.mit.edu
- * Subject: another tool
- * Date: 18 Dec 91 16:03:13 EST (Wed)
- * From: gatech!skeeve!arnold@eddie.mit.edu (Arnold D. Robbins)
- *
- * Here is deref.c. It turns texinfo cross references back into the
- * one argument form. It has the same limitations as fixref; one xref per
- * line and can't cross lines. You can use it to find references that do
- * cross a line boundary this way:
- *
- * deref < manual > /dev/null 2>errs
- *
- * (This assumes bash or /bin/sh.) The file errs will have list of lines
- * where deref could not find matching braces.
- *
- * A gawk manual processed by deref goes through makeinfo without complaint.
- * Compile with gcc and you should be set.
- *
- * Enjoy,
- *
- * Arnold
- * -----------
- */
-
-/*
- * deref.c
*
* Make all texinfo references into the one argument form.
- *
+ *
* Arnold Robbins
- * arnold@skeeve.atl.ga.us
- * December, 1991
+ * arnold@gnu.org
+ * Written: December, 1991
+ * Released: November, 1998
*
- * Copyright, 1991, Arnold Robbins
+ * Copyright, 1991, 1998 Arnold David Robbins
+ *
+ * DEREF 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.
+ *
+ * DEREF 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
*/
/*
@@ -53,17 +37,19 @@
#include <errno.h>
/* for gcc on the 3B1, delete if this gives you grief */
-extern int fclose (FILE * fp);
-extern int fprintf (FILE * fp, const char *str,...);
+extern int fclose(FILE *fp);
+extern int fprintf(FILE *fp, const char *str, ...);
+/* extern int sprintf(char *str, const char *fmt, ...); */
+extern int fputs(char *buf, FILE *fp);
-extern char *strerror (int errno);
-extern char *strchr (char *cp, int ch);
-extern int strncmp (const char *s1, const char *s2, int count);
+extern char *strerror(int errno);
+extern char *strchr(char *cp, int ch);
+extern int strncmp(const char *s1, const char *s2, int count);
extern int errno;
-void process (FILE * fp);
-void repair (char *line, char *ref, int toffset);
+void process(FILE *fp);
+void repair(char *line, char *ref, int toffset);
int Errs = 0;
char *Name = "stdin";
@@ -73,166 +59,151 @@ char *Me;
/* main --- handle arguments, global vars for errors */
int
-main (int argc, char **argv)
+main(int argc, char **argv)
{
- FILE *fp;
-
- Me = argv[0];
-
- if (argc == 1)
- process (stdin);
- else
- for (argc--, argv++; *argv != NULL; argc--, argv++)
- {
- if (argv[0][0] == '-' && argv[0][1] == '\0')
- {
- Name = "stdin";
- Line = 0;
- process (stdin);
- }
- else if ((fp = fopen (*argv, "r")) != NULL)
- {
- Name = *argv;
- Line = 0;
- process (fp);
- fclose (fp);
- }
+ FILE *fp;
+
+ Me = argv[0];
+
+ if (argc == 1)
+ process(stdin);
else
- {
- fprintf (stderr, "%s: can not open: %s\n",
- *argv, strerror (errno));
- Errs++;
- }
- }
- return Errs != 0;
+ for (argc--, argv++; *argv != NULL; argc--, argv++) {
+ if (argv[0][0] == '-' && argv[0][1] == '\0') {
+ Name = "stdin";
+ Line = 0;
+ process(stdin);
+ } else if ((fp = fopen(*argv, "r")) != NULL) {
+ Name = *argv;
+ Line = 0;
+ process(fp);
+ fclose(fp);
+ } else {
+ fprintf(stderr, "%s: can not open: %s\n",
+ *argv, strerror(errno));
+ Errs++;
+ }
+ }
+ return Errs != 0;
}
/* isref --- decide if we've seen a texinfo cross reference */
int
-isref (char *cp)
+isref(char *cp)
{
- if (strncmp (cp, "@ref{", 5) == 0)
- return 5;
- if (strncmp (cp, "@xref{", 6) == 0)
- return 6;
- if (strncmp (cp, "@pxref{", 7) == 0)
- return 7;
- return 0;
+ if (strncmp(cp, "@ref{", 5) == 0)
+ return 5;
+ if (strncmp(cp, "@xref{", 6) == 0)
+ return 6;
+ if (strncmp(cp, "@pxref{", 7) == 0)
+ return 7;
+ return 0;
}
/* process --- read files, look for references, fix them up */
void
-process (FILE * fp)
+process(FILE *fp)
{
- char buf[BUFSIZ];
- char *cp;
- int count;
-
- while (fgets (buf, sizeof buf, fp) != NULL)
- {
- Line++;
- cp = strchr (buf, '@');
- if (cp == NULL)
- {
- fputs (buf, stdout);
- continue;
- }
- do
- {
- count = isref (cp);
- if (count == 0)
- {
- cp++;
- cp = strchr (cp, '@');
- if (cp == NULL)
- {
- fputs (buf, stdout);
- goto next;
+ char buf[BUFSIZ];
+ char *cp;
+ int count;
+
+ while (fgets(buf, sizeof buf, fp) != NULL) {
+ Line++;
+ cp = strchr(buf, '@');
+ if (cp == NULL) {
+ fputs(buf, stdout);
+ continue;
}
- continue;
- }
- /* got one */
- repair (buf, cp, count);
- break;
+ do {
+ count = isref(cp);
+ if (count == 0) {
+ cp++;
+ cp = strchr(cp, '@');
+ if (cp == NULL) {
+ fputs(buf, stdout);
+ goto next;
+ }
+ continue;
+ }
+ /* got one */
+ repair(buf, cp, count);
+ break;
+ } while (cp != NULL);
+ next: ;
}
- while (cp != NULL);
- next:;
- }
}
/* repair --- turn all texinfo cross references into the one argument form */
void
-repair (char *line, char *ref, int toffset)
+repair(char *line, char *ref, int toffset)
{
- int braces = 1; /* have seen first left brace */
- char *cp;
-
- ref += toffset;
-
- /* output line up to and including left brace in reference */
- for (cp = line; cp <= ref; cp++)
- putchar (*cp);
-
- /* output node name */
- for (; *cp && *cp != '}' && *cp != ',' && *cp != '\n'; cp++)
- putchar (*cp);
-
- if (*cp != '}')
- { /* could have been one arg xref */
- /* skip to matching right brace */
- for (; braces > 0; cp++)
- {
- switch (*cp)
- {
- case '@':
- cp++; /* blindly skip next character */
- break;
- case '{':
- braces++;
- break;
- case '}':
- braces--;
- break;
- case '\n':
- case '\0':
- Errs++;
- fprintf (stderr,
- "%s: %s: %d: mismatched braces\n",
- Me, Name, Line);
- goto out;
- default:
- break;
- }
+ int braces = 1; /* have seen first left brace */
+ char *cp;
+
+ ref += toffset;
+
+ /* output line up to and including left brace in reference */
+ for (cp = line; cp <= ref; cp++)
+ putchar(*cp);
+
+ /* output node name */
+ for (; *cp && *cp != '}' && *cp != ',' && *cp != '\n'; cp++)
+ putchar(*cp);
+
+ if (*cp != '}') { /* could have been one arg xref */
+ /* skip to matching right brace */
+ for (; braces > 0; cp++) {
+ switch (*cp) {
+ case '@':
+ cp++; /* blindly skip next character */
+ break;
+ case '{':
+ braces++;
+ break;
+ case '}':
+ braces--;
+ break;
+ case '\n':
+ case '\0':
+ Errs++;
+ fprintf(stderr,
+ "%s: %s: %d: mismatched braces\n",
+ Me, Name, Line);
+ goto out;
+ default:
+ break;
+ }
+ }
+ out:
+ ;
}
- out:
- ;
- }
-
- putchar ('}');
- if (*cp == '}')
- cp++;
-
- /* now the rest of the line */
- for (; *cp; cp++)
- putchar (*cp);
- return;
+
+ putchar('}');
+ if (*cp == '}')
+ cp++;
+
+ /* now the rest of the line */
+ for (; *cp; cp++)
+ putchar(*cp);
+ return;
}
/* strerror --- return error string, delete if in your library */
char *
-strerror (int errno)
+strerror(int errno)
{
- static char buf[100];
- extern int sys_nerr;
- extern char *sys_errlist[];
+ static char buf[100];
+ extern int sys_nerr;
+ extern char *sys_errlist[];
- if (errno < sys_nerr && errno >= 0)
- return sys_errlist[errno];
+ if (errno < sys_nerr && errno >= 0)
+ return sys_errlist[errno];
- sprintf (buf, "unknown error %d", errno);
- return buf;
+ sprintf(buf, "unknown error %d", errno);
+ return buf;
}
diff --git a/gnu/usr.bin/texinfo/util/fix-info-dir b/gnu/usr.bin/texinfo/util/fix-info-dir
new file mode 100644
index 00000000000..bf0901caa30
--- /dev/null
+++ b/gnu/usr.bin/texinfo/util/fix-info-dir
@@ -0,0 +1,317 @@
+#!/bin/sh
+#fix-info-dir (GNU texinfo)
+VERSION=1.1
+#Copyright (C) 1998 Free Software Foundation, Inc.
+#fix-info-dir comes with NO WARRANTY, to the extent permitted by law.
+#You may redistribute copies of fix-info-dir
+#under the terms of the GNU General Public License.
+#For more information about these matters, see the files named COPYING."
+#fix-info-dir was derived from update-info and gen-dir-node
+# The skeleton file contains info topic names in the
+# order they should appear in the output. There are three special
+# lines that alter the behavior: a line consisting of just "--" causes
+# the next line to be echoed verbatim to the output. A line
+# containing just "%%" causes all the remaining filenames (wildcards
+# allowed) in the rest of the file to be ignored. A line containing
+# just "!!" exits the script when reached (unless preceded by a line
+# containing just "--").
+#Author: Richard L. Hawes, rhawes@dmapub.dma.org.
+
+# ###SECTION 1### Constants
+set -h 2>/dev/null
+# ENVIRONMENT
+if test -z "$TMPDIR"; then
+ TMPDIR="/usr/tmp"
+fi
+if test -z "$LINENO"; then
+ LINENO="0"
+fi
+
+MENU_BEGIN='^\*\([ ]\)\{1,\}Menu:'
+MENU_ITEM='^\* ([^ ]).*:([ ])+\('
+MENU_FILTER1='s/^\*\([ ]\)\{1,\}/* /'
+MENU_FILTER2='s/\([ ]\)\{1,\}$//g'
+
+TMP_FILE1="${TMPDIR}/fx${$}.info"
+TMP_FILE2="${TMPDIR}/fy${$}.info"
+TMP_FILE_LIST="$TMP_FILE1 $TMP_FILE2"
+
+TRY_HELP_MSG="Try --help for more information"
+
+# ###SECTION 100### main program
+#variables set by options
+CREATE_NODE=""
+DEBUG=":"
+MODE=""
+#
+Total="0"
+Changed=""
+
+while test "$*"; do
+ case "$1" in
+ -c|--create) CREATE_NODE="y";;
+ --debug) set -eux; DEBUG="set>&2";;
+ -d|--delete) MODE="Detect_Invalid";;
+ +d);;
+ --version)
+cat<<VersionEOF
+fix-info-dir (GNU Texinfo) $VERSION
+Copyright (C) 1998 Free Software Foundation, Inc.
+fix-info-dir comes with NO WARRANTY, to the extent permitted by law.
+You may redistribute copies of fix-info-dir
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+Author: Richard L. Hawes
+VersionEOF
+ exit;;
+
+ --help)
+cat<<HelpEndOfFile
+Usage: fix-info-dir [OPTION]... [INFO_DIR/[DIR_FILE]] [SKELETON]
+
+It detects and inserts missing menu items into the info dir file.
+The info dir must be the current directory.
+
+Options:
+-c, --create create a new info node
+-d, --delete delete invalid menu items (ignore missing menu items)
+ --debug print debug information to standard error path
+ --help print this help message and exit
+ --version print current version and exit
+Backup of the info node has a '.old' suffix added. This is a shell script.
+Environment Variables: TMPDIR
+Email bug reports to bug-texinfo@gnu.org.
+HelpEndOfFile
+ exit;;
+
+ [-+]*) echo "$0:$LINENO: \"$1\" is not a valid option">&2
+ echo "$TRY_HELP_MSG">&2
+ exit 2;;
+ *) break;;
+ esac
+ shift
+done
+
+ORIGINAL_DIR=`pwd`
+
+if test "$#" -gt "0"; then
+ INFO_DIR="$1"
+ shift
+else
+ INFO_DIR=$DEFAULT_INFO_DIR
+fi
+
+if test ! -d "${INFO_DIR}"; then
+ DIR_FILE=`basename ${INFO_DIR}`;
+ INFO_DIR=`dirname ${INFO_DIR}`;
+else
+ DIR_FILE="dir"
+fi
+
+cd "$INFO_DIR"||exit
+
+
+if test "$CREATE_NODE"; then
+ if test "$#" -gt "0"; then
+ if test `expr $1 : /` = '1'; then
+ SKELETON="$1"
+ else
+ SKELETON="$ORIGINAL_DIR/$1"
+ fi
+ if test ! -r "$SKELETON" -a -f "$SKELETON"; then
+ echo "$0:$LINENO: $SKELETON is not readable">&2
+ exit 2
+ fi
+ shift
+ else
+ SKELETON=/dev/null
+
+ fi
+else
+ if test ! -f "$DIR_FILE"; then
+ echo "$0:$LINENO: $DIR_FILE is irregular or nonexistant">&2
+ exit 2
+ elif test ! -r "$DIR_FILE"; then
+ echo "$0:$LINENO: $DIR_FILE is not readable">&2
+ exit 2
+ elif test ! -w "$DIR_FILE"; then
+ echo "$0:$LINENO: $DIR_FILE is not writeable">&2
+ exit 2
+ fi
+fi
+
+if test "$#" -gt "0"; then
+ echo "$0:$LINENO: Too many parameters">&2
+ echo "$TRY_HELP_MSG">&2
+ exit 2
+fi
+
+if test -f "$DIR_FILE"; then
+ cp "$DIR_FILE" "$DIR_FILE.old"
+ echo "Backed up $DIR_FILE to $DIR_FILE.old."
+fi
+
+if test "$CREATE_NODE"; then
+ if test "$MODE"; then
+ echo "$0:$LINENO: ERROR: Illogical option combination: -d -c">&2
+ echo "$TRY_HELP_MSG">&2
+ exit 2
+ fi
+ echo "Creating new Info Node: `pwd`/$DIR_FILE"
+ Changed="y"
+
+{
+
+ ### output the dir header
+ echo "-*- Text -*-"
+ echo "This file was generated automatically by $0."
+ echo "This version was generated on `date`"
+ echo "by `whoami`@`hostname` for `pwd`"
+
+ cat<<DIR_FILE_END_OF_FILE
+This is the file .../info/$DIR_FILE, which contains the topmost node of the
+Info hierarchy. The first time you invoke Info you start off
+looking at that node, which is ($DIR_FILE)Top.
+
+
+File: $DIR_FILE Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs topic, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu: The list of major topics begins on the next line.
+
+DIR_FILE_END_OF_FILE
+
+### go through the list of files in the skeleton. If an info file
+### exists, grab the ENTRY information from it. If an entry exists
+### use it, otherwise create a minimal $DIR_FILE entry.
+
+ # Read one line from the file. This is so that we can echo lines with
+ # whitespace and quoted characters in them.
+ while read fileline; do
+ # flag fancy features
+ if test ! -z "$echoline"; then # echo line
+ echo "$fileline"
+ echoline=""
+ continue
+ elif test "${fileline}" = "--"; then
+ # echo the next line
+ echoline="1"
+ continue
+ elif test "${fileline}" = "%%"; then
+ # skip remaining files listed in skeleton file
+ skip="1"
+ continue
+ elif test "${fileline}" = "!!"; then
+ # quit now
+ break
+ fi
+
+ # handle files if they exist
+ for file in $fileline""; do
+ fname=
+ if test -z "$file"; then
+ break
+ fi
+ # Find the file to operate upon.
+ if test -r "$file"; then
+ fname="$file"
+ elif test -r "${file}.info"; then
+ fname="${file}.info"
+ elif test -r "${file}.gz"; then
+ fname="${file}.gz"
+ elif test -r "${file}.info.gz"; then
+ fname="${file}.info.gz"
+ else
+ echo "$0:$LINENO: can't find info file for ${file}?">&2
+ continue
+ fi
+
+ # if we found something and aren't skipping, do the entry
+ if test "$skip"; then
+ continue
+ fi
+
+ infoname=`echo $file|sed -e 's/.info$//'`
+ entry=`zcat -f $fname|\
+ sed -e '1,/START-INFO-DIR-ENTRY/d'\
+ -e '/END-INFO-DIR-ENTRY/,$d'`
+ if [ ! -z "${entry}" ]; then
+ echo "${entry}"
+ else
+ echo "* ${infoname}: (${infoname})."
+ fi
+ Total=`expr "$Total" + "1"`
+ done
+ done
+}>$DIR_FILE<$SKELETON
+fi
+
+trap ' eval "$DEBUG"; rm -f $TMP_FILE_LIST; exit ' 0
+trap ' rm -f $TMP_FILE_LIST
+ exit ' 1
+trap ' rm -f $TMP_FILE_LIST
+ echo "$0:$LINENO: received INT signal.">&2
+ exit ' 2
+trap ' rm -f $TMP_FILE_LIST
+ echo "$0:$LINENO: received QUIT signal.">&2
+ exit ' 3
+
+sed -e "1,/$MENU_BEGIN/d" -e "$MENU_FILTER1" -e "$MENU_FILTER2"<$DIR_FILE\
+|sed -n -e '/\* /{
+s/).*$//g
+s/\.gz$//
+s/\.info$//
+s/^.*(//p
+}'|sort -u>$TMP_FILE1
+ls -F|sed -e '/\/$/d' -e '/[-.][0-9]/d'\
+ -e "/^$DIR_FILE\$/d" -e "/^$DIR_FILE.old\$/d"\
+ -e 's/[*@]$//' -e 's/\.gz$//' -e 's/\.info$//'|sort>$TMP_FILE2
+
+if test -z "$MODE"; then
+ #Detect Missing
+ DONE_MSG="total menu item(s) were inserted into `pwd`/$DIR_FILE"
+ for Info_Name in `comm -13 $TMP_FILE1 $TMP_FILE2`; do
+ if test -r "$Info_Name"; then
+ Info_File="$Info_Name"
+ elif test -r "${Info_Name}.info"; then
+ Info_File="${Info_Name}.info"
+ elif test -r "${Info_Name}.gz"; then
+ Info_File="${Info_Name}.gz"
+ elif test -r "${Info_Name}.info.gz"; then
+ Info_File="${Info_Name}.info.gz"
+ else
+ echo "$0:$LINENO: can't find info file for ${Info_Name}?">&2
+ continue
+ fi
+ Changed="y"
+ if install-info $Info_File $DIR_FILE; then
+ Total=`expr "$Total" + "1"`
+ fi
+ done
+else
+ # Detect Invalid
+ DONE_MSG="total invalid menu item(s) were removed from `pwd`/$DIR_FILE"
+ for Info_Name in `comm -23 $TMP_FILE1 $TMP_FILE2`; do
+ Changed="y"
+ if install-info --remove $Info_Name $DIR_FILE; then
+ Total=`expr "$Total" + "1"`
+ fi
+ done
+fi
+
+# print summary
+if test "$Changed"; then
+ echo "$Total $DONE_MSG"
+else
+ echo "Nothing to do"
+fi
+rm -f $TMP_FILE_LIST
+eval "$DEBUG"
+exit 0
diff --git a/gnu/usr.bin/texinfo/util/fixref.gawk b/gnu/usr.bin/texinfo/util/fixref.gawk
new file mode 100644
index 00000000000..f0e3cf6d606
--- /dev/null
+++ b/gnu/usr.bin/texinfo/util/fixref.gawk
@@ -0,0 +1,145 @@
+#! /usr/local/bin/gawk -f
+
+# fixref.awk --- fix xrefs in texinfo documents
+# Copyright, 1991, Arnold David Robbins, arnold@skeeve.atl.ga.us
+# Copyright, 1998, Arnold David Robbins, arnold@gnu.org
+
+# FIXREF 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.
+#
+# FIXREF 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
+
+# Updated: Jul 21 1992 --- change unknown
+# Updated: Jul 18 1997 --- bug fix
+
+# usage: gawk -f fixref.awk input-file > output-file
+# or if you have #!: fixref.awk input-file > output-file
+
+# Limitations:
+# 1. no more than one cross reference on a line
+# 2. cross references may not cross a newline
+
+BEGIN \
+{
+ # we make two passes over the file. To do that we artificially
+ # tweak the argument vector to do a variable assignment
+
+ if (ARGC != 2) {
+ printf("usage: %s texinfo-file\n", ARGV[0]) > "/dev/stderr"
+ exit 1
+ }
+ ARGV[2] = "pass=2"
+ ARGV[3] = ARGV[1]
+ ARGC = 4
+
+ # examine paragraphs
+ RS = ""
+
+ heading = "@(chapter|appendix|unnumbered|(appendix(sec|subsec|subsubsec))|section|subsection|subsubsection|unnumberedsec|heading|top)"
+
+ pass = 1
+
+ # put space between paragraphs on output
+ ORS = "\n\n"
+}
+
+pass == 1 && NF == 0 { next }
+
+# pass == 1 && /@node/ \
+# bug fix 7/18/96
+pass == 1 && /^@node/ \
+{
+ lname = name = ""
+ n = split($0, lines, "\n")
+ for (i = 1; i <= n; i++) {
+ if (lines[i] ~ ("^" heading)) {
+ sub(heading, "", lines[i])
+ sub(/^[ \t]*/, "", lines[i])
+ lname = lines[i]
+# printf "long name is '%s'\n", lines[i]
+ } else if (lines[i] ~ /@node/) {
+ sub(/@node[ \t]*/, "", lines[i])
+ sub(/[ \t]*,.*$/, "", lines[i])
+ name = lines[i]
+# printf "node name is '%s'\n", lines[i]
+ }
+ }
+ if (name && lname)
+ names[name] = lname
+ else if (lname)
+ printf("node name for %s missing!\n", lname) > "/dev/stderr"
+ else
+ printf("long name for %s missing!\n", name) > "/dev/stderr"
+
+ if (name ~ /:/)
+ printf("node `%s' contains a `:'\n", name) > "/dev/stderr"
+
+ if (lname) {
+ if (lname ~ /:/)
+ printf("name `%s' contains a `:'\n", lname) > "/dev/stderr"
+ else if (lname ~ /,/) {
+ printf("name `%s' contains a `,'\n", lname) > "/dev/stderr"
+ gsub(/,/, " ", lname)
+ names[name] = lname # added 7/18/97
+ }
+ }
+}
+
+pass == 2 && /@(x|px)?ref{/ \
+{
+ # split the paragraph into lines
+ # write them out one by one after fixing them
+ n = split($0, lines, "\n")
+ for (i = 1; i <= n; i++)
+ if (lines[i] ~ /@(x|px)?ref{/) {
+ res = updateref(lines[i])
+ printf "%s\n", res
+ } else
+ printf "%s\n", lines[i]
+
+ printf "\n" # avoid ORS
+ next
+}
+
+function updateref(orig, refkind, line)
+{
+ line = orig # work on a copy
+
+ # find the beginning of the reference
+ match(line, "@(x|px)?ref{")
+ refkind = substr(line, RSTART, RLENGTH)
+
+ # pull out just the node name
+ sub(/.*ref{/, "", line)
+ sub(/}.*$/, "", line)
+ sub(/,.*/, "", line)
+
+# debugging
+# printf("found ref to node '%s'\n", line) > "/dev/stderr"
+
+ # If the node name and the section name are the same
+ # we don't want to bother doing this.
+
+ if (! (line in names)) # sanity checking
+ printf("no long name for %s\n", line) > "/dev/stderr"
+ else if (names[line] != line && names[line] !~ /[:,]/) {
+ # build up new ref
+ newref = refkind line ", ," names[line] "}"
+ pat = refkind line "[^}]*}"
+
+ sub(pat, newref, orig)
+ }
+
+ return orig
+}
+
+pass == 2 { print }
diff --git a/gnu/usr.bin/texinfo/util/outline.gawk b/gnu/usr.bin/texinfo/util/outline.gawk
new file mode 100644
index 00000000000..329bb17529a
--- /dev/null
+++ b/gnu/usr.bin/texinfo/util/outline.gawk
@@ -0,0 +1,145 @@
+#! /usr/local/bin/gawk -f
+
+# texi.outline --- produce an outline from a texinfo source file
+#
+# Copyright (C) 1998 Arnold David Robbins (arnold@gnu.org)
+#
+# TEXI.OUTLINE 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.
+#
+# TEXI.OUTLINE 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
+
+# NOTE:
+# This program uses gensub(), which is specific to gawk.
+# With some work (split, substr, etc), it could be made to work
+# on other awks, but it's not worth the trouble for me.
+
+BEGIN \
+{
+ # Levels at which different nodes can be
+ Level["@top"] = 0
+ Level["@appendix"] = 1
+ Level["@chapter"] = 1
+ Level["@majorheading"] = 1
+ Level["@unnumbered"] = 1
+ Level["@appendixsec"] = 2
+ Level["@heading"] = 2
+ Level["@section"] = 2
+ Level["@unnumberedsec"] = 2
+ Level["@unnumberedsubsec"] = 3
+ Level["@appendixsubsec"] = 3
+ Level["@subheading"] = 3
+ Level["@subsection"] = 3
+ Level["@appendixsubsubsec"] = 4
+ Level["@subsubheading"] = 4
+ Level["@subsubsection"] = 4
+ Level["@unnumberedsubsubsec"] = 4
+
+ # insure that we were called correctly
+ if (ARGC != 2) {
+ printf("usage: %s texinfo-file\n", ARGV[0]) > "/dev/stderr"
+ exit 1
+ }
+
+ # init header counters
+ app_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ app_h = 0
+ l1_h = l2_h = l3_h = l4_h = 0
+}
+
+# skip lines we're not interested in
+/^[^@]/ || ! ($1 in Level) { next }
+
+Level[$1] == 1 {
+ if ($1 !~ /^@unnumbered/ || $1 !~ /heading/)
+ l1_h++
+ l2_h = l3_h = l4_h = 0
+ Ntabs = 0
+ Number = makenumber($1)
+ Title = maketitle($0)
+ print_title()
+}
+
+Level[$1] == 2 {
+ l2_h++
+ l3_h = l4_h = 0
+ Ntabs = 1
+ Number = makenumber($1)
+ Title = maketitle($0)
+ print_title()
+}
+
+Level[$1] == 3 {
+ l3_h++
+ l4_h = 0
+ Ntabs = 2
+ Number = makenumber($1)
+ Title = maketitle($0)
+ print_title()
+}
+
+Level[$1] == 4 {
+ l4_h++
+ Ntabs = 3
+ Number = makenumber($1)
+ Title = maketitle($0)
+ print_title()
+}
+
+# maketitle --- extract title
+
+function maketitle(str, text)
+{
+ $1 = "" # clobber section keyword
+ text = $0
+ gsub(/^[ \t]*/, "", text)
+ text = gensub(/@[a-z]+{/, "", "g", text)
+ text = gensub(/([^@])}/, "\\1", "g", text)
+ return text
+}
+
+# print_title --- print the title
+
+function print_title( i)
+{
+ for (i = 1; i <= Ntabs; i++)
+ printf "\t"
+ printf("%s %s\n", Number, Title)
+}
+
+# makenumber --- construct a heading number from levels and section command
+
+function makenumber(command, result, lev1)
+{
+ result = ""
+ if (command ~ /^@appendix/) {
+ if (Level[command] == 1)
+ app_h++
+
+ lev1 = substr(app_letters, app_h, 1)
+ } else if (command ~ /^@unnumbered/ || command ~ /heading/) {
+ lev1 = "(unnumbered)"
+ } else
+ lev1 = l1_h ""
+
+ result = lev1 "."
+ if (l2_h > 0) {
+ result = result l2_h "."
+ if (l3_h > 0) {
+ result = result l3_h "."
+ if (l4_h > 0) {
+ result = result l4_h "."
+ }
+ }
+ }
+ return result
+}
diff --git a/gnu/usr.bin/texinfo/util/prepinfo.awk b/gnu/usr.bin/texinfo/util/prepinfo.awk
new file mode 100644
index 00000000000..273c97f8460
--- /dev/null
+++ b/gnu/usr.bin/texinfo/util/prepinfo.awk
@@ -0,0 +1,356 @@
+#! /usr/local/bin/gawk -f
+
+# prepinfo.awk --- fix node lines and menus
+#
+# Copyright, 1998, Arnold Robbins, arnold@gnu.org
+#
+# PREPINFO 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.
+#
+# PREPINFO 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
+
+BEGIN \
+{
+ # manifest constants
+ TRUE = 1
+ FALSE = 0
+
+ # Levels at which different nodes can be
+ Level["@top"] = 0
+ Level["@appendix"] = 1
+ Level["@chapter"] = 1
+ Level["@majorheading"] = 1
+ Level["@unnumbered"] = 1
+ Level["@appendixsec"] = 2
+ Level["@heading"] = 2
+ Level["@section"] = 2
+ Level["@unnumberedsec"] = 2
+ Level["@unnumberedsubsec"] = 3
+ Level["@appendixsubsec"] = 3
+ Level["@subheading"] = 3
+ Level["@subsection"] = 3
+ Level["@appendixsubsubsec"] = 4
+ Level["@subsubheading"] = 4
+ Level["@subsubsection"] = 4
+ Level["@unnumberedsubsubsec"] = 4
+
+ # Length of menus
+ Menumargin = 78
+
+ # Length of menu item
+ Min_menitem_length = 29
+
+ # insure that we were called correctly
+ if (ARGC != 2) {
+ printf("usage: %s texinfo-file\n", ARGV[0]) > "/dev/stderr"
+ exit 1
+ }
+
+ # Arrange for two passes over input file
+ Pass = 1
+ ARGV[2] = "Pass=2"
+ ARGV[3] = ARGV[1]
+ ARGC = 4
+ Lastlevel = -1
+
+ # Initialize stacks
+ Up[-1] = "(dir)"
+ Prev[0] = "(dir)"
+
+ if (Debug == "args") {
+ for (i = 0; i < ARGC; i++)
+ printf("ARGV[%d] = %s\n", i, ARGV[i]) > "/dev/stderr"
+ }
+}
+
+$1 == "@node" \
+{
+ Name = getnodename($0)
+ Nodeseen = TRUE
+
+ if ((l = length(Name)) > Maxlen)
+ Maxlen = l
+
+ if (Debug == "nodenames")
+ printf("Name = %s\n", Name) > "/dev/stderr"
+
+ if (Pass == 1)
+ next
+}
+
+Pass == 1 && /^@c(omment)?[ \t]+fakenode/ \
+{
+ if (Debug == "fakenodes")
+ printf("fakenode at %d\n", FNR) > "/dev/stderr"
+ Fakenode = TRUE
+ next
+}
+
+Pass == 1 && ($1 in Level) \
+{
+ # skip fake nodes --- titles without associated @node lines
+ if (Fakenode) {
+ if (Debug == "fakenodes")
+ printf("%s at %d is a fakenode\n", $1, FNR) > "/dev/stderr"
+ Fakenode = FALSE
+ next
+ }
+
+ if (Debug == "titles")
+ printf("Processing %s: Name = %s\n", $1, Name) > "/dev/stderr"
+
+ # save type
+ type = $1
+
+ if (! Nodeseen) {
+ err_prefix()
+ printf("%s line with no @node or fakenode line\n",
+ type) > "/dev/stderr"
+ Badheading[FNR] = 1
+ # ??? used ???
+ next
+ } else
+ Nodeseen = FALSE # reset it
+
+ # Squirrel away the info
+ levelnum = Level[type]
+ Node[Name ".level"] = levelnum
+ Node[Name ".name"] = Name
+ if (Debug == "titles") {
+ printf("Node[%s\".level\"] = %s\n", Name, Node[Name ".level"]) > "/dev/stderr"
+ printf("Node[%s\".name\"] = %s\n", Name, Node[Name ".name"]) > "/dev/stderr"
+ }
+
+ if (levelnum == Lastlevel) { # e.g., two sections in a row
+ Node[Name ".up"] = Up[levelnum - 1]
+ if (levelnum in Prev) {
+ Node[Prev[levelnum] ".next"] = Name
+ Node[Name ".prev"] = Prev[levelnum]
+ }
+ Prev[levelnum] = Name
+ Up[levelnum] = Name # ???
+ } else if (levelnum < Lastlevel) { # section, now chapter
+ Lastlevel = levelnum
+ Node[Name ".up"] = Up[levelnum - 1]
+ if (levelnum in Prev) {
+ Node[Name ".prev"] = Prev[levelnum]
+ Node[Prev[levelnum] ".next"] = Name
+ }
+ Prev[levelnum] = Name
+ Up[levelnum] = Name
+ } else { # chapter, now section, levelnum > Lastlevel
+ Node[Name ".up"] = Up[levelnum - 1]
+ Node[Up[Lastlevel] ".child"] = Name
+ Up[levelnum] = Name
+ Prev[levelnum] = Name
+ Lastlevel = levelnum
+ }
+
+ # For master menu
+ if (Level[$1] >= 2)
+ List[++Sequence] = Name
+
+ if (Debug == "titles") {
+ printf("Node[%s\".prev\"] = %s\n", Name, Node[Name ".prev"]) > "/dev/stderr"
+ printf("Node[%s\".up\"] = %s\n", Name, Node[Name ".up"]) > "/dev/stderr"
+ printf("Node[%s\".child\"] = %s\n", Name, Node[Name ".child"]) > "/dev/stderr"
+ }
+}
+
+Pass == 2 && Debug == "dumptitles" && FNR <= 1 \
+{
+ for (i in Node)
+ printf("Node[%s] = %s\n", i, Node[i]) | "sort 1>&2"
+ close("sort 1>&2")
+}
+
+/^@menu/ && Pass == 1, /^@end[ \t]+menu/ && Pass == 1 \
+{
+ if (/^@menu/ || /^@end[ \t]+menu/)
+ next
+
+# if (Debug == "menu")
+# printf("processing: %s\n", $0) > "/dev/stderr"
+
+ if (/^\*/) {
+ if (In_menitem) { # file away info from previousline
+ Node[node ".mendesc"] = desc
+ Node[node ".longdesc"] = longdesc
+ if (Debug == "mendesc") {
+ printf("Node[%s.mendesc] = %s\n",
+ node, Node[node ".mendesc"]) > "/dev/stderr"
+ printf("Node[%s.longdesc] = %s\n",
+ node, Node[node ".longdesc"]) > "/dev/stderr"
+ }
+ }
+ In_menitem = TRUE
+
+ # pull apart menu item
+ $1 = "" # nuke ``*''
+ $0 = $0 # reparse line
+ i1 = index($0, ":")
+ if (i1 <= 0) {
+ err_prefix()
+ printf("badly formed menu item") > "/dev/stderr"
+ next
+ }
+ if (substr($0, i1+1, 1) != ":") { # desc: node. long desc
+ i2 = index($0, ".")
+ if (i2 <= 0) {
+ err_prefix()
+ printf("badly formed menu item") > "/dev/stderr"
+ next
+ }
+ desc = substr($0, 1, i1 - 1)
+ sub(/^[ \t]+/, "", node)
+ sub(/[ \t]+$/, "", node)
+ longdesc = substr($0, i2 + 1)
+ } else { # nodname:: long desc
+ desc = ""
+ node = substr($0, 1, i1 - 1)
+ sub(/^[ \t]+/, "", node)
+ sub(/[ \t]+$/, "", node)
+ longdesc = substr($0, i1 + 2)
+ }
+ } else if (In_menitem) { # continuation line
+ longdesc = longdesc " " $0
+ } else
+ In_menitem = FALSE
+
+ Node[node ".mendesc"] = desc
+ Node[node ".longdesc"] = longdesc
+ if (Debug == "mendesc") {
+ printf("Node[%s.mendesc] = %s\n",
+ node, Node[node ".mendesc"]) > "/dev/stderr"
+ printf("Node[%s.longdesc] = %s\n",
+ node, Node[node ".longdesc"]) > "/dev/stderr"
+ }
+
+ if (Debug == "menu")
+ printf("Menu:: Name %s: desc %s: longdesc %s\n",
+ node, desc, longdesc) > "/dev/stderr"
+}
+
+function err_prefix()
+{
+ printf("%s: %s: %d: ", ARGV[0], FILENAME, FNR) > "/dev/stderr"
+}
+
+function getnodename(str)
+{
+ sub(/@node[ \t]+/, "", str)
+ sub(/,.*/, "", str)
+ if (Debug == "nodenames")
+ printf("getnodename: return %s\n", str) > "/dev/stderr"
+ return str
+}
+
+Pass == 2 && /^@node/ \
+{
+ Name = getnodename($0)
+
+ # Top node is special. It's next is the first child
+ n = Node[Name ".next"]
+ if (Node[Name ".level"] == 0 && n == "")
+ n = Node[Name ".child"]
+
+ printf("@node %s, %s, %s, %s\n", Name, n,
+ Node[Name ".prev"] ? Node[Name ".prev"] : Node[Name ".up"],
+ Node[Name ".up"])
+ next
+}
+
+Pass == 2 && /^@menu/ \
+{
+ # First, nuke current contents of menu
+ do {
+ if ((getline) <= 0) {
+ err_prefix()
+ printf("unexpected EOF inside menu\n") > "/dev/stderr"
+ exit 1
+ }
+ } while (! /^@end[ \t]+menu/)
+
+ # next, compute maximum length of a node name
+ max = 0
+ for (n = Node[Name ".child"]; (n ".next") in Node; n = Node[n ".next"]) {
+ if ((n ".desc") in Node)
+ s = Node[n ".desc"] ": " n "."
+ else
+ s = n "::"
+ l = length(s)
+ if (l > max)
+ max = l
+ }
+ if (max < Min_menitem_length)
+ max = Min_menitem_length
+
+ # now dump the menu
+ print "@menu"
+
+ for (n = Node[Name ".child"]; (n ".next") in Node; n = Node[n ".next"]) {
+ print_menuitem(n, max)
+ }
+ print_menuitem(n, max)
+
+ if (Name == "Top") { # Master Menu
+ if (Maxlen < Min_menitem_length)
+ Maxlen = Min_menitem_length
+ print ""
+ for (i = 1; i <= Sequence; i++)
+ print_menuitem(List[i], Maxlen)
+ print ""
+ }
+ print "@end menu"
+ next
+}
+
+Pass == 2 # print
+
+
+function print_menuitem(n, max, nodesc, i, dwords, count, p)
+{
+ nodesc = FALSE
+ if (! ((n ".longdesc") in Node)) {
+ err_prefix()
+ printf("warning: %s: no long description\n", n) > "/dev/stderr"
+ nodesc = TRUE
+ } else {
+ for (i in dwords)
+ delete dwords[i]
+ count = split(Node[n ".longdesc"], dwords, "[ \t\n]+")
+ }
+ if ((n ".desc") in Node)
+ s = Node[n ".desc"] ": " n "."
+ else
+ s = n "::"
+ printf("* %-*s", max, s)
+
+ if (Debug == "mendescitem")
+ printf("<* %-*s>\n", max, s) > "/dev/stderr"
+
+ p = max + 2
+ if (! nodesc) {
+ for (i = 1; i <= count; i++) {
+ l = length(dwords[i])
+ if (l == 0)
+ continue
+ if (p + l + 1 > Menumargin) {
+ printf("\n%*s", max + 2, " ")
+ p = max + 2
+ }
+ printf(" %s", dwords[i])
+ p += l + 1
+ }
+ }
+ print ""
+}
diff --git a/gnu/usr.bin/texinfo/util/texi-docstring-magic.el b/gnu/usr.bin/texinfo/util/texi-docstring-magic.el
new file mode 100644
index 00000000000..c645fbcf699
--- /dev/null
+++ b/gnu/usr.bin/texinfo/util/texi-docstring-magic.el
@@ -0,0 +1,347 @@
+;; texi-docstring-magic.el -- munge internal docstrings into texi
+;;
+;; Keywords: lisp, docs, tex
+;; Author: David Aspinall <da@dcs.ed.ac.uk>
+;; Copyright (C) 1998 David Aspinall
+;; Maintainer: David Aspinall <da@dcs.ed.ac.uk>
+;;
+;; $Id: texi-docstring-magic.el,v 1.1.1.1 2000/02/09 01:26:24 espie Exp $
+;;
+;; This package is distributed under the terms of the
+;; GNU General Public License, Version 2.
+;; You should have a copy of the GPL with your version of
+;; GNU Emacs or the Texinfo distribution.
+;;
+;;
+;; This package generates Texinfo source fragments from Emacs
+;; docstrings. This avoids documenting functions and variables
+;; in more than one place, and automatically adds Texinfo markup
+;; to docstrings.
+;;
+;; It relies heavily on you following the Elisp documentation
+;; conventions to produce sensible output, check the Elisp manual
+;; for details. In brief:
+;;
+;; * The first line of a docstring should be a complete sentence.
+;; * Arguments to functions should be written in upper case: ARG1..ARGN
+;; * User options (variables users may want to set) should have docstrings
+;; beginning with an asterisk.
+;;
+;; Usage:
+;;
+;; Write comments of the form:
+;;
+;; @c TEXI DOCSTRING MAGIC: my-package-function-or-variable-name
+;;
+;; In your texi source, mypackage.texi. From within an Emacs session
+;; where my-package is loaded, visit mypackage.texi and run
+;; M-x texi-docstring-magic to update all of the documentation strings.
+;;
+;; This will insert @defopt, @deffn and the like underneath the
+;; magic comment strings.
+;;
+;; The default value for user options will be printed.
+;;
+;; Symbols are recognized if they are defined for faces, functions,
+;; or variables (in that order).
+;;
+;; Automatic markup rules:
+;;
+;; 1. Indented lines are gathered into @lisp environment.
+;; 2. Pieces of text `stuff' or surrounded in quotes marked up with @samp.
+;; 3. Words *emphasized* are made @strong{emphasized}
+;; 4. Words sym-bol which are symbols become @code{sym-bol}.
+;; 5. Upper cased words ARG corresponding to arguments become @var{arg}.
+;; In fact, you can any word longer than three letters, so that
+;; metavariables can be used easily.
+;; FIXME: to escape this, use `ARG'
+;; 6. Words 'sym which are lisp-quoted are marked with @code{'sym}.
+;;
+;; -----
+;;
+;; Useful key binding when writing Texinfo:
+;;
+;; (define-key TeXinfo-mode-map "C-cC-d" 'texi-docstring-magic-insert-magic)
+;;
+;; -----
+;;
+;; Useful enhancements to do:
+;;
+;; * Use customize properties (e.g. group, simple types)
+;; * Look for a "texi-docstring" property for symbols
+;; so TeXInfo can be defined directly in case automatic markup
+;; goes badly wrong.
+;; * Add tags to special comments so that user can specify face,
+;; function, or variable binding for a symbol in case more than
+;; one binding exists.
+;;
+;; ------
+
+(defun texi-docstring-magic-splice-sep (strings sep)
+ "Return concatenation of STRINGS spliced together with separator SEP."
+ (let (str)
+ (while strings
+ (setq str (concat str (car strings)))
+ (if (cdr strings)
+ (setq str (concat str sep)))
+ (setq strings (cdr strings)))
+ str))
+
+(defconst texi-docstring-magic-munge-table
+ '(;; 1. Indented lines are gathered into @lisp environment.
+ ("\\(^.*\\S-.*$\\)"
+ t
+ (let
+ ((line (match-string 0 docstring)))
+ (if (eq (char-syntax (string-to-char line)) ?\ )
+ ;; whitespace
+ (if in-quoted-region
+ line
+ (setq in-quoted-region t)
+ (concat "@lisp\n" line))
+ ;; non-white space
+ (if in-quoted-region
+ (progn
+ (setq in-quoted-region nil)
+ (concat "@end lisp\n" line))
+ line))))
+ ;; 2. Pieces of text `stuff' or surrounded in quotes
+ ;; are marked up with @samp. NB: Must be backquote
+ ;; followed by forward quote for this to work.
+ ;; Can't use two forward quotes else problems with
+ ;; symbols.
+ ;; Odd hack: because ' is a word constituent in text/texinfo
+ ;; mode, putting this first enables the recognition of args
+ ;; and symbols put inside quotes.
+ ("\\(`\\([^']+\\)'\\)"
+ t
+ (concat "@samp{" (match-string 2 docstring) "}"))
+ ;; 3. Words *emphasized* are made @strong{emphasized}
+ ("\\(\\*\\(\\w+\\)\\*\\)"
+ t
+ (concat "@strong{" (match-string 2 docstring) "}"))
+ ;; 4. Words sym-bol which are symbols become @code{sym-bol}.
+ ;; Must have at least one hyphen to be recognized,
+ ;; terminated in whitespace, end of line, or punctuation.
+ ;; (Only consider symbols made from word constituents
+ ;; and hyphen.
+ ("\\(\\(\\w+\\-\\(\\w\\|\\-\\)+\\)\\)\\(\\s\)\\|\\s-\\|\\s.\\|$\\)"
+ (or (boundp (intern (match-string 2 docstring)))
+ (fboundp (intern (match-string 2 docstring))))
+ (concat "@code{" (match-string 2 docstring) "}"
+ (match-string 4 docstring)))
+ ;; 5. Upper cased words ARG corresponding to arguments become
+ ;; @var{arg}
+ ;; In fact, include any word so long as it is more than 3 characters
+ ;; long. (Comes after symbols to avoid recognizing the
+ ;; lowercased form of an argument as a symbol)
+ ;; FIXME: maybe we don't want to downcase stuff already
+ ;; inside @samp
+ ;; FIXME: should - terminate? should _ be included?
+ ("\\([A-Z0-9\\-]+\\)\\(/\\|\)\\|}\\|\\s-\\|\\s.\\|$\\)"
+ (or (> (length (match-string 1 docstring)) 3)
+ (member (downcase (match-string 1 docstring)) args))
+ (concat "@var{" (downcase (match-string 1 docstring)) "}"
+ (match-string 2 docstring)))
+
+ ;; 6. Words 'sym which are lisp quoted are
+ ;; marked with @code.
+ ("\\(\\(\\s-\\|^\\)'\\(\\(\\w\\|\\-\\)+\\)\\)\\(\\s\)\\|\\s-\\|\\s.\\|$\\)"
+ t
+ (concat (match-string 2 docstring)
+ "@code{'" (match-string 3 docstring) "}"
+ (match-string 5 docstring)))
+ ;; 7,8. Clean up for @lisp environments left with spurious newlines
+ ;; after 1.
+ ("\\(\\(^\\s-*$\\)\n@lisp\\)" t "@lisp")
+ ("\\(\\(^\\s-*$\\)\n@end lisp\\)" t "@end lisp"))
+ "Table of regexp matches and replacements used to markup docstrings.
+Format of table is a list of elements of the form
+ (regexp predicate replacement-form)
+If regexp matches and predicate holds, then replacement-form is
+evaluated to get the replacement for the match.
+predicate and replacement-form can use variables arg,
+and forms such as (match-string 1 docstring)
+Match string 1 is assumed to determine the
+length of the matched item, hence where parsing restarts from.
+The replacement must cover the whole match (match string 0),
+including any whitespace included to delimit matches.")
+
+
+(defun texi-docstring-magic-munge-docstring (docstring args)
+ "Markup DOCSTRING for texi according to regexp matches."
+ (let ((case-fold-search nil))
+ (dolist (test texi-docstring-magic-munge-table docstring)
+ (let ((regexp (nth 0 test))
+ (predicate (nth 1 test))
+ (replace (nth 2 test))
+ (i 0)
+ in-quoted-region)
+
+ (while (and
+ (< i (length docstring))
+ (string-match regexp docstring i))
+ (setq i (match-end 1))
+ (if (eval predicate)
+ (let* ((origlength (- (match-end 0) (match-beginning 0)))
+ (replacement (eval replace))
+ (newlength (length replacement)))
+ (setq docstring
+ (replace-match replacement t t docstring))
+ (setq i (+ i (- newlength origlength))))))
+ (if in-quoted-region
+ (setq docstring (concat docstring "\n@end lisp"))))))
+ ;; Force a new line after (what should be) the first sentence,
+ ;; if not already a new paragraph.
+ (let*
+ ((pos (string-match "\n" docstring))
+ (needscr (and pos
+ (not (string= "\n"
+ (substring docstring
+ (1+ pos)
+ (+ pos 2)))))))
+ (if (and pos needscr)
+ (concat (substring docstring 0 pos)
+ "@*\n"
+ (substring docstring (1+ pos)))
+ docstring)))
+
+(defun texi-docstring-magic-texi (env grp name docstring args &optional endtext)
+ "Make a texi def environment ENV for entity NAME with DOCSTRING."
+ (concat "@def" env (if grp (concat " " grp) "") " " name
+ " "
+ (texi-docstring-magic-splice-sep args " ")
+ ;; " "
+ ;; (texi-docstring-magic-splice-sep extras " ")
+ "\n"
+ (texi-docstring-magic-munge-docstring docstring args)
+ "\n"
+ (or endtext "")
+ "@end def" env "\n"))
+
+(defun texi-docstring-magic-format-default (default)
+ "Make a default value string for the value DEFAULT.
+Markup as @code{stuff} or @lisp stuff @end lisp."
+ (let ((text (format "%S" default)))
+ (concat
+ "\nThe default value is "
+ (if (string-match "\n" text)
+ ;; Carriage return will break @code, use @lisp
+ (if (stringp default)
+ (concat "the string: \n@lisp\n" default "\n@end lisp\n")
+ (concat "the value: \n@lisp\n" text "\n@end lisp\n"))
+ (concat "@code{" text "}.\n")))))
+
+
+(defun texi-docstring-magic-texi-for (symbol)
+ (cond
+ ;; Faces
+ ((find-face symbol)
+ (let*
+ ((face symbol)
+ (name (symbol-name face))
+ (docstring (or (face-doc-string face)
+ "Not documented."))
+ (useropt (eq ?* (string-to-char docstring))))
+ ;; Chop off user option setting
+ (if useropt
+ (setq docstring (substring docstring 1)))
+ (texi-docstring-magic-texi "fn" "Face" name docstring nil)))
+ ((fboundp symbol)
+ ;; Functions.
+ ;; We don't handle macros, aliases, or compiled fns properly.
+ (let*
+ ((function symbol)
+ (name (symbol-name function))
+ (docstring (or (documentation function)
+ "Not documented."))
+ (def (symbol-function function))
+ (argsyms (cond ((eq (car-safe def) 'lambda)
+ (nth 1 def))))
+ (args (mapcar 'symbol-name argsyms)))
+ (if (commandp function)
+ (texi-docstring-magic-texi "fn" "Command" name docstring args)
+ (texi-docstring-magic-texi "un" nil name docstring args))))
+ ((boundp symbol)
+ ;; Variables.
+ (let*
+ ((variable symbol)
+ (name (symbol-name variable))
+ (docstring (or (documentation-property variable
+ 'variable-documentation)
+ "Not documented."))
+ (useropt (eq ?* (string-to-char docstring)))
+ (default (if useropt
+ (texi-docstring-magic-format-default
+ (default-value symbol)))))
+ ;; Chop off user option setting
+ (if useropt
+ (setq docstring (substring docstring 1)))
+ (texi-docstring-magic-texi
+ (if useropt "opt" "var") nil name docstring nil default)))
+ (t
+ (error "Don't know anything about symbol %s" (symbol-name symbol)))))
+
+(defconst texi-docstring-magic-comment
+ "@c TEXI DOCSTRING MAGIC:"
+ "Magic string in a texi buffer expanded into @defopt, or @deffn.")
+
+(defun texi-docstring-magic ()
+ "Update all texi docstring magic annotations in buffer."
+ (interactive)
+ (save-excursion
+ (goto-char (point-min))
+ (let ((magic (concat "^"
+ (regexp-quote texi-docstring-magic-comment)
+ "\\s-*\\(\\(\\w\\|\\-\\)+\\)$"))
+ p
+ symbol)
+ (while (re-search-forward magic nil t)
+ (setq symbol (intern (match-string 1)))
+ (forward-line)
+ (setq p (point))
+ ;; If comment already followed by an environment, delete it.
+ (if (and
+ (looking-at "@def\\(\\w+\\)\\s-")
+ (search-forward (concat "@end def" (match-string 1)) nil t))
+ (progn
+ (forward-line)
+ (delete-region p (point))))
+ (insert
+ (texi-docstring-magic-texi-for symbol))))))
+
+(defun texi-docstring-magic-face-at-point ()
+ (ignore-errors
+ (let ((stab (syntax-table)))
+ (unwind-protect
+ (save-excursion
+ (set-syntax-table emacs-lisp-mode-syntax-table)
+ (or (not (zerop (skip-syntax-backward "_w")))
+ (eq (char-syntax (char-after (point))) ?w)
+ (eq (char-syntax (char-after (point))) ?_)
+ (forward-sexp -1))
+ (skip-chars-forward "'")
+ (let ((obj (read (current-buffer))))
+ (and (symbolp obj) (find-face obj) obj)))
+ (set-syntax-table stab)))))
+
+(defun texi-docstring-magic-insert-magic (symbol)
+ (interactive
+ (let* ((v (or (variable-at-point)
+ (function-at-point)
+ (texi-docstring-magic-face-at-point)))
+ (val (let ((enable-recursive-minibuffers t))
+ (completing-read
+ (if v
+ (format "Magic docstring for symbol (default %s): " v)
+ "Magic docstring for symbol: ")
+ obarray '(lambda (sym)
+ (or (boundp sym)
+ (fboundp sym)
+ (find-face sym)))
+ t nil 'variable-history))))
+ (list (if (equal val "") v (intern val)))))
+ (insert "\n" texi-docstring-magic-comment " " (symbol-name symbol)))
+
+
+(provide 'texi-docstring-magic)