From 4ca63c0cf0f37ab550bcca8b36f67f631cf1f8d0 Mon Sep 17 00:00:00 2001 From: Lorry Date: Tue, 17 Jan 2012 15:29:11 +0000 Subject: Tarball conversion --- ABOUT-NLS | 1068 ++ AUTHORS | 39 + COPYING | 674 + ChangeLog | 8317 +++++++++ ChangeLog.46 | 12516 +++++++++++++ INSTALL | 49 + INSTALL.generic | 234 + INTRODUCTION | 108 + Makefile.am | 74 + Makefile.in | 936 + NEWS | 888 + README | 112 + README.dev | 52 + TODO | 212 + aclocal.m4 | 997 + build-aux/compile | 142 + build-aux/config.guess | 1500 ++ build-aux/config.rpath | 672 + build-aux/config.sub | 1608 ++ build-aux/depcomp | 571 + build-aux/install-sh | 442 + build-aux/link-warning.h | 28 + build-aux/mdate-sh | 201 + build-aux/missing | 367 + build-aux/texinfo.tex | 0 config.in | 540 + configure | 21790 ++++++++++++++++++++++ configure.ac | 240 + djgpp/README | 431 + djgpp/config.bat | 237 + djgpp/config.sed | 104 + djgpp/config.site | 62 + doc/Makefile.am | 132 + doc/Makefile.in | 1135 ++ doc/README | 44 + doc/epsf.tex | 644 + doc/fdl.texi | 451 + doc/info-stnd.texi | 2270 +++ doc/info.1 | 101 + doc/info.5 | 72 + doc/info.texi | 1511 ++ doc/infokey.1 | 42 + doc/install-info.1 | 129 + doc/makeinfo.1 | 222 + doc/pdftexi2dvi.1 | 187 + doc/refcard/txicmdcheck | 131 + doc/refcard/txirefcard-a4.pdf | Bin 0 -> 94645 bytes doc/refcard/txirefcard.pdf | Bin 0 -> 95335 bytes doc/refcard/txirefcard.tex | 968 + doc/stamp-1 | 4 + doc/stamp-vti | 4 + doc/texi2dvi.1 | 187 + doc/texi2pdf.1 | 187 + doc/texindex.1 | 42 + doc/texinfo.5 | 61 + doc/texinfo.tex | 8997 +++++++++ doc/texinfo.txi | 21234 +++++++++++++++++++++ doc/txi-cs.tex | 73 + doc/txi-de.tex | 78 + doc/txi-en.tex | 68 + doc/txi-es.tex | 59 + doc/txi-fr.tex | 72 + doc/txi-it.tex | 68 + doc/txi-nb.tex | 67 + doc/txi-nl.tex | 67 + doc/txi-pl.tex | 70 + doc/txi-pt.tex | 68 + doc/txi-ru.tex | 71 + doc/txi-sr.tex | 67 + doc/txi-tr.tex | 81 + doc/txi-uk.tex | 68 + doc/version-stnd.texi | 4 + doc/version.texi | 4 + gnulib/lib/Makefile.am | 881 + gnulib/lib/Makefile.in | 1159 ++ gnulib/lib/alloca.in.h | 56 + gnulib/lib/argz.c | 406 + gnulib/lib/argz.in.h | 161 + gnulib/lib/config.charset | 649 + gnulib/lib/error.c | 338 + gnulib/lib/error.h | 65 + gnulib/lib/exitfail.c | 24 + gnulib/lib/exitfail.h | 18 + gnulib/lib/getopt.c | 1186 ++ gnulib/lib/getopt.in.h | 225 + gnulib/lib/getopt1.c | 170 + gnulib/lib/getopt_int.h | 130 + gnulib/lib/gettext.h | 270 + gnulib/lib/gettimeofday.c | 142 + gnulib/lib/intprops.h | 77 + gnulib/lib/localcharset.c | 462 + gnulib/lib/localcharset.h | 41 + gnulib/lib/malloc.c | 57 + gnulib/lib/malloca.c | 137 + gnulib/lib/malloca.h | 134 + gnulib/lib/malloca.valgrind | 7 + gnulib/lib/mbchar.c | 35 + gnulib/lib/mbchar.h | 350 + gnulib/lib/mbiter.h | 215 + gnulib/lib/mbscasecmp.c | 102 + gnulib/lib/mbschr.c | 56 + gnulib/lib/mbslen.c | 48 + gnulib/lib/mbsncasecmp.c | 103 + gnulib/lib/mbsstr.c | 385 + gnulib/lib/mbswidth.c | 175 + gnulib/lib/mbswidth.h | 60 + gnulib/lib/mbuiter.h | 222 + gnulib/lib/memchr.c | 172 + gnulib/lib/memcmp.c | 361 + gnulib/lib/memcpy.c | 35 + gnulib/lib/memmem.c | 76 + gnulib/lib/memmove.c | 26 + gnulib/lib/mempcpy.c | 29 + gnulib/lib/mkstemp.c | 44 + gnulib/lib/ref-add.sin | 30 + gnulib/lib/ref-del.sin | 25 + gnulib/lib/setenv.c | 330 + gnulib/lib/stdbool.in.h | 119 + gnulib/lib/stdint.in.h | 522 + gnulib/lib/stdlib.in.h | 240 + gnulib/lib/stpcpy.c | 48 + gnulib/lib/str-kmp.h | 150 + gnulib/lib/str-two-way.h | 429 + gnulib/lib/strdup.c | 55 + gnulib/lib/streq.h | 176 + gnulib/lib/strerror.c | 49 + gnulib/lib/string.in.h | 585 + gnulib/lib/strndup.c | 37 + gnulib/lib/strnlen.c | 31 + gnulib/lib/strnlen1.c | 35 + gnulib/lib/strnlen1.h | 39 + gnulib/lib/sys_stat.in.h | 291 + gnulib/lib/sys_time.in.h | 52 + gnulib/lib/tempname.c | 314 + gnulib/lib/tempname.h | 39 + gnulib/lib/unistd.in.h | 340 + gnulib/lib/unitypes.h | 26 + gnulib/lib/uniwidth.h | 64 + gnulib/lib/uniwidth/cjk.h | 37 + gnulib/lib/uniwidth/width.c | 323 + gnulib/lib/unsetenv.c | 90 + gnulib/lib/wchar.in.h | 91 + gnulib/lib/wctype.in.h | 178 + gnulib/lib/wcwidth.c | 51 + gnulib/lib/xalloc-die.c | 41 + gnulib/lib/xalloc.h | 280 + gnulib/lib/xmalloc.c | 122 + gnulib/lib/xsetenv.c | 38 + gnulib/lib/xsetenv.h | 31 + gnulib/m4/alloca.m4 | 46 + gnulib/m4/argz.m4 | 80 + gnulib/m4/codeset.m4 | 21 + gnulib/m4/eealloc.m4 | 32 + gnulib/m4/environ.m4 | 36 + gnulib/m4/error.m4 | 22 + gnulib/m4/exitfail.m4 | 13 + gnulib/m4/extensions.m4 | 82 + gnulib/m4/getopt.m4 | 83 + gnulib/m4/gettext.m4 | 381 + gnulib/m4/gettimeofday.m4 | 101 + gnulib/m4/glibc21.m4 | 30 + gnulib/m4/gnulib-cache.m4 | 53 + gnulib/m4/gnulib-common.m4 | 91 + gnulib/m4/gnulib-comp.m4 | 412 + gnulib/m4/iconv.m4 | 180 + gnulib/m4/include_next.m4 | 110 + gnulib/m4/inline.m4 | 40 + gnulib/m4/intlmacosx.m4 | 51 + gnulib/m4/lib-ld.m4 | 110 + gnulib/m4/lib-link.m4 | 739 + gnulib/m4/lib-prefix.m4 | 185 + gnulib/m4/localcharset.m4 | 16 + gnulib/m4/longlong.m4 | 106 + gnulib/m4/malloc.m4 | 41 + gnulib/m4/malloca.m4 | 14 + gnulib/m4/mbchar.m4 | 13 + gnulib/m4/mbiter.m4 | 17 + gnulib/m4/mbrtowc.m4 | 31 + gnulib/m4/mbscasecmp.m4 | 16 + gnulib/m4/mbschr.m4 | 16 + gnulib/m4/mbslen.m4 | 16 + gnulib/m4/mbsncasecmp.m4 | 16 + gnulib/m4/mbsstr.m4 | 16 + gnulib/m4/mbstate_t.m4 | 30 + gnulib/m4/mbswidth.m4 | 42 + gnulib/m4/memchr.m4 | 18 + gnulib/m4/memcmp.m4 | 31 + gnulib/m4/memcpy.m4 | 18 + gnulib/m4/memmem.m4 | 83 + gnulib/m4/memmove.m4 | 18 + gnulib/m4/mempcpy.m4 | 26 + gnulib/m4/mkstemp.m4 | 56 + gnulib/m4/nls.m4 | 31 + gnulib/m4/onceonly.m4 | 90 + gnulib/m4/po.m4 | 449 + gnulib/m4/progtest.m4 | 92 + gnulib/m4/setenv.m4 | 71 + gnulib/m4/stdbool.m4 | 115 + gnulib/m4/stdint.m4 | 395 + gnulib/m4/stdlib_h.m4 | 47 + gnulib/m4/stpcpy.m4 | 26 + gnulib/m4/strdup.m4 | 22 + gnulib/m4/strerror.m4 | 47 + gnulib/m4/string_h.m4 | 89 + gnulib/m4/strndup.m4 | 53 + gnulib/m4/strnlen.m4 | 31 + gnulib/m4/sys_stat_h.m4 | 55 + gnulib/m4/sys_time_h.m4 | 57 + gnulib/m4/tempname.m4 | 22 + gnulib/m4/unistd_h.m4 | 63 + gnulib/m4/wchar.m4 | 54 + gnulib/m4/wchar_t.m4 | 20 + gnulib/m4/wctype.m4 | 74 + gnulib/m4/wcwidth.m4 | 85 + gnulib/m4/wint_t.m4 | 28 + gnulib/m4/xalloc.m4 | 24 + info/Makefile.am | 82 + info/Makefile.in | 810 + info/README | 30 + info/dir.c | 290 + info/display.c | 526 + info/display.h | 79 + info/doc.h | 102 + info/dribble.c | 67 + info/dribble.h | 40 + info/echo-area.c | 1525 ++ info/echo-area.h | 84 + info/filesys.c | 710 + info/filesys.h | 92 + info/footnotes.c | 267 + info/footnotes.h | 43 + info/gc.c | 91 + info/gc.h | 36 + info/indices.c | 743 + info/indices.h | 44 + info/info-utils.c | 729 + info/info-utils.h | 136 + info/info.c | 707 + info/info.h | 163 + info/infodoc.c | 1193 ++ info/infokey.c | 924 + info/infokey.h | 127 + info/infomap.c | 1285 ++ info/infomap.h | 81 + info/key.h | 34 + info/m-x.c | 213 + info/makedoc.c | 584 + info/man.c | 678 + info/man.h | 38 + info/nodemenu.c | 346 + info/nodes.c | 1269 ++ info/nodes.h | 156 + info/pcterm.c | 759 + info/search.c | 677 + info/search.h | 77 + info/session.c | 5455 ++++++ info/session.h | 249 + info/signals.c | 294 + info/signals.h | 96 + info/termdep.h | 58 + info/terminal.c | 872 + info/terminal.h | 129 + info/tilde.c | 340 + info/tilde.h | 53 + info/variables.c | 319 + info/variables.h | 67 + info/window.c | 1958 ++ info/window.h | 270 + install-info/Makefile.am | 31 + install-info/Makefile.in | 816 + install-info/README | 15 + install-info/install-info.c | 2685 +++ install-info/tests/Makefile.am | 237 + install-info/tests/Makefile.in | 872 + install-info/tests/README | 172 + install-info/tests/defs.in | 48 + install-info/tests/ii-0001-expected-dir-file | 24 + install-info/tests/ii-0001-input-dir-file | 23 + install-info/tests/ii-0001-input-info-file | 11 + install-info/tests/ii-0001-test | 28 + install-info/tests/ii-0002-expected-dir-file | 25 + install-info/tests/ii-0002-input-dir-file | 23 + install-info/tests/ii-0002-input-info-file | 12 + install-info/tests/ii-0002-test | 28 + install-info/tests/ii-0003-expected-dir-file | 25 + install-info/tests/ii-0003-input-dir-file | 23 + install-info/tests/ii-0003-input-info-file | 15 + install-info/tests/ii-0003-test | 28 + install-info/tests/ii-0004-expected-dir-file | 28 + install-info/tests/ii-0004-input-dir-file | 26 + install-info/tests/ii-0004-input-info-file | 16 + install-info/tests/ii-0004-test | 28 + install-info/tests/ii-0005-expected-dir-file | 27 + install-info/tests/ii-0005-input-dir-file | 23 + install-info/tests/ii-0005-input-info-file | 16 + install-info/tests/ii-0005-test | 28 + install-info/tests/ii-0006-expected-dir-file | 24 + install-info/tests/ii-0006-input-dir-file | 23 + install-info/tests/ii-0006-input-info-file | 11 + install-info/tests/ii-0006-test | 28 + install-info/tests/ii-0007-expected-dir-file | 25 + install-info/tests/ii-0007-input-dir-file | 24 + install-info/tests/ii-0007-input-info-file | 11 + install-info/tests/ii-0007-test | 28 + install-info/tests/ii-0008-expected-dir-file | 25 + install-info/tests/ii-0008-input-dir-file | 23 + install-info/tests/ii-0008-input-info-file | 12 + install-info/tests/ii-0008-test | 28 + install-info/tests/ii-0009-expected-dir-file | 24 + install-info/tests/ii-0009-input-dir-file | 23 + install-info/tests/ii-0009-input-info-file | 11 + install-info/tests/ii-0009-test | 28 + install-info/tests/ii-0010-expected-dir-file | 25 + install-info/tests/ii-0010-input-dir-file | 23 + install-info/tests/ii-0010-input-info-file | 11 + install-info/tests/ii-0010-test | 28 + install-info/tests/ii-0011-expected-dir-file | 24 + install-info/tests/ii-0011-input-dir-file | 23 + install-info/tests/ii-0011-input-info-file | 11 + install-info/tests/ii-0011-test | 28 + install-info/tests/ii-0012-expected-dir-file | 25 + install-info/tests/ii-0012-input-dir-file | 24 + install-info/tests/ii-0012-input-info-file | 11 + install-info/tests/ii-0012-test | 28 + install-info/tests/ii-0013-expected-dir-file | 24 + install-info/tests/ii-0013-input-dir-file | 24 + install-info/tests/ii-0013-input-info-file | 11 + install-info/tests/ii-0013-test | 28 + install-info/tests/ii-0014-expected-dir-file | 24 + install-info/tests/ii-0014-input-dir-file | 25 + install-info/tests/ii-0014-input-info-file | 11 + install-info/tests/ii-0014-test | 28 + install-info/tests/ii-0015-expected-dir-file | 25 + install-info/tests/ii-0015-input-dir-file | 24 + install-info/tests/ii-0015-input-info-file | 12 + install-info/tests/ii-0015-test | 28 + install-info/tests/ii-0016-expected-dir-file | 23 + install-info/tests/ii-0016-input-dir-file | 23 + install-info/tests/ii-0016-input-info-file | 7 + install-info/tests/ii-0016-test | 28 + install-info/tests/ii-0017-expected-dir-file | 18 + install-info/tests/ii-0017-input-dir-file | 15 + install-info/tests/ii-0017-input-info-file | 11 + install-info/tests/ii-0017-test | 28 + install-info/tests/ii-0018-input-dir-file | 0 install-info/tests/ii-0018-input-info-file | 11 + install-info/tests/ii-0018-test | 25 + install-info/tests/ii-0019-input-dir-file | 2 + install-info/tests/ii-0019-input-info-file | 11 + install-info/tests/ii-0019-test | 25 + install-info/tests/ii-0020-expected-dir-file | 27 + install-info/tests/ii-0020-input-dir-file | 23 + install-info/tests/ii-0020-input-info-file | 7 + install-info/tests/ii-0020-test | 27 + install-info/tests/ii-0021-expected-dir-file | 25 + install-info/tests/ii-0021-input-dir-file | 23 + install-info/tests/ii-0021-input-info-file | 7 + install-info/tests/ii-0021-test | 27 + install-info/tests/ii-0022-expected-dir-file | 27 + install-info/tests/ii-0022-input-dir-file | 24 + install-info/tests/ii-0022-input-info-file | 7 + install-info/tests/ii-0022-test | 28 + install-info/tests/ii-0023-expected-dir-file | 26 + install-info/tests/ii-0023-input-dir-file | 23 + install-info/tests/ii-0023-input-info-file | 7 + install-info/tests/ii-0023-test | 28 + install-info/tests/ii-0024-expected-dir-file | 26 + install-info/tests/ii-0024-input-dir-file | 23 + install-info/tests/ii-0024-input-info-file | 11 + install-info/tests/ii-0024-test | 28 + install-info/tests/ii-0025-expected-dir-file | 24 + install-info/tests/ii-0025-input-dir-file | 23 + install-info/tests/ii-0025-input-info-file | 11 + install-info/tests/ii-0025-test | 28 + install-info/tests/ii-0026-expected-dir-file | 24 + install-info/tests/ii-0026-input-dir-file | 23 + install-info/tests/ii-0026-input-info-file | 11 + install-info/tests/ii-0026-test | 28 + install-info/tests/ii-0027-expected-dir-file | 26 + install-info/tests/ii-0027-input-dir-file | 23 + install-info/tests/ii-0027-input-info-file | 11 + install-info/tests/ii-0027-test | 28 + install-info/tests/ii-0028-expected-dir-file | 24 + install-info/tests/ii-0028-input-dir-file | 23 + install-info/tests/ii-0028-input-info-file | 11 + install-info/tests/ii-0028-test | 28 + install-info/tests/ii-0029-expected-dir-file | 25 + install-info/tests/ii-0029-input-dir-file | 23 + install-info/tests/ii-0029-input-info-file | 11 + install-info/tests/ii-0029-test | 28 + install-info/tests/ii-0030-expected-dir-file | 24 + install-info/tests/ii-0030-input-dir-file | 23 + install-info/tests/ii-0030-input-info-file | 11 + install-info/tests/ii-0030-test | 28 + install-info/tests/ii-0031-expected-dir-file | 24 + install-info/tests/ii-0031-input-dir-file | 23 + install-info/tests/ii-0031-input-info-file | 11 + install-info/tests/ii-0031-test | 28 + install-info/tests/ii-0032-expected-dir-file | 24 + install-info/tests/ii-0032-input-dir-file | 23 + install-info/tests/ii-0032-input-info-file | 11 + install-info/tests/ii-0032-test | 28 + install-info/tests/ii-0033-expected-dir-file | 26 + install-info/tests/ii-0033-input-dir-file | 23 + install-info/tests/ii-0033-input-info-file | 10 + install-info/tests/ii-0033-test | 28 + install-info/tests/ii-0034-expected-dir-file | 24 + install-info/tests/ii-0034-input-dir-file | 23 + install-info/tests/ii-0034-input-info-file | 10 + install-info/tests/ii-0034-test | 28 + install-info/tests/ii-0035-expected-dir-file | 24 + install-info/tests/ii-0035-input-dir-file | 23 + install-info/tests/ii-0035-input-info-file | 11 + install-info/tests/ii-0035-test | 28 + install-info/tests/ii-0036-expected-dir-file | 24 + install-info/tests/ii-0036-input-dir-file | 23 + install-info/tests/ii-0036-input-info-file | 11 + install-info/tests/ii-0036-test | 28 + install-info/tests/ii-0037-expected-dir-file | 24 + install-info/tests/ii-0037-input-dir-file | 23 + install-info/tests/ii-0037-input-info-file | 11 + install-info/tests/ii-0037-test | 28 + install-info/tests/ii-0038-expected-dir-file | 29 + install-info/tests/ii-0038-input-dir-file | 23 + install-info/tests/ii-0038-input-info-file | 7 + install-info/tests/ii-0038-test | 28 + install-info/tests/ii-0039-expected-dir-file | 25 + install-info/tests/ii-0039-input-dir-file | 23 + install-info/tests/ii-0039-input-info-file | 11 + install-info/tests/ii-0039-test | 29 + install-info/tests/ii-0040-expected-dir-file | 24 + install-info/tests/ii-0040-input-dir-file | 23 + install-info/tests/ii-0040-input-info-file | 11 + install-info/tests/ii-0040-test | 28 + install-info/tests/ii-0041-expected-dir-file.gz | Bin 0 -> 457 bytes install-info/tests/ii-0041-input-dir-file.gz | Bin 0 -> 429 bytes install-info/tests/ii-0041-input-info-file | 11 + install-info/tests/ii-0041-test | 32 + install-info/tests/ii-0042-expected-dir-file | 29 + install-info/tests/ii-0042-input-dir-file | 23 + install-info/tests/ii-0042-input-info-file | 15 + install-info/tests/ii-0042-test | 28 + install-info/tests/ii-0043-expected-dir-file | 46 + install-info/tests/ii-0043-input-dir-file | 43 + install-info/tests/ii-0043-input-info-file | 11 + install-info/tests/ii-0043-test | 28 + install-info/tests/ii-0044-expected-dir-file | 23 + install-info/tests/ii-0044-input-dir-file | 25 + install-info/tests/ii-0044-input-info-file | 11 + install-info/tests/ii-0044-test | 28 + install-info/tests/ii-0045-expected-dir-file | 23 + install-info/tests/ii-0045-input-dir-file | 27 + install-info/tests/ii-0045-input-info-file | 12 + install-info/tests/ii-0045-test | 28 + install-info/tests/ii-0046-expected-dir-file | 23 + install-info/tests/ii-0046-input-dir-file | 24 + install-info/tests/ii-0046-test | 28 + install-info/tests/ii-0047-expected-dir-file | 16 + install-info/tests/ii-0047-input-dir-file | 19 + install-info/tests/ii-0047-input-info-file | 11 + install-info/tests/ii-0047-test | 28 + install-info/tests/ii-0048-expected-dir-file | 17 + install-info/tests/ii-0048-input-dir-file | 19 + install-info/tests/ii-0048-input-info-file | 11 + install-info/tests/ii-0048-test | 28 + install-info/tests/ii-0049-expected-dir-file | 23 + install-info/tests/ii-0049-input-dir-file | 23 + install-info/tests/ii-0049-input-info-file | 11 + install-info/tests/ii-0049-test | 28 + install-info/tests/ii-0050-expected-dir-file.gz | Bin 0 -> 432 bytes install-info/tests/ii-0050-input-dir-file.gz | Bin 0 -> 476 bytes install-info/tests/ii-0050-input-info-file | 11 + install-info/tests/ii-0050-test | 33 + install-info/tests/ii-0051-expected-dir-file | 18 + install-info/tests/ii-0051-input-dir-file | 15 + install-info/tests/ii-0051-input-info-file | 11 + install-info/tests/ii-0051-test | 30 + install-info/tests/ii-0052-expected-dir-file | 19 + install-info/tests/ii-0052-input-dir-file | 15 + install-info/tests/ii-0052-input-info-file | 11 + install-info/tests/ii-0052-test | 30 + install-info/tests/ii-0053-expected-dir-file | 19 + install-info/tests/ii-0053-input-dir-file | 15 + install-info/tests/ii-0053-input-info-file | 12 + install-info/tests/ii-0053-test | 20 + lib/Makefile.am | 22 + lib/Makefile.in | 670 + lib/README | 13 + lib/substring.c | 34 + lib/xexit.c | 87 + makeinfo/Makefile.am | 32 + makeinfo/Makefile.in | 837 + makeinfo/README | 17 + makeinfo/cmds.c | 2184 +++ makeinfo/cmds.h | 223 + makeinfo/defun.c | 720 + makeinfo/defun.h | 30 + makeinfo/files.c | 783 + makeinfo/files.h | 68 + makeinfo/float.c | 430 + makeinfo/float.h | 55 + makeinfo/footnote.c | 390 + makeinfo/footnote.h | 36 + makeinfo/html.c | 870 + makeinfo/html.h | 67 + makeinfo/index.c | 1004 + makeinfo/index.h | 92 + makeinfo/insertion.c | 2403 +++ makeinfo/insertion.h | 82 + makeinfo/lang.c | 1811 ++ makeinfo/lang.h | 141 + makeinfo/macro.c | 1095 ++ makeinfo/macro.h | 77 + makeinfo/makeinfo.c | 4397 +++++ makeinfo/makeinfo.h | 395 + makeinfo/multi.c | 646 + makeinfo/multi.h | 26 + makeinfo/node.c | 1947 ++ makeinfo/node.h | 129 + makeinfo/sectioning.c | 832 + makeinfo/sectioning.h | 102 + makeinfo/tests/Makefile.am | 40 + makeinfo/tests/Makefile.in | 672 + makeinfo/tests/accent | 34 + makeinfo/tests/accent-text.txi | 73 + makeinfo/tests/accent.txi | 10 + makeinfo/tests/accentenc | 24 + makeinfo/tests/accentenc.txi | 11 + makeinfo/tests/cond | 33 + makeinfo/tests/cond.txi | 40 + makeinfo/tests/copying | 13 + makeinfo/tests/copying.txi | 8 + makeinfo/tests/defxcond | 16 + makeinfo/tests/defxcond.txi | 18 + makeinfo/tests/emph-option | 10 + makeinfo/tests/emph-option.txi | 8 + makeinfo/tests/html-docdesc | 12 + makeinfo/tests/html-docdesc.txi | 14 + makeinfo/tests/html-extrali | 14 + makeinfo/tests/html-extrali.txi | 11 + makeinfo/tests/html-manuals | 13 + makeinfo/tests/html-min | 8 + makeinfo/tests/html-min.txi | 12 + makeinfo/tests/html-para | 8 + makeinfo/tests/html-para.txi | 24 + makeinfo/tests/html-title | 13 + makeinfo/tests/html-title.txi | 12 + makeinfo/tests/html-top | 13 + makeinfo/tests/html-top.txi | 7 + makeinfo/tests/incl-incl.txi | 1 + makeinfo/tests/include-value | 22 + makeinfo/tests/include-value.txi | 32 + makeinfo/tests/macro-at | 8 + makeinfo/tests/macro-at.txi | 38 + makeinfo/tests/menu-whitespace | 72 + makeinfo/tests/menu-whitespace.txi | 18 + makeinfo/tests/no-headers | 12 + makeinfo/tests/node-expand | 12 + makeinfo/tests/node-expand.txi | 64 + makeinfo/tests/node-value | 12 + makeinfo/tests/node-value.txi | 15 + makeinfo/tests/node-whitespace | 12 + makeinfo/tests/node-whitespace.txi | 30 + makeinfo/tests/quote-args | 19 + makeinfo/tests/quote-args.txi | 20 + makeinfo/tests/top | 11 + makeinfo/tests/top.txi | 25 + makeinfo/tests/twofiles | 23 + makeinfo/toc.c | 378 + makeinfo/toc.h | 44 + makeinfo/xml.c | 2252 +++ makeinfo/xml.h | 159 + makeinfo/xref.c | 632 + makeinfo/xref.h | 29 + po/ChangeLog | 36 + po/LINGUAS | 22 + po/Makefile.in.in | 429 + po/Makevars | 41 + po/POTFILES.in | 47 + po/Rules-quot | 47 + po/boldquot.sed | 10 + po/cs.gmo | Bin 0 -> 34221 bytes po/cs.po | 3599 ++++ po/da.gmo | Bin 0 -> 41741 bytes po/da.po | 3508 ++++ po/de.gmo | Bin 0 -> 84480 bytes po/de.po | 3343 ++++ po/de_AT.gmo | Bin 0 -> 431 bytes po/de_AT.po | 2881 +++ po/en@boldquot.header | 25 + po/en@quot.header | 22 + po/eo.gmo | Bin 0 -> 51928 bytes po/eo.po | 3474 ++++ po/es.gmo | Bin 0 -> 90122 bytes po/es.po | 3424 ++++ po/fr.gmo | Bin 0 -> 54939 bytes po/fr.po | 3943 ++++ po/he.gmo | Bin 0 -> 40084 bytes po/he.po | 3482 ++++ po/hr.gmo | Bin 0 -> 28827 bytes po/hr.po | 3406 ++++ po/hu.gmo | Bin 0 -> 45112 bytes po/hu.po | 3325 ++++ po/insert-header.sin | 23 + po/ja.gmo | Bin 0 -> 39301 bytes po/ja.po | 3737 ++++ po/nb.gmo | Bin 0 -> 50344 bytes po/nb.po | 3522 ++++ po/nl.gmo | Bin 0 -> 80842 bytes po/nl.po | 3239 ++++ po/pl.gmo | Bin 0 -> 80977 bytes po/pl.po | 3229 ++++ po/quot.sed | 6 + po/remove-potcdate.sin | 19 + po/ro.gmo | Bin 0 -> 51978 bytes po/ro.po | 3546 ++++ po/ru.gmo | Bin 0 -> 52259 bytes po/ru.po | 3537 ++++ po/rw.gmo | Bin 0 -> 1205 bytes po/rw.po | 3540 ++++ po/stamp-po | 1 + po/sv.gmo | Bin 0 -> 77997 bytes po/sv.po | 3862 ++++ po/texinfo.pot | 2880 +++ po/tr.gmo | Bin 0 -> 78956 bytes po/tr.po | 3221 ++++ po/vi.gmo | Bin 0 -> 88013 bytes po/vi.po | 3252 ++++ po/zh_CN.gmo | Bin 0 -> 77238 bytes po/zh_CN.po | 3464 ++++ po/zh_TW.gmo | Bin 0 -> 27870 bytes po/zh_TW.po | 3465 ++++ system.h | 260 + util/Makefile.am | 62 + util/Makefile.in | 882 + util/README | 13 + util/bibtex.test | 57 + util/defs.in | 364 + util/deref.c | 208 + util/dir-example | 494 + util/dvipdf.test | 66 + util/fix-info-dir | 317 + util/fixfonts | 84 + util/fixref.gawk | 143 + util/gdoc | 914 + util/gen-dir-node | 212 + util/gendocs.sh | 351 + util/gendocs_template | 100 + util/infosrch | 104 + util/install-info-html | 157 + util/latex2html.test | 79 + util/local.test | 59 + util/outline.gawk | 144 + util/pdftexi2dvi | 19 + util/prepinfo.awk | 355 + util/tex3patch | 70 + util/texi-docstring-magic.el | 347 + util/texi2dvi | 1792 ++ util/texi2dvi.test | 84 + util/texi2pdf | 19 + util/texindex.c | 1194 ++ util/texinfo-cat.in | 3 + util/texinfo.dtd | 507 + util/texinfo.xsl | 242 + util/txitextest | 77 + 665 files changed, 267617 insertions(+) create mode 100644 ABOUT-NLS create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 ChangeLog.46 create mode 100644 INSTALL create mode 100644 INSTALL.generic create mode 100644 INTRODUCTION create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 README.dev create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 build-aux/compile create mode 100755 build-aux/config.guess create mode 100755 build-aux/config.rpath create mode 100755 build-aux/config.sub create mode 100755 build-aux/depcomp create mode 100755 build-aux/install-sh create mode 100644 build-aux/link-warning.h create mode 100755 build-aux/mdate-sh create mode 100755 build-aux/missing create mode 100644 build-aux/texinfo.tex create mode 100644 config.in create mode 100755 configure create mode 100644 configure.ac create mode 100644 djgpp/README create mode 100755 djgpp/config.bat create mode 100644 djgpp/config.sed create mode 100755 djgpp/config.site create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.in create mode 100644 doc/README create mode 100644 doc/epsf.tex create mode 100644 doc/fdl.texi create mode 100644 doc/info-stnd.texi create mode 100644 doc/info.1 create mode 100644 doc/info.5 create mode 100644 doc/info.texi create mode 100644 doc/infokey.1 create mode 100644 doc/install-info.1 create mode 100644 doc/makeinfo.1 create mode 100644 doc/pdftexi2dvi.1 create mode 100755 doc/refcard/txicmdcheck create mode 100644 doc/refcard/txirefcard-a4.pdf create mode 100644 doc/refcard/txirefcard.pdf create mode 100644 doc/refcard/txirefcard.tex create mode 100644 doc/stamp-1 create mode 100644 doc/stamp-vti create mode 100644 doc/texi2dvi.1 create mode 100644 doc/texi2pdf.1 create mode 100644 doc/texindex.1 create mode 100644 doc/texinfo.5 create mode 100644 doc/texinfo.tex create mode 100644 doc/texinfo.txi create mode 100644 doc/txi-cs.tex create mode 100644 doc/txi-de.tex create mode 100644 doc/txi-en.tex create mode 100644 doc/txi-es.tex create mode 100644 doc/txi-fr.tex create mode 100644 doc/txi-it.tex create mode 100644 doc/txi-nb.tex create mode 100644 doc/txi-nl.tex create mode 100644 doc/txi-pl.tex create mode 100644 doc/txi-pt.tex create mode 100644 doc/txi-ru.tex create mode 100644 doc/txi-sr.tex create mode 100644 doc/txi-tr.tex create mode 100644 doc/txi-uk.tex create mode 100644 doc/version-stnd.texi create mode 100644 doc/version.texi create mode 100644 gnulib/lib/Makefile.am create mode 100644 gnulib/lib/Makefile.in create mode 100644 gnulib/lib/alloca.in.h create mode 100644 gnulib/lib/argz.c create mode 100644 gnulib/lib/argz.in.h create mode 100755 gnulib/lib/config.charset create mode 100644 gnulib/lib/error.c create mode 100644 gnulib/lib/error.h create mode 100644 gnulib/lib/exitfail.c create mode 100644 gnulib/lib/exitfail.h create mode 100644 gnulib/lib/getopt.c create mode 100644 gnulib/lib/getopt.in.h create mode 100644 gnulib/lib/getopt1.c create mode 100644 gnulib/lib/getopt_int.h create mode 100644 gnulib/lib/gettext.h create mode 100644 gnulib/lib/gettimeofday.c create mode 100644 gnulib/lib/intprops.h create mode 100644 gnulib/lib/localcharset.c create mode 100644 gnulib/lib/localcharset.h create mode 100644 gnulib/lib/malloc.c create mode 100644 gnulib/lib/malloca.c create mode 100644 gnulib/lib/malloca.h create mode 100644 gnulib/lib/malloca.valgrind create mode 100644 gnulib/lib/mbchar.c create mode 100644 gnulib/lib/mbchar.h create mode 100644 gnulib/lib/mbiter.h create mode 100644 gnulib/lib/mbscasecmp.c create mode 100644 gnulib/lib/mbschr.c create mode 100644 gnulib/lib/mbslen.c create mode 100644 gnulib/lib/mbsncasecmp.c create mode 100644 gnulib/lib/mbsstr.c create mode 100644 gnulib/lib/mbswidth.c create mode 100644 gnulib/lib/mbswidth.h create mode 100644 gnulib/lib/mbuiter.h create mode 100644 gnulib/lib/memchr.c create mode 100644 gnulib/lib/memcmp.c create mode 100644 gnulib/lib/memcpy.c create mode 100644 gnulib/lib/memmem.c create mode 100644 gnulib/lib/memmove.c create mode 100644 gnulib/lib/mempcpy.c create mode 100644 gnulib/lib/mkstemp.c create mode 100644 gnulib/lib/ref-add.sin create mode 100644 gnulib/lib/ref-del.sin create mode 100644 gnulib/lib/setenv.c create mode 100644 gnulib/lib/stdbool.in.h create mode 100644 gnulib/lib/stdint.in.h create mode 100644 gnulib/lib/stdlib.in.h create mode 100644 gnulib/lib/stpcpy.c create mode 100644 gnulib/lib/str-kmp.h create mode 100644 gnulib/lib/str-two-way.h create mode 100644 gnulib/lib/strdup.c create mode 100644 gnulib/lib/streq.h create mode 100644 gnulib/lib/strerror.c create mode 100644 gnulib/lib/string.in.h create mode 100644 gnulib/lib/strndup.c create mode 100644 gnulib/lib/strnlen.c create mode 100644 gnulib/lib/strnlen1.c create mode 100644 gnulib/lib/strnlen1.h create mode 100644 gnulib/lib/sys_stat.in.h create mode 100644 gnulib/lib/sys_time.in.h create mode 100644 gnulib/lib/tempname.c create mode 100644 gnulib/lib/tempname.h create mode 100644 gnulib/lib/unistd.in.h create mode 100644 gnulib/lib/unitypes.h create mode 100644 gnulib/lib/uniwidth.h create mode 100644 gnulib/lib/uniwidth/cjk.h create mode 100644 gnulib/lib/uniwidth/width.c create mode 100644 gnulib/lib/unsetenv.c create mode 100644 gnulib/lib/wchar.in.h create mode 100644 gnulib/lib/wctype.in.h create mode 100644 gnulib/lib/wcwidth.c create mode 100644 gnulib/lib/xalloc-die.c create mode 100644 gnulib/lib/xalloc.h create mode 100644 gnulib/lib/xmalloc.c create mode 100644 gnulib/lib/xsetenv.c create mode 100644 gnulib/lib/xsetenv.h create mode 100644 gnulib/m4/alloca.m4 create mode 100644 gnulib/m4/argz.m4 create mode 100644 gnulib/m4/codeset.m4 create mode 100644 gnulib/m4/eealloc.m4 create mode 100644 gnulib/m4/environ.m4 create mode 100644 gnulib/m4/error.m4 create mode 100644 gnulib/m4/exitfail.m4 create mode 100644 gnulib/m4/extensions.m4 create mode 100644 gnulib/m4/getopt.m4 create mode 100644 gnulib/m4/gettext.m4 create mode 100644 gnulib/m4/gettimeofday.m4 create mode 100644 gnulib/m4/glibc21.m4 create mode 100644 gnulib/m4/gnulib-cache.m4 create mode 100644 gnulib/m4/gnulib-common.m4 create mode 100644 gnulib/m4/gnulib-comp.m4 create mode 100644 gnulib/m4/iconv.m4 create mode 100644 gnulib/m4/include_next.m4 create mode 100644 gnulib/m4/inline.m4 create mode 100644 gnulib/m4/intlmacosx.m4 create mode 100644 gnulib/m4/lib-ld.m4 create mode 100644 gnulib/m4/lib-link.m4 create mode 100644 gnulib/m4/lib-prefix.m4 create mode 100644 gnulib/m4/localcharset.m4 create mode 100644 gnulib/m4/longlong.m4 create mode 100644 gnulib/m4/malloc.m4 create mode 100644 gnulib/m4/malloca.m4 create mode 100644 gnulib/m4/mbchar.m4 create mode 100644 gnulib/m4/mbiter.m4 create mode 100644 gnulib/m4/mbrtowc.m4 create mode 100644 gnulib/m4/mbscasecmp.m4 create mode 100644 gnulib/m4/mbschr.m4 create mode 100644 gnulib/m4/mbslen.m4 create mode 100644 gnulib/m4/mbsncasecmp.m4 create mode 100644 gnulib/m4/mbsstr.m4 create mode 100644 gnulib/m4/mbstate_t.m4 create mode 100644 gnulib/m4/mbswidth.m4 create mode 100644 gnulib/m4/memchr.m4 create mode 100644 gnulib/m4/memcmp.m4 create mode 100644 gnulib/m4/memcpy.m4 create mode 100644 gnulib/m4/memmem.m4 create mode 100644 gnulib/m4/memmove.m4 create mode 100644 gnulib/m4/mempcpy.m4 create mode 100644 gnulib/m4/mkstemp.m4 create mode 100644 gnulib/m4/nls.m4 create mode 100644 gnulib/m4/onceonly.m4 create mode 100644 gnulib/m4/po.m4 create mode 100644 gnulib/m4/progtest.m4 create mode 100644 gnulib/m4/setenv.m4 create mode 100644 gnulib/m4/stdbool.m4 create mode 100644 gnulib/m4/stdint.m4 create mode 100644 gnulib/m4/stdlib_h.m4 create mode 100644 gnulib/m4/stpcpy.m4 create mode 100644 gnulib/m4/strdup.m4 create mode 100644 gnulib/m4/strerror.m4 create mode 100644 gnulib/m4/string_h.m4 create mode 100644 gnulib/m4/strndup.m4 create mode 100644 gnulib/m4/strnlen.m4 create mode 100644 gnulib/m4/sys_stat_h.m4 create mode 100644 gnulib/m4/sys_time_h.m4 create mode 100644 gnulib/m4/tempname.m4 create mode 100644 gnulib/m4/unistd_h.m4 create mode 100644 gnulib/m4/wchar.m4 create mode 100644 gnulib/m4/wchar_t.m4 create mode 100644 gnulib/m4/wctype.m4 create mode 100644 gnulib/m4/wcwidth.m4 create mode 100644 gnulib/m4/wint_t.m4 create mode 100644 gnulib/m4/xalloc.m4 create mode 100644 info/Makefile.am create mode 100644 info/Makefile.in create mode 100644 info/README create mode 100644 info/dir.c create mode 100644 info/display.c create mode 100644 info/display.h create mode 100644 info/doc.h create mode 100644 info/dribble.c create mode 100644 info/dribble.h create mode 100644 info/echo-area.c create mode 100644 info/echo-area.h create mode 100644 info/filesys.c create mode 100644 info/filesys.h create mode 100644 info/footnotes.c create mode 100644 info/footnotes.h create mode 100644 info/gc.c create mode 100644 info/gc.h create mode 100644 info/indices.c create mode 100644 info/indices.h create mode 100644 info/info-utils.c create mode 100644 info/info-utils.h create mode 100644 info/info.c create mode 100644 info/info.h create mode 100644 info/infodoc.c create mode 100644 info/infokey.c create mode 100644 info/infokey.h create mode 100644 info/infomap.c create mode 100644 info/infomap.h create mode 100644 info/key.h create mode 100644 info/m-x.c create mode 100644 info/makedoc.c create mode 100644 info/man.c create mode 100644 info/man.h create mode 100644 info/nodemenu.c create mode 100644 info/nodes.c create mode 100644 info/nodes.h create mode 100644 info/pcterm.c create mode 100644 info/search.c create mode 100644 info/search.h create mode 100644 info/session.c create mode 100644 info/session.h create mode 100644 info/signals.c create mode 100644 info/signals.h create mode 100644 info/termdep.h create mode 100644 info/terminal.c create mode 100644 info/terminal.h create mode 100644 info/tilde.c create mode 100644 info/tilde.h create mode 100644 info/variables.c create mode 100644 info/variables.h create mode 100644 info/window.c create mode 100644 info/window.h create mode 100644 install-info/Makefile.am create mode 100644 install-info/Makefile.in create mode 100644 install-info/README create mode 100644 install-info/install-info.c create mode 100644 install-info/tests/Makefile.am create mode 100644 install-info/tests/Makefile.in create mode 100644 install-info/tests/README create mode 100644 install-info/tests/defs.in create mode 100644 install-info/tests/ii-0001-expected-dir-file create mode 100644 install-info/tests/ii-0001-input-dir-file create mode 100644 install-info/tests/ii-0001-input-info-file create mode 100755 install-info/tests/ii-0001-test create mode 100644 install-info/tests/ii-0002-expected-dir-file create mode 100644 install-info/tests/ii-0002-input-dir-file create mode 100644 install-info/tests/ii-0002-input-info-file create mode 100755 install-info/tests/ii-0002-test create mode 100644 install-info/tests/ii-0003-expected-dir-file create mode 100644 install-info/tests/ii-0003-input-dir-file create mode 100644 install-info/tests/ii-0003-input-info-file create mode 100755 install-info/tests/ii-0003-test create mode 100644 install-info/tests/ii-0004-expected-dir-file create mode 100644 install-info/tests/ii-0004-input-dir-file create mode 100644 install-info/tests/ii-0004-input-info-file create mode 100755 install-info/tests/ii-0004-test create mode 100644 install-info/tests/ii-0005-expected-dir-file create mode 100644 install-info/tests/ii-0005-input-dir-file create mode 100644 install-info/tests/ii-0005-input-info-file create mode 100755 install-info/tests/ii-0005-test create mode 100644 install-info/tests/ii-0006-expected-dir-file create mode 100644 install-info/tests/ii-0006-input-dir-file create mode 100644 install-info/tests/ii-0006-input-info-file create mode 100755 install-info/tests/ii-0006-test create mode 100644 install-info/tests/ii-0007-expected-dir-file create mode 100644 install-info/tests/ii-0007-input-dir-file create mode 100644 install-info/tests/ii-0007-input-info-file create mode 100755 install-info/tests/ii-0007-test create mode 100644 install-info/tests/ii-0008-expected-dir-file create mode 100644 install-info/tests/ii-0008-input-dir-file create mode 100644 install-info/tests/ii-0008-input-info-file create mode 100755 install-info/tests/ii-0008-test create mode 100644 install-info/tests/ii-0009-expected-dir-file create mode 100644 install-info/tests/ii-0009-input-dir-file create mode 100644 install-info/tests/ii-0009-input-info-file create mode 100755 install-info/tests/ii-0009-test create mode 100644 install-info/tests/ii-0010-expected-dir-file create mode 100644 install-info/tests/ii-0010-input-dir-file create mode 100644 install-info/tests/ii-0010-input-info-file create mode 100755 install-info/tests/ii-0010-test create mode 100644 install-info/tests/ii-0011-expected-dir-file create mode 100644 install-info/tests/ii-0011-input-dir-file create mode 100644 install-info/tests/ii-0011-input-info-file create mode 100755 install-info/tests/ii-0011-test create mode 100644 install-info/tests/ii-0012-expected-dir-file create mode 100644 install-info/tests/ii-0012-input-dir-file create mode 100644 install-info/tests/ii-0012-input-info-file create mode 100755 install-info/tests/ii-0012-test create mode 100644 install-info/tests/ii-0013-expected-dir-file create mode 100644 install-info/tests/ii-0013-input-dir-file create mode 100644 install-info/tests/ii-0013-input-info-file create mode 100755 install-info/tests/ii-0013-test create mode 100644 install-info/tests/ii-0014-expected-dir-file create mode 100644 install-info/tests/ii-0014-input-dir-file create mode 100644 install-info/tests/ii-0014-input-info-file create mode 100755 install-info/tests/ii-0014-test create mode 100644 install-info/tests/ii-0015-expected-dir-file create mode 100644 install-info/tests/ii-0015-input-dir-file create mode 100644 install-info/tests/ii-0015-input-info-file create mode 100755 install-info/tests/ii-0015-test create mode 100644 install-info/tests/ii-0016-expected-dir-file create mode 100644 install-info/tests/ii-0016-input-dir-file create mode 100644 install-info/tests/ii-0016-input-info-file create mode 100755 install-info/tests/ii-0016-test create mode 100644 install-info/tests/ii-0017-expected-dir-file create mode 100644 install-info/tests/ii-0017-input-dir-file create mode 100644 install-info/tests/ii-0017-input-info-file create mode 100755 install-info/tests/ii-0017-test create mode 100644 install-info/tests/ii-0018-input-dir-file create mode 100644 install-info/tests/ii-0018-input-info-file create mode 100755 install-info/tests/ii-0018-test create mode 100644 install-info/tests/ii-0019-input-dir-file create mode 100644 install-info/tests/ii-0019-input-info-file create mode 100755 install-info/tests/ii-0019-test create mode 100644 install-info/tests/ii-0020-expected-dir-file create mode 100644 install-info/tests/ii-0020-input-dir-file create mode 100644 install-info/tests/ii-0020-input-info-file create mode 100755 install-info/tests/ii-0020-test create mode 100644 install-info/tests/ii-0021-expected-dir-file create mode 100644 install-info/tests/ii-0021-input-dir-file create mode 100644 install-info/tests/ii-0021-input-info-file create mode 100755 install-info/tests/ii-0021-test create mode 100644 install-info/tests/ii-0022-expected-dir-file create mode 100644 install-info/tests/ii-0022-input-dir-file create mode 100644 install-info/tests/ii-0022-input-info-file create mode 100755 install-info/tests/ii-0022-test create mode 100644 install-info/tests/ii-0023-expected-dir-file create mode 100644 install-info/tests/ii-0023-input-dir-file create mode 100644 install-info/tests/ii-0023-input-info-file create mode 100755 install-info/tests/ii-0023-test create mode 100644 install-info/tests/ii-0024-expected-dir-file create mode 100644 install-info/tests/ii-0024-input-dir-file create mode 100644 install-info/tests/ii-0024-input-info-file create mode 100755 install-info/tests/ii-0024-test create mode 100644 install-info/tests/ii-0025-expected-dir-file create mode 100644 install-info/tests/ii-0025-input-dir-file create mode 100644 install-info/tests/ii-0025-input-info-file create mode 100755 install-info/tests/ii-0025-test create mode 100644 install-info/tests/ii-0026-expected-dir-file create mode 100644 install-info/tests/ii-0026-input-dir-file create mode 100644 install-info/tests/ii-0026-input-info-file create mode 100755 install-info/tests/ii-0026-test create mode 100644 install-info/tests/ii-0027-expected-dir-file create mode 100644 install-info/tests/ii-0027-input-dir-file create mode 100644 install-info/tests/ii-0027-input-info-file create mode 100755 install-info/tests/ii-0027-test create mode 100644 install-info/tests/ii-0028-expected-dir-file create mode 100644 install-info/tests/ii-0028-input-dir-file create mode 100644 install-info/tests/ii-0028-input-info-file create mode 100755 install-info/tests/ii-0028-test create mode 100644 install-info/tests/ii-0029-expected-dir-file create mode 100644 install-info/tests/ii-0029-input-dir-file create mode 100644 install-info/tests/ii-0029-input-info-file create mode 100755 install-info/tests/ii-0029-test create mode 100644 install-info/tests/ii-0030-expected-dir-file create mode 100644 install-info/tests/ii-0030-input-dir-file create mode 100644 install-info/tests/ii-0030-input-info-file create mode 100755 install-info/tests/ii-0030-test create mode 100644 install-info/tests/ii-0031-expected-dir-file create mode 100644 install-info/tests/ii-0031-input-dir-file create mode 100644 install-info/tests/ii-0031-input-info-file create mode 100755 install-info/tests/ii-0031-test create mode 100644 install-info/tests/ii-0032-expected-dir-file create mode 100644 install-info/tests/ii-0032-input-dir-file create mode 100644 install-info/tests/ii-0032-input-info-file create mode 100755 install-info/tests/ii-0032-test create mode 100644 install-info/tests/ii-0033-expected-dir-file create mode 100644 install-info/tests/ii-0033-input-dir-file create mode 100644 install-info/tests/ii-0033-input-info-file create mode 100755 install-info/tests/ii-0033-test create mode 100644 install-info/tests/ii-0034-expected-dir-file create mode 100644 install-info/tests/ii-0034-input-dir-file create mode 100644 install-info/tests/ii-0034-input-info-file create mode 100755 install-info/tests/ii-0034-test create mode 100644 install-info/tests/ii-0035-expected-dir-file create mode 100644 install-info/tests/ii-0035-input-dir-file create mode 100644 install-info/tests/ii-0035-input-info-file create mode 100755 install-info/tests/ii-0035-test create mode 100644 install-info/tests/ii-0036-expected-dir-file create mode 100644 install-info/tests/ii-0036-input-dir-file create mode 100644 install-info/tests/ii-0036-input-info-file create mode 100755 install-info/tests/ii-0036-test create mode 100644 install-info/tests/ii-0037-expected-dir-file create mode 100644 install-info/tests/ii-0037-input-dir-file create mode 100644 install-info/tests/ii-0037-input-info-file create mode 100755 install-info/tests/ii-0037-test create mode 100644 install-info/tests/ii-0038-expected-dir-file create mode 100644 install-info/tests/ii-0038-input-dir-file create mode 100644 install-info/tests/ii-0038-input-info-file create mode 100755 install-info/tests/ii-0038-test create mode 100644 install-info/tests/ii-0039-expected-dir-file create mode 100644 install-info/tests/ii-0039-input-dir-file create mode 100644 install-info/tests/ii-0039-input-info-file create mode 100755 install-info/tests/ii-0039-test create mode 100644 install-info/tests/ii-0040-expected-dir-file create mode 100644 install-info/tests/ii-0040-input-dir-file create mode 100644 install-info/tests/ii-0040-input-info-file create mode 100755 install-info/tests/ii-0040-test create mode 100644 install-info/tests/ii-0041-expected-dir-file.gz create mode 100644 install-info/tests/ii-0041-input-dir-file.gz create mode 100644 install-info/tests/ii-0041-input-info-file create mode 100755 install-info/tests/ii-0041-test create mode 100644 install-info/tests/ii-0042-expected-dir-file create mode 100644 install-info/tests/ii-0042-input-dir-file create mode 100644 install-info/tests/ii-0042-input-info-file create mode 100755 install-info/tests/ii-0042-test create mode 100644 install-info/tests/ii-0043-expected-dir-file create mode 100644 install-info/tests/ii-0043-input-dir-file create mode 100644 install-info/tests/ii-0043-input-info-file create mode 100755 install-info/tests/ii-0043-test create mode 100644 install-info/tests/ii-0044-expected-dir-file create mode 100644 install-info/tests/ii-0044-input-dir-file create mode 100644 install-info/tests/ii-0044-input-info-file create mode 100755 install-info/tests/ii-0044-test create mode 100644 install-info/tests/ii-0045-expected-dir-file create mode 100644 install-info/tests/ii-0045-input-dir-file create mode 100644 install-info/tests/ii-0045-input-info-file create mode 100755 install-info/tests/ii-0045-test create mode 100644 install-info/tests/ii-0046-expected-dir-file create mode 100644 install-info/tests/ii-0046-input-dir-file create mode 100755 install-info/tests/ii-0046-test create mode 100644 install-info/tests/ii-0047-expected-dir-file create mode 100644 install-info/tests/ii-0047-input-dir-file create mode 100644 install-info/tests/ii-0047-input-info-file create mode 100755 install-info/tests/ii-0047-test create mode 100644 install-info/tests/ii-0048-expected-dir-file create mode 100644 install-info/tests/ii-0048-input-dir-file create mode 100644 install-info/tests/ii-0048-input-info-file create mode 100755 install-info/tests/ii-0048-test create mode 100644 install-info/tests/ii-0049-expected-dir-file create mode 100644 install-info/tests/ii-0049-input-dir-file create mode 100644 install-info/tests/ii-0049-input-info-file create mode 100755 install-info/tests/ii-0049-test create mode 100644 install-info/tests/ii-0050-expected-dir-file.gz create mode 100644 install-info/tests/ii-0050-input-dir-file.gz create mode 100644 install-info/tests/ii-0050-input-info-file create mode 100755 install-info/tests/ii-0050-test create mode 100644 install-info/tests/ii-0051-expected-dir-file create mode 100644 install-info/tests/ii-0051-input-dir-file create mode 100644 install-info/tests/ii-0051-input-info-file create mode 100755 install-info/tests/ii-0051-test create mode 100644 install-info/tests/ii-0052-expected-dir-file create mode 100644 install-info/tests/ii-0052-input-dir-file create mode 100644 install-info/tests/ii-0052-input-info-file create mode 100755 install-info/tests/ii-0052-test create mode 100644 install-info/tests/ii-0053-expected-dir-file create mode 100644 install-info/tests/ii-0053-input-dir-file create mode 100644 install-info/tests/ii-0053-input-info-file create mode 100755 install-info/tests/ii-0053-test create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/README create mode 100644 lib/substring.c create mode 100644 lib/xexit.c create mode 100644 makeinfo/Makefile.am create mode 100644 makeinfo/Makefile.in create mode 100644 makeinfo/README create mode 100644 makeinfo/cmds.c create mode 100644 makeinfo/cmds.h create mode 100644 makeinfo/defun.c create mode 100644 makeinfo/defun.h create mode 100644 makeinfo/files.c create mode 100644 makeinfo/files.h create mode 100644 makeinfo/float.c create mode 100644 makeinfo/float.h create mode 100644 makeinfo/footnote.c create mode 100644 makeinfo/footnote.h create mode 100644 makeinfo/html.c create mode 100644 makeinfo/html.h create mode 100644 makeinfo/index.c create mode 100644 makeinfo/index.h create mode 100644 makeinfo/insertion.c create mode 100644 makeinfo/insertion.h create mode 100644 makeinfo/lang.c create mode 100644 makeinfo/lang.h create mode 100644 makeinfo/macro.c create mode 100644 makeinfo/macro.h create mode 100644 makeinfo/makeinfo.c create mode 100644 makeinfo/makeinfo.h create mode 100644 makeinfo/multi.c create mode 100644 makeinfo/multi.h create mode 100644 makeinfo/node.c create mode 100644 makeinfo/node.h create mode 100644 makeinfo/sectioning.c create mode 100644 makeinfo/sectioning.h create mode 100644 makeinfo/tests/Makefile.am create mode 100644 makeinfo/tests/Makefile.in create mode 100755 makeinfo/tests/accent create mode 100644 makeinfo/tests/accent-text.txi create mode 100644 makeinfo/tests/accent.txi create mode 100755 makeinfo/tests/accentenc create mode 100644 makeinfo/tests/accentenc.txi create mode 100755 makeinfo/tests/cond create mode 100644 makeinfo/tests/cond.txi create mode 100755 makeinfo/tests/copying create mode 100644 makeinfo/tests/copying.txi create mode 100755 makeinfo/tests/defxcond create mode 100644 makeinfo/tests/defxcond.txi create mode 100755 makeinfo/tests/emph-option create mode 100644 makeinfo/tests/emph-option.txi create mode 100755 makeinfo/tests/html-docdesc create mode 100644 makeinfo/tests/html-docdesc.txi create mode 100755 makeinfo/tests/html-extrali create mode 100644 makeinfo/tests/html-extrali.txi create mode 100755 makeinfo/tests/html-manuals create mode 100755 makeinfo/tests/html-min create mode 100644 makeinfo/tests/html-min.txi create mode 100755 makeinfo/tests/html-para create mode 100644 makeinfo/tests/html-para.txi create mode 100755 makeinfo/tests/html-title create mode 100644 makeinfo/tests/html-title.txi create mode 100755 makeinfo/tests/html-top create mode 100644 makeinfo/tests/html-top.txi create mode 100644 makeinfo/tests/incl-incl.txi create mode 100755 makeinfo/tests/include-value create mode 100644 makeinfo/tests/include-value.txi create mode 100755 makeinfo/tests/macro-at create mode 100644 makeinfo/tests/macro-at.txi create mode 100755 makeinfo/tests/menu-whitespace create mode 100644 makeinfo/tests/menu-whitespace.txi create mode 100755 makeinfo/tests/no-headers create mode 100755 makeinfo/tests/node-expand create mode 100644 makeinfo/tests/node-expand.txi create mode 100755 makeinfo/tests/node-value create mode 100644 makeinfo/tests/node-value.txi create mode 100755 makeinfo/tests/node-whitespace create mode 100644 makeinfo/tests/node-whitespace.txi create mode 100755 makeinfo/tests/quote-args create mode 100644 makeinfo/tests/quote-args.txi create mode 100755 makeinfo/tests/top create mode 100644 makeinfo/tests/top.txi create mode 100755 makeinfo/tests/twofiles create mode 100644 makeinfo/toc.c create mode 100644 makeinfo/toc.h create mode 100644 makeinfo/xml.c create mode 100644 makeinfo/xml.h create mode 100644 makeinfo/xref.c create mode 100644 makeinfo/xref.h create mode 100644 po/ChangeLog create mode 100644 po/LINGUAS create mode 100644 po/Makefile.in.in create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/Rules-quot create mode 100644 po/boldquot.sed create mode 100644 po/cs.gmo create mode 100644 po/cs.po create mode 100644 po/da.gmo create mode 100644 po/da.po create mode 100644 po/de.gmo create mode 100644 po/de.po create mode 100644 po/de_AT.gmo create mode 100644 po/de_AT.po create mode 100644 po/en@boldquot.header create mode 100644 po/en@quot.header create mode 100644 po/eo.gmo create mode 100644 po/eo.po create mode 100644 po/es.gmo create mode 100644 po/es.po create mode 100644 po/fr.gmo create mode 100644 po/fr.po create mode 100644 po/he.gmo create mode 100644 po/he.po create mode 100644 po/hr.gmo create mode 100644 po/hr.po create mode 100644 po/hu.gmo create mode 100644 po/hu.po create mode 100644 po/insert-header.sin create mode 100644 po/ja.gmo create mode 100644 po/ja.po create mode 100644 po/nb.gmo create mode 100644 po/nb.po create mode 100644 po/nl.gmo create mode 100644 po/nl.po create mode 100644 po/pl.gmo create mode 100644 po/pl.po create mode 100644 po/quot.sed create mode 100644 po/remove-potcdate.sin create mode 100644 po/ro.gmo create mode 100644 po/ro.po create mode 100644 po/ru.gmo create mode 100644 po/ru.po create mode 100644 po/rw.gmo create mode 100644 po/rw.po create mode 100644 po/stamp-po create mode 100644 po/sv.gmo create mode 100644 po/sv.po create mode 100644 po/texinfo.pot create mode 100644 po/tr.gmo create mode 100644 po/tr.po create mode 100644 po/vi.gmo create mode 100644 po/vi.po create mode 100644 po/zh_CN.gmo create mode 100644 po/zh_CN.po create mode 100644 po/zh_TW.gmo create mode 100644 po/zh_TW.po create mode 100644 system.h create mode 100644 util/Makefile.am create mode 100644 util/Makefile.in create mode 100644 util/README create mode 100755 util/bibtex.test create mode 100644 util/defs.in create mode 100644 util/deref.c create mode 100644 util/dir-example create mode 100755 util/dvipdf.test create mode 100755 util/fix-info-dir create mode 100755 util/fixfonts create mode 100644 util/fixref.gawk create mode 100644 util/gdoc create mode 100755 util/gen-dir-node create mode 100755 util/gendocs.sh create mode 100644 util/gendocs_template create mode 100755 util/infosrch create mode 100644 util/install-info-html create mode 100755 util/latex2html.test create mode 100755 util/local.test create mode 100644 util/outline.gawk create mode 100755 util/pdftexi2dvi create mode 100644 util/prepinfo.awk create mode 100755 util/tex3patch create mode 100644 util/texi-docstring-magic.el create mode 100755 util/texi2dvi create mode 100755 util/texi2dvi.test create mode 100755 util/texi2pdf create mode 100644 util/texindex.c create mode 100644 util/texinfo-cat.in create mode 100644 util/texinfo.dtd create mode 100644 util/texinfo.xsl create mode 100755 util/txitextest diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..83bc72e --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1068 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +1.1 Quick configuration advice +============================== + +If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +1.2 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the included GNU +`gettext' library will be used. This library is wholly contained +within this package, usually in the `intl/' subdirectory, so prior +installation of the GNU `gettext' package is _not_ required. +Installers may use special options at configuration time for changing +the default behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will, respectively, bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might not be desirable. You should use +the more recent version of the GNU `gettext' library. I.e. if the file +`intl/VERSION' shows that the library which comes with this package is +more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages usually have many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.3 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. Here `LL' is an ISO 639 two-letter language code, and +`CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.4 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://translationproject.org/', in the "Teams" area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `coordinator@translationproject.org' to +reach the coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.5 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of November +2007. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo + +----------------------------------------------------+ + Compendium | [] [] [] [] | + a2ps | [] [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | [] | + ap-utils | | + aspell | [] [] [] [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] | + bison-runtime | [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] [] | + console-tools | [] [] | + coreutils | [] [] [] [] | + cpio | | + cpplib | [] [] [] | + cryptonit | [] | + dialog | | + diffutils | [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + fetchmail | [] [] () [] [] | + findutils | [] | + findutils_stable | [] [] [] | + flex | [] [] [] | + fslint | | + gas | | + gawk | [] [] [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gip | [] | + gliv | [] [] | + glunarclock | [] | + gmult | [] [] | + gnubiff | () | + gnucash | [] [] () () [] | + gnuedu | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | | + gpe-edit | [] | + gpe-filemanager | | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-package | | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | | + gramadoir | [] [] | + grep | [] [] | + gretl | () | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | () | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] | + indent | [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | [] | + jtag | | + jwhois | | + kbd | [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | () | + ld | [] | + leafpad | [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | | + libiconv | [] [] | + libidn | [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] | + man-db | [] [] [] | + minicom | [] [] [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] | + pwdutils | | + qof | | + radius | [] | + recode | [] [] [] [] [] [] | + rpm | [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] | + shared-mime-info | [] [] [] [] () [] [] [] | + sharutils | [] [] [] [] [] [] | + shishi | | + skencil | [] () | + solfege | | + soundtracker | [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] | + texinfo | [] [] [] | + tin | () () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] | + xpad | [] [] [] | + +----------------------------------------------------+ + af am ar az be bg bs ca cs cy da de el en en_GB eo + 6 0 2 1 8 26 2 40 48 2 56 88 15 1 15 18 + + es et eu fa fi fr ga gl gu he hi hr hu id is it + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | [] [] [] () | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] [] | + aspell | [] [] [] | + bash | [] | + bfd | [] [] | + bibshelf | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] | + console-tools | | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cpplib | [] [] | + cryptonit | [] | + dialog | [] [] [] | + diffutils | [] [] [] [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + fetchmail | [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] | + flex | [] [] [] | + fslint | | + gas | [] [] | + gawk | [] [] [] [] () | + gcal | [] [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] | + gliv | () | + glunarclock | [] [] [] | + gmult | [] [] [] | + gnubiff | () () | + gnucash | () () () | + gnuedu | [] | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] [] [] | + gpe-conf | [] | + gpe-contacts | [] [] | + gpe-edit | [] [] [] [] | + gpe-filemanager | [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] [] | + gpsdrive | [] | + gramadoir | [] [] | + grep | [] [] [] | + gretl | [] [] [] () | + gsasl | [] [] | + gss | [] [] | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] | + jpilot | [] [] | + jtag | [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] [] | + latrine | [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] | + libiconv | [] [] [] | + libidn | [] [] | + lifelines | () | + lilypond | [] [] [] | + lingoteach | [] [] [] | + lprng | | + lynx | [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] | + man-db | [] | + minicom | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | | + qof | [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] | + soundtracker | [] [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + tin | [] () | + tuxpaint | [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] [] [] [] | + util-linux-ng | [] [] [] [] [] [] [] | + vorbis-tools | | + wastesedge | () | + wdiff | [] [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + es et eu fa fi fr ga gl gu he hi hr hu id is it + 85 22 14 2 48 101 61 12 2 8 2 6 53 29 1 52 + + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + +--------------------------------------------------+ + Compendium | [] | + a2ps | () [] [] | + aegis | () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | [] | + aspell | [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] [] | + bison-runtime | [] [] [] | + bluez-pin | [] [] [] | + cflow | | + clisp | [] | + console-tools | | + coreutils | [] | + cpio | [] | + cpplib | [] | + cryptonit | [] | + dialog | [] [] | + diffutils | [] [] [] | + doodle | | + e2fsprogs | [] | + enscript | [] | + fetchmail | [] [] | + findutils | [] | + findutils_stable | [] | + flex | [] [] | + fslint | | + gas | | + gawk | [] [] | + gcal | | + gcc | | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gip | [] [] | + gliv | [] | + glunarclock | [] [] | + gmult | [] [] [] | + gnubiff | | + gnucash | () () () | + gnuedu | | + gnulib | [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] | + gpe-clock | [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] | + gphoto2 | [] [] | + gprof | [] | + gpsdrive | [] | + gramadoir | () | + grep | [] [] | + gretl | | + gsasl | [] | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] | + gtick | [] | + gtkam | [] [] | + gtkorphan | [] | + gtkspell | [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] | + indent | [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | () () | + jtag | | + jwhois | [] | + kbd | [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | | + latrine | [] | + ld | | + leafpad | [] [] | + libc | [] [] [] | + libexif | | + libextractor | | + libgpewidget | [] | + libgpg-error | | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] | + libidn | [] [] | + lifelines | [] | + lilypond | [] | + lingoteach | [] | + lprng | | + lynx | [] [] | + m4 | [] [] | + mailfromd | | + mailutils | | + make | [] [] [] | + man-db | | + minicom | [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] [] [] | + pwdutils | | + qof | | + radius | | + recode | [] | + rpm | [] [] | + screem | [] | + scrollkeeper | [] [] [] [] | + sed | [] [] | + shared-mime-info | [] [] [] [] [] [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | () () | + soundtracker | | + sp | () | + system-tools-ba... | [] [] [] [] | + tar | [] [] [] | + texinfo | [] [] | + tin | | + tuxpaint | () [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] | + util-linux-ng | [] [] | + vorbis-tools | | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] | + xchat | [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + 51 2 25 3 2 0 6 0 2 2 20 0 11 1 103 6 + + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | () [] [] [] [] [] [] | + aegis | () () | + ant-phone | [] [] | + anubis | [] [] [] | + ap-utils | () | + aspell | [] [] [] | + bash | [] [] | + bfd | | + bibshelf | [] | + binutils | [] [] | + bison | [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] [] | + cflow | [] | + clisp | [] | + console-tools | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cpplib | [] | + cryptonit | [] [] | + dialog | [] | + diffutils | [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + fslint | [] | + gas | | + gawk | [] [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gip | [] [] [] [] | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] [] | + gmult | [] [] [] [] | + gnubiff | () [] | + gnucash | () [] | + gnuedu | | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] [] [] [] [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] [] [] [] [] [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + gretl | [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] | + herrie | [] [] [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] | + jpilot | | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | | + ld | [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] | + libextractor | [] [] | + libgpewidget | [] [] [] [] [] [] [] [] | + libgpg-error | [] [] [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] | + libidn | [] [] () | + lifelines | [] [] | + lilypond | | + lingoteach | [] | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] | + make | [] [] [] [] | + man-db | [] [] [] [] | + minicom | [] [] [] [] [] | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | [] [] | + qof | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + rpm | [] [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] [] | + solfege | [] | + soundtracker | [] [] | + sp | | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + 0 5 77 31 53 4 58 72 3 45 46 9 45 122 3 + + tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + +---------------------------------------------------+ + Compendium | [] [] [] [] | 19 + a2ps | [] [] [] | 19 + aegis | [] | 1 + ant-phone | [] [] | 6 + anubis | [] [] [] | 11 + ap-utils | () [] | 4 + aspell | [] [] [] | 16 + bash | [] | 6 + bfd | | 2 + bibshelf | [] | 7 + binutils | [] [] [] [] | 9 + bison | [] [] [] [] | 20 + bison-runtime | [] [] [] [] | 18 + bluez-pin | [] [] [] [] [] [] | 28 + cflow | [] [] | 5 + clisp | | 9 + console-tools | [] [] | 5 + coreutils | [] [] [] | 18 + cpio | [] [] [] [] | 11 + cpplib | [] [] [] [] [] | 12 + cryptonit | [] | 6 + dialog | [] [] [] | 9 + diffutils | [] [] [] [] [] | 29 + doodle | [] | 6 + e2fsprogs | [] [] | 10 + enscript | [] [] [] | 16 + fetchmail | [] [] | 12 + findutils | [] [] [] | 11 + findutils_stable | [] [] [] [] | 18 + flex | [] [] | 15 + fslint | [] | 2 + gas | [] | 3 + gawk | [] [] [] | 16 + gcal | [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] | 29 + gettext-runtime | [] [] [] [] [] [] | 28 + gettext-tools | [] [] [] [] [] | 20 + gip | [] [] | 13 + gliv | [] [] | 11 + glunarclock | [] [] [] | 15 + gmult | [] [] [] [] | 16 + gnubiff | [] | 2 + gnucash | () [] | 5 + gnuedu | [] | 2 + gnulib | [] | 10 + gnunet | | 0 + gnunet-gtk | [] [] | 3 + gnutls | | 4 + gpe-aerial | [] [] | 14 + gpe-beam | [] [] | 14 + gpe-calendar | [] [] | 7 + gpe-clock | [] [] [] [] | 21 + gpe-conf | [] [] [] | 16 + gpe-contacts | [] [] | 10 + gpe-edit | [] [] [] [] [] | 22 + gpe-filemanager | [] [] | 7 + gpe-go | [] [] [] [] | 19 + gpe-login | [] [] [] [] [] | 21 + gpe-ownerinfo | [] [] [] [] | 21 + gpe-package | [] | 6 + gpe-sketchbook | [] [] | 16 + gpe-su | [] [] [] [] | 21 + gpe-taskmanager | [] [] [] [] | 21 + gpe-timesheet | [] [] [] [] | 18 + gpe-today | [] [] [] [] [] | 21 + gpe-todo | [] [] | 8 + gphoto2 | [] [] [] [] | 21 + gprof | [] [] | 13 + gpsdrive | [] | 5 + gramadoir | [] | 7 + grep | [] | 12 + gretl | | 6 + gsasl | [] [] [] | 9 + gss | [] | 7 + gst-plugins-bad | [] [] [] | 13 + gst-plugins-base | [] [] | 11 + gst-plugins-good | [] [] [] [] [] | 16 + gst-plugins-ugly | [] [] [] | 13 + gstreamer | [] [] [] | 18 + gtick | [] [] | 7 + gtkam | [] | 16 + gtkorphan | [] | 7 + gtkspell | [] [] [] [] [] [] | 27 + gutenprint | | 4 + hello | [] [] [] [] [] | 38 + herrie | [] [] | 8 + hylafax | | 0 + idutils | [] [] | 15 + indent | [] [] [] [] [] | 28 + iso_15924 | [] [] | 4 + iso_3166 | [] [] [] [] [] [] [] [] [] | 54 + iso_3166_2 | [] [] | 4 + iso_4217 | [] [] [] [] [] | 24 + iso_639 | [] [] [] [] [] | 26 + jpilot | [] [] [] [] | 7 + jtag | [] | 3 + jwhois | [] [] [] | 13 + kbd | [] [] [] | 13 + keytouch | [] | 8 + keytouch-editor | [] | 5 + keytouch-keyboa... | [] | 5 + latrine | [] [] | 5 + ld | [] [] [] [] | 10 + leafpad | [] [] [] [] [] | 24 + libc | [] [] [] | 19 + libexif | [] | 5 + libextractor | [] | 5 + libgpewidget | [] [] [] | 20 + libgpg-error | [] | 6 + libgphoto2 | [] [] | 9 + libgphoto2_port | [] [] [] | 11 + libgsasl | [] | 8 + libiconv | [] [] | 11 + libidn | [] [] | 11 + lifelines | | 4 + lilypond | [] | 6 + lingoteach | [] | 6 + lprng | [] | 2 + lynx | [] [] [] | 15 + m4 | [] [] [] | 18 + mailfromd | [] [] | 3 + mailutils | [] [] | 8 + make | [] [] [] | 20 + man-db | [] | 9 + minicom | [] | 14 + nano | [] [] [] | 20 + opcodes | [] [] | 10 + parted | [] [] [] | 11 + pilot-qof | [] | 1 + popt | [] [] [] [] | 18 + psmisc | [] [] | 10 + pwdutils | [] | 3 + qof | [] | 4 + radius | [] [] | 7 + recode | [] [] [] | 25 + rpm | [] [] [] [] | 13 + screem | [] | 2 + scrollkeeper | [] [] [] [] | 26 + sed | [] [] [] [] | 23 + shared-mime-info | [] [] [] | 29 + sharutils | [] [] [] | 23 + shishi | [] | 3 + skencil | [] | 7 + solfege | [] | 3 + soundtracker | [] [] | 9 + sp | [] | 3 + system-tools-ba... | [] [] [] [] [] [] [] | 38 + tar | [] [] [] | 17 + texinfo | [] [] [] | 15 + tin | | 1 + tuxpaint | [] [] [] | 19 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] [] | 20 + util-linux-ng | [] [] [] | 20 + vorbis-tools | [] [] | 4 + wastesedge | | 1 + wdiff | [] [] | 23 + wget | [] [] [] | 20 + xchat | [] [] [] [] | 29 + xkeyboard-config | [] [] [] | 14 + xpad | [] [] [] | 15 + +---------------------------------------------------+ + 76 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + 163 domains 0 3 1 74 51 0 143 21 1 57 7 45 0 2036 + + 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 +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +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 November 2007 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. The most +up-to-date matrix with full percentage details can be found at +`http://translationproject.org/extra/matrix.html'. + +1.6 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..4d918be --- /dev/null +++ b/AUTHORS @@ -0,0 +1,39 @@ +$Id: AUTHORS,v 1.14 2008/03/05 09:05:15 gray Exp $ +Texinfo authors. + + Copyright (C) 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + +Karl Berry all files. +Per Bothner makeinfo/xml.c, makeinfo/docbook.c updates. +Torsten Bronger texinfo.dtd. +Bob Chassell texinfo.tex, original texinfo.txi. +Akim Demaille texi2dvi, util/* tests. +Alper Ersoy makeinfo: enhancements in all files, especially + html-, xml-, and docbook-related. +Brian Fox all makeinfo/* and info/* files, info-stnd.texi. +Noah Friedman original texi2dvi. +Oleg Katsitadze doc/* +Dave Love original makeinfo/html.[ch]. +Karl Heinz Marbaise original makeinfo language support, most files. +Philippe Martin original makeinfo xml/docbook output. +Sergey Poznyakoff all files. +Paul Rubin original makeinfo/multi.c. +Andreas Schwab texinfo.tex, configure.ac, most makeinfo files. +Richard Stallman original texinfo.tex, install-info.c, + texindex.c, texinfo.txi. +Zack Weinberg texinfo.tex: @macro implementation. +Ralf Wildenhues util/gendocs.sh, makeinfo/tests/*, + makeinfo/html.c, makeinfo/cmds.c, makeinfo/footnote.c, + doc/texinfo.txi, + Makefile.am, configure.ac. +Eli Zaretskii all files. + +See http://translationproject.org/team/index.html for the +translation teams for a given language LL. + +Many files included in the Texinfo distribution are copied from other +locations, no author information is given for those. See util/srclist*. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..9a2708d --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..fc3d374 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,8317 @@ +2008-09-18 Karl Berry + + * Version 4.13. + +2008-09-13 Sergey Poznyakoff + + * info/window.c (line_map_init): Take an additional argument, + node. + (window_compute_line_map): Recompute the line map if the node + has changed. + * info/window.h (struct line_map_struct): New member `node'. + +2008-08-29 Karl Berry + + * doc/info-stnd.texi: use @kbd for key sequences and @key only for + names of keys, as intended. Inspired by Eli, 28 Aug 2008 21:21:38. + +2008-08-28 Karl Berry + + * makeinfo/makeinfo.c (main): convert_from_stream (stdin) + if an input filename is named "-". Suggestion from + Bruno Haible, 26 Aug 2008 01:05:28. + +2008-08-27 Karl Berry + + * makeinfo/makeinfo.c (EXECUTE_STRING_MAX): bump to 32k. + Report from Patrice, 20 Aug 2008 14:28:30. + A real fix is beyond me right now, and seems unnecessary + for the future since we're moving to a different implementation. + +2008-08-16 Karl Berry + + * pretest 4.12.94. + +2008-08-15 Karl Berry + + * util/texi2dvi (run_thumbpdf): needs $in_dir on the filename. + Report from: Christoph Spiel, 13 Aug 2008 08:27:16. + +2008-08-15 Ben Pfaff (tiny change) + + * makeinfo/makeinfo.c (remember_brace_1): always xstrdup. + Avoids seg fault on input of {x}@y, e.g., makeinfo texinfo.tex. + Sent 14 Aug 2008 21:35:19. + +2008-08-14 Karl Berry + + * info/info.c (info_short_help): mention Info manuals and the h + key within the program. + +2008-08-10 Karl Berry + + * util/texi2dvi (absolute_filenames): preserve even non-directories + in the returned path, in case they contain metacharacters + meaningful to TeX, such as braces. + Bug report from Werner Lemberg, 10 Aug 2008 08:26:58. + +2008-07-27 Karl Berry + + * util/texi2dvi (xref_files_save): null out TAR_OPTIONS. + From Jim Meyering. + +2008-07-27 Karl Berry + + * pretest 4.12.93. + + * gnulib: import memmem. + +2008-07-07 Karl Berry + + * install-info/tests/*-test: prefix the template with ii##. + +2008-07-06 Karl Berry + + * pretest 4.12.92. + +2008-07-05 Robert Kiesling (tiny change) + + * makeinfo/node.c (cm_node): move

to after anchors, closer to +

. + +2008-07-05 Karl Berry + + * install-info/tests/ii-0041-test, ii-0050-test: with template, + have to handle compressed output files differently, or + the temp files are left behind by distclean. + + * install-info/tests/*-test: use mktemp XXXXXXXX for BSD. + Report from Unga, 29 Jun 2008 08:29:54. + +2008-07-04 Akim Demaille + + texi2dvi: Fix -t. + * util/texi2dvi (run_tex): The code that installs a symlink was + installing the symlink directly to itself, instead of towards the + actual source file. I wonder how it worked. As a result -t was + not taken into account. + Fix the symlink creation. + * util/texi2dvi.test (one_run): Test -t support. + +2008-07-03 Karl Berry + + * doc/Makefile.am (pdftexi2dvi.1): use change_envvars here too. + +2008-07-02 Karl Berry + + * util/texi2dvi (generated_files_get): find .fls files too. + (from the -recorder option.) + Suggestion from Wybo Dekker. + +2008-07-01 Karl Berry + + * doc/Makefile.am (change_envvars): include util_srcdir in PATH + so texi2pdf can find texi2dvi for making the man pages. + Report from Michael Haubenwallner, 01 Jul 2008 14:33:18. + +2008-06-28 Sergey Poznyakoff + + * info/info.c (long_option): New options + --show-malformed-multibytes and --no-show-malformed-multibytes + * info/man.c (find_man_formatter): If INFO_MAN_COMMAND is + specified, use its value as man command. + * info/window.c (show_malformed_multibyte_p): New variable. + (process_node_text): Ignore malformed multibyte characters unless + show_malformed_multibyte_p is set. + * info/window.h (show_malformed_multibyte_p): New extern. + + * doc/info-stnd.texi (Invoking Info): Document new options. + * NEWS: Likewise. + +2008-06-18 Akim Demaille + + * util/texi2dvi (usage): More comments. + (version): exit 0. + Reported by Karl Berry. + +2008-06-16 Akim Demaille + + * util/texi2dvi (version): New function, to replace... + ($version): this. + (usage): Document --dvipdf. + +2008-06-16 Akim Demaille + + * util/texi2dvi: Sort functions. + +2008-06-16 Akim Demaille + + texi2dvi: avoid "\n" in echos to please Bash 3.2. + It is virtually impossible to find a safe means to use + echo with \n in it. So use cat and here docs. + * util/texi2dvi ($usage): Remove, replaced by... + (usage): this function. + +2008-06-16 Akim Demaille + + Support -I dir1:dir2, as per the documentation. + Reported by Vincent Ordy. + * util/texi2dvi: (list_concat_dirs): New. + Currently mostly a copy of absolute_filenames, but the latter + is scheduled for removal. + Use list_concat_dirs for -I support. + (--I*): Remove, not documented anywhere, and too accepting. + +2008-06-15 Ralf Wildenhues + + * autogen.sh: Fix quotation typo. + * gnulib/lib/configmake.h, gnulib/lib/stdbool_.h: Remove. + +2008-06-13 Sergey Poznyakoff + + Fix length calculation for strings containing ANSI escapes. + Bug reported by Benno Schulenberg. + + * info/man.c (clean_manpage): Remove. + (get_manpage_contents): Remove the kludge introduced 2006-08-13. + * info/window.c (process_node_text): ANSI escapes have visible + length of 0. + (clean_manpage): Multibyte-safe implementation. + * info/window.h (clean_manpage): New prototype. + +2008-06-12 Yavor Doganov (tiny change) + + * util/gendocs_template: + 1. Link to the new FSF online store. + 2. /server/footer-min.html is no longer necessary and we should remove + it at some point. It would be easier if less articles include it. + 3. Bump copyright year. + +2008-06-12 Karl Berry + + * pretest 4.12.91. + +2008-06-11 Sergey Poznyakoff + + * info/session.c (point_backward_char): Skip columns until + previous point is reached. + + * info/dir.c, info/display.c, info/dribble.c, info/echo-area.c + info/filesys.c, info/footnotes.c, info/gc.c, info/indices.c, + info/info-utils.c, info/info.c, info/infodoc.c, info/infokey.c, + info/infomap.c, info/m-x.c, info/makedoc.c, info/man.c, + info/nodemenu.c, info/nodes.c, info/pcterm.c, info/search.c, + info/session.c, info/terminal.c, info/tilde.c, info/variables.c, + info/window.c: Avoid useless type casts. + +2008-06-11 Sergey Poznyakoff + + Fix incremental regexp searches (bug reported by Bruno Haible). + + * info/search.c (regexp_search): Take an additional argument, + pret. Return the final state of search binding if it is given. + * info/search.h (regexp_search): Update prototype. + * info/session.c (info_search_in_node_internal): New function. + (info_search_in_node): Rewrite as a wrapper over + info_search_in_node_internal. + (info_search_internal): Take an additional argument. Initialize + window->point from it if it is given. + Use info_search_in_node_internal. + +2008-06-10 Sergey Poznyakoff + + * info/session.c (_looking_at_newline, point_next_line) + (point_prev_line, point_forward_char, point_backward_char) + (point_skip_ws_forward, point_skip_ws_backward) + (point_forward_word, point_backward_word): New functions. + (info_end_of_line, info_forward_char, info_backward_char) + (info_forward_word, info_backward_word): Reimplement to work + correctly in multibytes locales. + * info/window.c (window_scan_line): New function. + (window_compute_line_map): Rewrite using window_scan_line. + (window_end_of_line): New function. + * info/window.h (LINE_MAP): Change type of map to long. + (window_end_of_line): New prototype. + +2008-06-10 Sergey Poznyakoff + + Fix cursor positioning in multibyte locales. + + * info/display.c (process_node_text): Move to window.c + * info/display.h (process_node_text): Move to window.h + (handle_tag): New prototype. + + * info/window.c (window_get_cursor_column): Rewrite using + window_point_to_column. + (window_chars_to_goal): Change signature. + (process_node_text): Move from display.c + (window_line_map_init, window_compute_line_map) + (window_point_to_column): New functions. + * info/window.h (LINE_MAP): New data type. + (WINDOW): New member line_map. + (window_chars_to_goal): Change prototype. + (window_line_map_init, window_compute_line_map) + (window_point_to_column): New prototypes. + + * info/echo-area.c (ea_tab_insert, ea_kill_word) + (ea_backward_kill_w): Call window_line_map_init. + * info/session.c (move_to_new_line): Change call to + window_chars_to_goal. + (info_end_of_line, info_beginning_of_line): Use line map. + +2008-06-09 Sergey Poznyakoff + + * info/info-utils.c (printed_representation): Fix length + calculation. + +2008-06-03 Karl Berry + + * util/texi2dvi (run_makeinfo): = not ==. + From Ralf W, 3 Jun 2008 21:12:30. + +2008-05-22 Karl Berry + + * pretest 4.12.90. + + * install-info/tests/Makefile.am (EXTRA_DIST): missed ii-0051-test. + +2008-05-20 Karl Berry + + * makeinfo/makeinfo.c (cm_image): need another byte for fullname. + Report from Patrice Dumas, 15 May 2008 00:40:03. + +2008-05-19 Duncan Murdoch + + Added --internal-links option to print file of internal links: + * makeinfo/makeinfo.c (OPT_INTERNAL_LINKS, long_options, main, usage): + add command-line option. + (convert_from_loaded_file): write the file. + * makeinfo/html.c (internal_links_filename, + internal_links_stream, escaped_anchor_name): new globals and fn. + (add_escaped_anchor): call escaped_anchor_name. + * makeinfo/html.h: declare them. + * makeinfo/index.c (cm_printindex): write out indexed links. + * makeinfo/toc.c (toc_add_entry, contents_update_html): write out + TOC entries, use escaped_anchor_name rather than duplicating code. + * doc/texinfo.txi (Invoking makeinfo): document it. + +2008-05-18 Karl Berry + + * install-info/install-info.c (split_entry): split at period-newline, + too. Report from Ulrich Mueller, 14 May 2008 06:59:35. + +2008-05-16 Karl Berry + + * doc/texinfo.txi (HTML Xref Command Expansion): add @leq, + @geq, @arrow, @textdegree Unicodes. Suggestion from + Patrice Dumas, 15 May 2008 01:02:37. + +2008-05-13 Sergey Poznyakoff + + * info/display.c (find_diff): New function. + (display_node_text): When computing differences between old and + new lines use character, not byte offsets. + +2008-05-12 Karl Berry + + * install-info.c (split_entry, add_missing_basenames, + add_mission_descriptions, --name and --description parsing): + use ". " to delimit the description from the node name, + rather than just ".", since we want to support nodes and names + containing "config.status". + * doc/texinfo.txi (Menu Parts): mention need for ". ". + (Invoking install-info): mention bzip2 and lzma checks. + +2008-05-11 Karl Berry + + * util/texi2dvi (usage): give -l input samples as latex and texinfo, + not LaTeX and Texinfo. + Report from Hilmar Preusse, 10 May 2008 15:03:23, Debian bug #472758. + + * install-info/tests/0051, 52: new tests for periods in item names. + Bug report from Ulrich Mueller, 7 May 2008 01:56:38. + +2008-05-10 Sergey Poznyakoff + + Handle multibyte encodings correctly. + + * info/display.c (ITER_SETBYTES,ITER_LIMIT): New defines. + (process_node_text): New function. + (display_node_text): New function. + (display_update_one_window): Correctly process multibyte + characters. + * info/display.h (process_node_text): New function prototype. + * info/info-utils.c (printed_representation): Rewrite to take into + account multibyte sequences. + * info/info-utils.h (printed_representation): Change prototype. + * info/info.h: Include string.h, mbiter.h and mbchar.h. + * info/window.c (calculate_line_starts ): Rewrite using + process_node_text to take into account multibyte characters. + + Bootstrap from GNU gnulib 2008-04-23 06:09:44: + + * gnulib/lib/Makefile.am: Import mbchar, mbiter and mbschr. + * gnulib/lib/sys_stat.in.h, gnulib/lib/wctype.in.h, + gnulib/lib/sys/stat.h, gnulib/m4/gnulib-cache.m4, + gnulib/m4/gnulib-comp.m4, gnulib/m4/sys_stat_h.m4, + gnulib/m4/wctype.m4: Updated files. + +2008-05-05 Karl Berry + + * doc/info-stnd.texi (Stand-alone Info): rename node from What is Info? + for sake of xref in info.texi. + * doc/info.texi (Top): xref. + +2008-04-30 Thomas Thorberger (tiny change) + + * install-info/install-info.c (split_entry): use valid pointer + entry, not ptr. bug-texinfo mail 30 Apr 2008 11:59:57. + +2008-04-25 Peter Breitenlohner + + * info/session.c (info_search_internal): cast to `char *' in + order to avoid compiler warning. + +2008-04-23 Bruno Haible + + Allow "gendocs -o /some/absolute/dir". + * gendocs.sh (dotdot_outdir): New variable. + +2008-04-19 Karl Berry + + * Version 4.12. + +2008-04-19 Per Øyvind Karlsen (tiny change) + + * info/filesys.c (compress_suffices): decompress .lzma with unlzma. + * install-info/install-info.c: support lzma. + +2008-04-18 Karl Berry + + * doc/texinfo.tex (\math): \let the Texinfo accent commands + (\" \' ... \dotaccent) to their plain TeX math equivalents + (\ddot \acute ... \dot), where possible. + Report from John Mandereau, 17 Apr 2008 17:53:28. + +2008-04-17 Karl Berry + + * util/texi2dvi: allow more characters special to plain TeX + in the directory name in tidy mode (but not the base file name). + + * util/texi2dvi: more quoting of file name args for the sake of + names containing whitespace. A spurious message still results. + + * install-info/tests/defs.in: new file. + * configure.ac: generate install-info/tests/defs. + * install-info/tests/ii-*-test: source it. + * install-info/tests/Makefile.am: do not use export, + which is only supported by GNU make. + +2008-04-13 Juan Manuel Guerrero + + DJGPP specific issues. + * djgpp/config.sed: Fixes required to use configure scripts generated + by autoconf 2.62. + +2008-04-09 Karl Berry + + * pretest 4.11.96. + + * doc/texinfo.txi (geq leq): New node to document new commands + @geq{} and @leq{}, suggested by Arnold Robbins. + * doc/texinfo.tex (\geq, \leq): new macros. + * makeinfo/cmds.c (cm_geq, cm_leq): new fns. + (cm_minus): make static. + * makeinfo/cmds.h (cm_minus): remove decl. + + * makeinfo/insertion.c (handle_verbatim): ignore rest of @verbatim + line, including the newline. + Report from Thien-Thi Nguyen, 01 Apr 2008 11:14:48. + +2008-04-09 Reinhold Kainhofer (tiny change) + + * makeinfo/insertion.c (begin_insertion): do not indent via + whitespace for html, since we already do
. + Reported 30 Mar 2008 00:56:56. + +2008-04-02 Jim Meyering (tiny change) + + * doc/texinfo.tex: fix typos in comments. + +2008-03-31 Karl Berry + + * doc/texinfo.tex (\dopdfimage): try .PDF too. + (\imagexxx): reduce space around vmode image to \medskip from \bigskip. + Start \noindent paragraph for vmode image so that @quotation etc. + indentation will be respected. + Report from Reinhold Kainhofer, 28 Mar 2008 17:33:05. + +2008-03-28 Karl Berry + + * info/Makefile.am (funs.h): change target from all of + $(generated_sources) to avoid problems with parallel builds. + From Michael Haubenwallner, 20 Mar 2008 22:52:20. + +2008-03-26 Karl Berry + + * makeinfo/makeinfo.c (search_forward): use const. + Also (from William Xu) fix typo in comment. + * makeinfo/makeinfo.h (search_forward): change decl. + +2008-03-25 Karl Berry + + * util/texi2dvi (TEX): only unset it if it was nonempty and a + directory. + +2008-03-25 Akim Demaille + + * doc/Makefile.am: Use util_srcdir (new var) where appropriate. + (man_MANS): Also install texi2pdf.1 and pdftexi2dvi.1. + (unset_envvars): New. + Use it. + * util/local.test: Check we don't use $(). + Simplify sed usage: don't use \| which is not portable enough. + * util/Makefile.am: Re-enable tests, in maintainer mode. + +2008-03-23 Benno Schulenberg (tiny change) + + * info/session.c (_scroll_backward): better cursor placement. + +2008-03-23 Karl Berry + + * util/texi2dvi (TEX): unset if it refers to a directory; I think + the University of Utah installation does this. + +2008-03-22 Karl Berry + + * info/session.c (info_move_to_xref): conditionalize "no xref" + message on cursor_movement_scrolls_p. Proposed by + Benno, 22 Mar 2008 15:17:49. + +2008-03-21 Karl Berry + + * pretest 4.11.95. + + * info/Makefile.am (funs.h): use this as the dependency + +2008-03-21 Karl Berry + + * info/session.c (_scroll_forward): leave cursor on last line. + (_scroll_backward): use info_beginning_of_node for consistency. + Changes proposed by Benno Schulenberg, 21 Mar 2008 16:31:27. + +2008-03-20 Karl Berry + + * info/info.c (main): avoid declaration after statement. + +2008-03-17 Karl Berry + + * texinfo.tex (\xrefX): avoid TeX expansions of _ etc. + in the info filename argument (#4). + Report from Ralf Wildenhues, 15 Mar 2008 11:23:38. + +2008-03-14 Karl Berry + + * pretest 4.11.94. + + * install-info/install-info.c: portability fixes. + (parse_dir_file): declare void, since it is. + (split_entry): Remove unused variable ostream. + (add_missing_basenames, add_missing_descriptions): Avoid + declarations after statements. + (main): Do not use // comments. + (format_entry): avoid using isblank, linking fails on osf-alpha, + others. + * util/texi2dvi: use `...` instead of $(...). Avoid + (...) as case labels. + +2008-03-12 Karl Berry + + * doc/texinfo.txi (exdent): typo in example. + Report from Jaakko Hollmen, 11 Mar 2008 19:25:01. + +2008-03-12 Sergey Poznyakoff + + * info/session.c (_scroll_backward): Avoid wrapping to the end of + page when a backward scrolling is requested on the top node. + Patch proposed by Benno Schulenberg. + +2008-03-07 Karl Berry + + * pretest 4.11.93. + + * info/infodoc.c (info_internal_help_text): reorder, regroup. + Suggestion from Benno Schulenberg, 06 Mar 2008 11:59:06. + +2008-03-07 Joseph Myers (tiny change) + + * doc/texinfo.tex (\includezzz): Use \turnoffactive before + expanding @value. + +2008-03-06 Sergey Poznyakoff + + * info/session.c (info_search_internal): Reword wrap-around + messages. + * configure.ac (AM_INIT_AUTOMAKE): Finally remove dist-bzip2. + +2008-03-05 Sergey Poznyakoff + + * util/gendocs.sh: Pass --node-files to texi2html only together + with the --split option. + + * info/session.c (last_node_p): Remove unused variable. + (info_search_internal): Print a message if the search wraps over + the end or beginning of the document. + + * configure.ac (AM_INIT_AUTOMAKE): Move all automake options here. + Add dist-bzip2 for completeness. + * Makefile.am (AUTOMAKE_OPTIONS): Remove in favor of + AM_INIT_AUTOMAKE. + * AUTHORS: Update the URL of Translation Project. + +2008-03-04 Sergey Poznyakoff + + * info/session.c (_scroll_backward): Place cursor at the end of + node if cursor_movement_scrolls_p is on. + + * Makefile.am (AUTOMAKE_OPTIONS): Raise version requirement to + 1.10.1. This is needed for dist-lzma. + + * system.h: Include + * info/session.c (scroll_last_node_choices, scroll_last_node): New + variables. + (forward_move_node_structure): Special behavior when a scrolling + command is issued while on the last node. + * info/session.h (scroll_last_node_choices, scroll_last_node): New + variables. + (SLN_Stop,SLN_Scroll,SLN_Top): New defines. + * info/variables.c (info_variables): New variable + scroll-last-node. + * info/variables.h (scroll_last_node): New variable. + * doc/info-stnd.texi: Document scrolling behavior at the last node + and the scroll-last-node variable. + * NEWS: Document scrolling behavior at the last node. + +2008-03-02 Karl Berry + + * configure.ac (AM_INIT_AUTOMAKE): dist-lzma instead of dist-bzip2. + +2008-03-01 Juan Manuel Guerrero + + DJGPP specific issues. + * system.h [O_BINARY]: Use HAVE_DRIVE in IS_ABSOLUTE. + * djgpp/config.sed: Fix regex pattern to handle version numbers that + looks like 4.NN.NN + +2008-02-29 Karl Berry + + * pretest 4.11.92. + +2008-02-28 Karl Berry + + * doc/texinfo.tex (\includezzz): \edef the filename in order + to expand @value constructs (include-value). This fix + from Joseph S. Myers, 1 Feb 2008 01:11:11. + Document that the \expandafter trickery is necessary in order to + read the file outside of a group (mac-incl). + This report from John Mandereau, 28 Feb 2008 22:12:34. + + * info/infodoc.c (info_internal_help_text): more tweaks. + * info/infomap.c: move up/down to end, too. + Suggestions from Benno Schulenberg, 27 Feb 2008 23:44:17 + and 28 Feb 2008 22:49:27. + +2008-02-28 Akim Demaille + + * util/texi2dvi (absolute): Add a missing "local". + +2008-02-28 Akim Demaille + + Let texi2dvi keep the trailing //. + * bin/texi2dvi ($space, $tab): New. + ($IFS): Use them to be robust to zealous white space cleanups. + (absolute): Preserve the trailing slashes. + (tex_envvars): Add MPINPUTS, MFINPUTS, and TFMFONTS. + +2008-02-28 Akim Demaille + + * util/texi2dvi: Don't use "local foo=`cmd`", because in that case + failures of cmd, including with set -e, will go unnoticed. So + always first declare with local, then run the assignment. + (index_file_p): Adjust to be usable with index.sty. + * util/local.test: Make the test more robust. + +2008-02-27 Karl Berry + + * pretest 4.11.91. + + * info/infomap.c [!INFOKEY]: remove this whole block. It is too + confusing having two sets of key bindings. + + * info/infodoc.c (info_internal_help_text): more tweaks. + Suggestions from Benno Schulenberg, 26 Feb 2008 00:34:22. + +2008-02-26 Brendan O'Dea (tiny change) + + * util/texi2dvi: slightly reformat usage message for help2man. + (sent by peb 26 Feb 2008 12:01:11) + + * install-info/install-info.c (print_help): keep two spaces + between option name and description, or help2man can't do a good job. + +2008-02-26 Peter Breitenlohner + + * info/doc.h, info/echo-area.c, info/echo-area.h, + info/footnotes.c, info/indices.c, info/info.c, info/info.h, + info/infodoc.c, info/infokey.c, info/infomap.c, info/m-x.c, + info/nodemenu.c, info/session.c, info/session.h, + info/variables.c, info/variables.h, info/window.c, + info/window.h: + declare constant strings as such and remove + many `(char *)' casts -- in particular for `_(...)'. + Avoid gcc warnings (for --disable-nls and maybe without). + +2008-02-25 Karl Berry + + * autogen.sh: run autoconf before autoheader, then automake + (per autoreconf). + +2008-02-24 Karl Berry + + * info/infomap.c (x): bind to delete_window. + * info/infodoc.c (info_internal_help_text): more rearrangements. + (create_internal_info_help_node: omit incorrect exiting suggestion + at end. + Suggestions from Benno Schulenberg, 24 Feb 2008 22:56:44. + + * install-info/install-info.c (munge_old_style_debian_options): + avoid use of asprintf, just xmalloc ourselves. + In report from Juan Manuel Guerrero, 24 Feb 2008 22:06:35. + + * install-info/install-info.c (spec_entry) : declare + as size_t instead of int, to avoid warning. + In report from Juan Manuel Guerrero, 24 Feb 2008 22:06:35. + +2008-02-22 Karl Berry + + * pretest 4.11.90. + +2008-02-22 Peter Breitenlohner + + * configure.ac (--enable-multiplatform): also set libdir. + * util/defs.in (PATH): include @abs_builddir@. + * util/texi2dvi (usage): consistently escape \$HOME. + +2008-02-21 Karl Berry + + * info/infodoc.c (info_internal_help_text): more simplifications. + Suggestions from Benno Schulenberg, 21 Feb 2008 23:35:38. + + * install-info/tests/ii-0041-test, + * install-info/tests/ii-0041-test: ensure target dir file is rw. + +2008-02-19 Karl Berry + + * info/infodoc.c (info_internal_help_text): rearrangements. + * info/session.c (cursor_movement_scrolls_p): 1 by default. + * info/window.c (window_scroll_step): 1 by default. + * info/infomap.c : h to info_get_help_window, + H to info_get_info_help_node, + PgUp to info_scroll_backward, PgDown to info_scroll_forward, + move q to after C-x C-c . + Suggestions from Benno Schulenberg, 04 Jan 2008 23:20:46. + +2008-02-17 Karl Berry + + * util/texi2dvi (EGREP): need egrep early. + + * util/texi2dvi: path_sep is : on djgpp too. From Eli Z. + + * makeinfo/makeinfo.c: typos in comments. + + * makeinfo/cmds.c (cm_direntry): call close_single_paragraph, + instead of add_char('\n'), or the INFO-DIR-SECTION lines from two + consecutive @dircategory's are munged together. + Bug report from Ralf Angeli, 16 Feb 2008 18:59:42. + +2008-02-16 Karl Berry + + * util/texi2dvi: path_sep is : on mingw as well as cygwin. + Report from: FX Coudert, 16 Feb 2008 15:43:15. + + * makeinfo/cmds.c (cm_cite): avoid double apostrophe in + Info output of, e.g., ... @cite{Foo}'s ... + Report from Bob Chassell. + +2008-02-15 Karl Berry + + * doc/texinfo.tex (\tex): spurious space in redefinition of \top. + + * makeinfo/cmds.c (handle_include): set in_fixed_width_font + for expanding the filename argument, so -- doesn't become -. + Bug report from Daniel Richard G., 13 Feb 2008 01:50:00. + +2008-02-11 Karl Berry + + * info/session.c (incremental_search): if a regex search, + search every time through the loop, not only if the search + succeeded. + Bug report from Ralf Wildenhues, 8 Feb 2008 23:30:51. + +2008-02-10 Karl Berry + + * info/session.c (show_isearch_prompt): Start with "Regexp" if + it's a regexp i-search. + Suggestion from Ralf Wildenhues, 8 Feb 2008 23:30:51. + +2008-02-04 Karl Berry + + * doc/texinfo.tex (\includezzz): simply do the \input (instead of + trickily expanding it after the }) a la \verbatiminput; otherwise, + @value expansions are not done. The trickery just seems unnecessary. + Report from Joseph S. Myers, 1 Feb 2008 01:11:11. + +2008-02-01 Karl Berry + + * doc/texinfo.tex (\ptextop): save plain tex \top (a math symbol). + (tex env): restore plain text \top. + +2008-01-31 Karl Berry + + * doc/texinfo.txi (Click Sequences): new section to document new + commands @arrow, @clicksequence, @click, and @clickstyle. + * doc/texinfo.tex (\clicksequence, \click, \clickstyle): define them. + * makeinfo/cmds.h, + * makeinfo/cmds.c (cm_arrow, cm_click, cm_clicksequence, + cm_clickstyle): new fns. + * insertion.h, + * insertion.c (get_item_function): no longer static. + * xml.h, + * xml.c (CLICK, CLICKSEQUENCE): new elements. + * util/texinfo.dtd (Inline.misc): add click and clicksequence. + (rarr): new entity. + + * makeinfo/xml.c (xml_insert_entity): only do XML checks if we are + actually outputting XML; this routine is also used for HTML output. + + * makeinfo/makeinfo.c (convert_from_loaded_file): move + xml_begin_document to after we are sure the output file is open. + +2008-01-30 Karl Berry + + * doc/texinfo.txi, doc/info-stnd.texi (Back-Cover Text): new + wording from rms. + +2008-01-24 Karl Berry + + * info/session.c (info_move_to_xref): must use fixed-string + searches for these Info keywords that contain *. + Report from Ben Asselstine, 29 Dec 2007 11:21:40 (et al.). + + * doc/info-stnd.texi (What is Info): that's C-x C-c to exit, not + C-x C-x. Report from Benno, 24 Jan 2008 00:40:04. + +2008-01-23 Karl Berry + + * makeinfo/insertion.c (begin_insertion) : ignore + whitespace beginning the first * line inside @direntry, + to work around the zsh manual. + Report from Norbert Preining, 14 Jan 2008 09:09:01. + +2008-01-21 Karl Berry + + * info/info.c (main): silently switch to info-stnd if given + -O (--usage) info. + Suggestion from Benno, 19 Jan 2008 19:58:47. + +2008-01-20 Karl Berry + + * install-info/install-info.c (print_help): split up big help string, + some rewording. + +2008-01-19 Karl Berry + + * util/texi2dvi (run_tex): use verbose, not echo, so -q is respected. + Report from Kurt Hornik, 19 Jan 2008 11:16:27. + +2008-01-18 Karl Berry + + * doc/texinfo.txi (Other Info Directories): mention starting at 0 + and what-cursor-position when figuring column positions. + +2008-01-16 Karl Berry + + * util/texi2dvi (move_to_dest): compare with filenames, rather + than cmp -s, since the output file might not actually change. + Report from Ralf Wildenhues, 15 Jan 2008 07:20:34. + + * doc/texinfo.txi (Invoking makeinfo): --document-language default + is @documentlanguage, as of 4.11. + + * doc/texinfo.txi (Makeinfo Pointer Creation): mention the + need for @detailmenu here, too. + +2008-01-14 Karl Berry + + * NEWS: install-info NEWS details. + +2008-01-13 Bruno Haible + + * util/gendocs.sh (curdate): Execute 'date' command in the locale + specified by SETLANG. + +2008-01-12 Bruno Haible + + * doc/texinfo.txi (Cross Reference Parts): better description of arg2. + bug-texinfo mail of 12 Jan 2008 15:52:23 +0100. + +2008-01-02 Karl Berry + + * info/info.c (info_short_help) [__MSDOS__]: puts -b string directly. + Suggestion from Benno. + +2008-01-02 Karl Berry + + * util/Makefile.am (TESTS): remove dvipdf.test, it is too + dependent on functional TeX installations. Not our place to test that. + +2008-01-02 Karl Berry + + * install-info/, install-info/tests/: new subdirectories. + * util/Makefile.am: move install-info stuff to its own dir, with tests. + * configure.ac, + * Makefile.am (SUBDIRS): take care of new dirs. + * doc/Makefile.am (install-info.1): new source location for man page. + * po/POTFILES.in: update source list. + +2008-01-02 Ben Asselstine + + * install-info/install-info.c: much work toward Debian compatibility. + (line_data): new member num_sections to add; change type of + add_entries_before. + (spec_entry): new members missing_name, missing_description, + missing_basename. + (longopts): new options --name, --menuentry, --description, + --no-indent, --keep-old, --maxwidth, --max-width, + --section-regex, --dry-run. + (remove_empty_sections, add_entries_into_all_matching_sections, + keep_old_flag, indent_flag, + order_new_sections_alphabetically_flag): new globals. + (print_help): list new options. + (output_dirfile): count sections added, and possibly sort them. + (parse_input): handle delete_flag. + (parse_dir_file): write the end of the last node. + (mark_entry_for_deletion, adjust_column, format_entry, + split_entry, reformat_new_entries, add_missing_basenames, + add_missing_names, add_missing_descriptions, + munge_old_style_debian_options): new fns. + (main): new variables calign, align, maxwidth, + entries_to_add_from_file; munge per debian if needed; handle new + options. + (compare_entries_text): use mbsncasecmp. + * doc/texinfo.txi (Invoking install-info): mention the new options. + +2008-01-01 Karl Berry + + * info/info.c (info_short_help): break help string into smaller + pieces, to help translators. + Suggestion from Benno Schulenberg, 01 Jan 2008 12:22:31. + +2008-01-01 Ben Asselstine (tiny change) + + * doc/info-stnd.texi (Invoking Info): document this. + * info/info.c (long_options, short_options): use -k as an alias + for --apropos. + (main): recognize it. + (info_short_help): document it. + (APROPOS_OPTION): no longer needed. + +2007-12-23 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.17. + +2007-12-19 Norbert Preining (tiny change) + + * makeinfo/insertion.c (begin_insertion) : use add_word + instead of insert_string, so that the "This is ..." line is + written before the START-INFO-DIR-ENTRY. + +2007-12-17 Karl Berry + + * doc/info-stnd.texi (Searching Commands): Document the new regex + search, a little. + (@copying): Update Back-Cover Text. + * doc/info.texi (@copying): Update Back-Cover Text. + +2007-12-17 Stephane Chazelas + + * info/infomap.c (R): new command info_toggle_regexp. + * info/session.c (use_regex): new static (true by default). + (info_toggle_regexp): new command. + * info/session.h (info_toggle_regexp): declare it. + * info/search.c (regexp_search): new fn. + * info/search.h (regexp_search): declare it. + Savannah bug 15572. + +2007-12-16 Karl Berry + + * info/session.c: remove more status messages. + Report from Benno Schulenberg, 16 Dec 2007 12:24:12. + +2007-12-15 Karl Berry + + * doc/texinfo.tex (\pdffontattr): only do the cmaps if this pdftex + primitive is defined, for the sake of those running ancient versions. + +2007-12-13 Karl Berry + + * info/session.c: remove status report messages, said to be noise. + Report from Benno Schulenberg, 11 Dec 2007 00:19:57. + +2007-12-09 Benno Schulenberg (tiny change) + + * makeinfo/makeinfo.c (usage): improve help message. + bug-texinfo mail of 02 Dec 2007 23:43:10 +0100. + +2007-12-09 Fabian Groffen (tiny change) + + * info/makedoc.c (main): reorder calls following the Makefile + dependencies, for high-precision filesystems. + http://bugs.gentoo.org/show_bug.cgi?id=200662 + bug-texinfo mail of 3 Dec 2007 17:59:13 +0100. + +2007-12-02 Karl Berry + + * info/info.c (main): undo change of 2006-08-13 in this file, + so info can be easily tested in multibyte locales. + + * all files: use the multibyte case comparison functions + mbscasecmp and mbsncasecmp from gnulib, instead of simply + strcasecmp and strncasecmp. (1) gnulib strcase is buggy, + declaring the str* functions in string.h instead of strings.h, + leading to build failure on AIX 4.3.3 (report from Gary E. Barnes, + 21 Nov 2007 12:37:12). (2) we want to support multibyte locales + better anyway. + +2007-11-30 Sergey Poznyakoff + + * doc/Makeinfo.am: Rename txi-no.tex to txi-nb.tex (see + 2007-10-31). + +2007-11-27 Karl Berry + + * doc/texinfo.txi (headings on off): clarify the meaning of + @headings on. Report from Dilyan Palauzov, 25 Nov 2007 17:07:09. + +2007-11-25 Stephane Chazelas + + * info/indices.c (info_next_index_match): use the line number + specified in the index entry, if available. + +2007-11-23 Benno Schulenberg (tiny change) + + * info/infodoc.c: keep help strings together for translation. + +2007-11-22 Ralf Wildenhues + + * util/texi2dvi: Fix quoting for white space in file names. + +2007-11-21 Karl Berry + + * makeinfo/lang.h (hz): #undef, since apparently it is defined on + AIX 4.3.3. + Report from: Gary E. Barnes, 21 Nov 2007 12:37:12. + +2007-11-16 Karl Berry + + * info/info.c (info_error): use puts instead of fprintf if we + don't actually have any arguments. Else + info --file=".%x.%x." will try to print NULL. + Report from Cody Rester, 16 Nov 2007 08:59:48. + +2007-10-31 Karl Berry + + * doc/txi-no.tex: rename to txi-nb.tex. + * po/no.po: remove. + * po/LINGUAS: remove no. + +2007-10-24 Karl Berry + + * makeinfo/node.c (cm_node), + * makeinfo/cmds.c (cm_settitle): no need to call xml_begin_document. + * makeinfo/makeinfo.c (convert_from_loaded_file): call + xml_begin_document in docbook case too, else some frontmatter + can be lost. + Bug report from Sam Varshavchik, 14 Oct 2007 12:10:04, for binutils. + + * makeinfo/insertion.c: formatting. + + * makeinfo/xml.c (xml_begin_document): arg can be const; + use basename of @setfilename instead of "book-root". + (xml_push_current_element, xml_pop_current_element): use + warning fn for consistent formatting. + + * util/dir-example: binutils update, etc. + +2007-10-24 Sergey Poznyakoff + + * util/gendocs.sh: New option --texi2html, to use texi2html for + creating HTML output. + Handle special conditional constructs in the template: %%IF + HTML_SECTION%% and %%IF HTML_CHAPTER%% (both closed with a + corresponding %%ENDIF) to conditionally enable parts of the output + depending on texi2html split outputs. + * util/gendocs_template: Conditionally enable section and chapter + split HTMLs. + * util/gendocs_template_min: Likewise. + +2007-10-19 Karl Berry + + * info/display.c (display_update_one_window): don't try to display + a window unless both width and height are >0. + * window/window.c (window_new_screen_size): try to ensure that + no window width/height ever becomes negative. + Bug report and ideas from Vitezslav Crhonek, 18 Oct 2007 15:15:51, + as well as https://bugzilla.redhat.com/show_bug.cgi?id=243971. + +2007-10-13 Karl Berry + + * makeinfo/cmds.c (cm_dircategory): use add_word instead of + insert_string so that the info file header ("This is ...") comes + after the INFO-DIR-SECTION magic. + Bug report from Katsumi Yamaoka, emacs-devel 10 Oct 2007 11:17:10. + +2007-10-08 Bruno Haible + + * makeinfo/lang.c (unicode_map): New variable. + (cm_search_iso_map): In case of UTF-8 encoding, return a Unicode code + point. + (add_encoded_char_from_code): New function. + (add_encoded_char, cm_accent_generic_no_headers): Use it. + +2007-10-03 Karl Berry + + * doc/texinfo.txi (math): @math{k_{75}} is allowed, despite bare + braces. + +2007-10-02 Karl Berry + + * doc/texinfo.txi (math): Make description more accurate. + Ideas by Patrice Dumas, 16 Sep 2007 12:02:46. + +2007-09-26 Karl Berry + + * makeinfo/index.c (count_strn_chars): new fn. + (insert_index_output_line_no): call it. + (cm_printindex): call it. + This is to fix off-by-one width computation due to @tie{}, + reported by Werner Lemberg, 16 Sep 2007 16:48:47. + + * makeinfo/cmds.c, + * makeinfo/xref.c: #include "index.h", instead of explicit + extern printing_index. + * makeinfo/index.c (the_indices, index_element_compare): can be static. + * makeinfo/index.h: make order of decls match index.c. + +2007-09-25 Karl Berry + + * doc/texinfo.txi (Six Parts): End segment should not have toc anymore. + +2007-09-24 Karl Berry + + * makeinfo/makeinfo.c (convert_from_file): free `input_filename' leak. + Reported by Stephen Compall, 21 Sep 2007 20:25:54. + +2007-09-21 Stephen Compall (tiny change) + + * makeinfo/makeinfo.c (convert_from_file): excise code testing + case in suffixes that doesn't arise. + +2007-09-21 Karl Berry + + * makeinfo/makeinfo.c, + * info/info.c, + * util/texindex.c, + * util/install-info.c (main): unify declaration on char *argv[]. + +2007-09-20 Greg Schafer (tiny change) + + * util/dvipdf.test, + * util/texi2dvi.test (required): need tex, or the tests fail. + +2007-09-17 Karl Berry + + * util/defs.in (TEXI2DVI_run): try "type" instead of "which". + Report from Michael Deutschmann, 13 Sep 2007 01:29:39. + + * util/defs.in (optionset_get): use `...`, not $(...). Still too + newfangled. Report from Bert Deknuydt. + +2007-09-16 Thien-Thi Nguyen (tiny change) + + * doc/texinfo.tex (w): Do s/indenting manual/manual indenting/. + +2007-09-15 Karl Berry + + * makeinfo/makeinfo.h, + * makeinfo/makeinfo.c, + * makeinfo/defun.c, + * makeinfo/html.c, + * makeinfo/node.c, + * makeinfo/toc.c, + * makeinfo/xref.c (__): rename to gdt, since HP-UX uses it in + . (Report from Bert Deknuydt, 12 Sep 2007 12:17:34). + +2007-09-09 Karl Berry + + * Version 4.11. + +2007-09-05 Karl Berry + + * doc/info-stnd.texi (Variables): make an anchor for + scroll-behavior, and use it. Idea from Benno Schulenberg, + 04 Sep 2007 00:21:01. + +2007-09-03 Karl Berry + + * pretest 4.9.92. + + * doc/texinfo.tex (\baselinefactor): new macro, 1 by default. + (\setleading): use it, to allow for poor man's double spacing. + (\afourpaper, \letterpaper): use absolute dimension for height, + instead of a multiple of \baselineskip. (Otherwise things run off + the bottom when double-spacing.) + +2007-09-01 Juan Manuel Guerrero + + * djgpp/config.bat: change file names arguments and configure.orig + to args and configure.org. + Remove the command line that deletes co*.tmp files. + +2007-08-31 Karl Berry + + * info/info.c (main) [LC_MESSAGES]: conditionalize setlocale on + LC_MESSAGES, since djgpp 2.04 doesn't have it. + Report from Juan Manuel Guerrero, 28 Aug 2007 21:38:18. + * info/man.c (get_manpage_contents) [LC_MESSAGES]: likewise. + * makeinfo/makeinfo.c (main): doc fix, likewise. + +2007-08-26 Karl Berry + + * info/infodoc.c (info_internal_help_text): hardwire + menu-digits help string; bug report from Benno. + +2007-08-16 Karl Berry + + * makeinfo/lang.c (iso8859_2_map): include known HTML entities, + from the 88592.txt file in the GNU enscription distribution. + +2007-08-04 Juan Manuel Guerrero + + * djgpp/config.bat: replace the string diffutil*.pot by + the correct one texinfo*.pot + + * djgpp/config.sed: adjust for the use with autoconf 2.61 + + * djgpp/config.site: adjust for the use with autoconf 2.61 + +2007-08-04 Sergey Poznyakoff + + * doc/info-stnd.texi: Document cursor-movement-scrolls variable. + Document different spellings of scroll-behaviour variable. + * info/info-utils.c (info_references_internal): Initialize + line_number. + * info/infodoc.c (info_internal_help_text): Update docstrings + for move-to-next-xref and move-to-prev-xref. + * info/session.c (forward_move_node_structure) + (backward_move_node_structure): Return int + (cursor_movement_scrolls_p): New variable. + (info_next_line,info_prev_line,info_forward_char,info_backward_char) + (info_forward_word,info_backward_word): Scroll through the + entire document if cursor_movement_scrolls_p is set. + (info_move_to_xref,info_move_to_prev_xref): Return int + * info/session.h (cursor_movement_scrolls_p): New variable + * info/variables.h: Likewise + * info/variables.c (scroll-behavior): Alias for scroll-behaviour + (cursor-movement-scrolls): New variable. + +2007-07-30 Karl Berry + + * doc/texinfo.tex (\badparencount, \badbrackcount): make these + just warnings, not \errmessage's. + +2007-07-29 Karl Berry + + * pretest 4.9.91. + * doc/texinfo.txi (Inserting Quotes): wording. + + * util/Makefile.am (TESTS): remove local.test. It fails and I + would prefer not to replace local with a shell function anyway. + + * util/texi2dvi.test: with -o output, do not expect input.dvi + to remain. + +2007-07-26 Karl Berry + + * util/Makefile.am (pdftexi2dvi): copy texi2pdf, not texi2dvi. + +2007-07-24 Karl Berry + + * util/texi2dvi (move_to_dest): really move the file, + don't just copy it, else automake tests fail. + From Michael Deutschmann, 23 Jul 2007 20:55:32. + +2007-07-23 Karl Berry + + * doc/texinfo.tex (license notice): punctuation changes to + match recommendation. From Paul Eggert. + +2007-07-23 Akim Demaille + + * util/texi2dvi: Update DVIPSHEADERS so that dvips finds its + special headers. + Don't rely on non-IFS splitting when using local. + Maybe we should just not use local at all. + Or never use it to assign at the same time: declare, then assign. + * util/local.test: Check that "local" is used properly with quotes. + +2007-07-23 Akim Demaille + + Use hevea more like we use tex itself, no longer as a tool + that does everything magically. + * util/texi2dvi (run_hevea): Remove trailing spaces in the + output. + (run_tex_suite): Change to the working directory here, no longer + in... + (run_core_conversion): here, so that even when running hevea where + are in the working directory. + No longer call cd_orig, do it... + (run_tex_suite): here. + (run_hevea): Pass verbose flags to it when --debug. + (run_tex_suite): Since we now want to run the whole suite of tools, + including bibtex, with hevea, use run_core_conversion, not + run_tex. + (run_core_conversion): Now call run_tex. + +2007-07-15 Karl Berry + + * doc/info-stnd.texi (@copying, GFDL): remove, since it's + not part of info.texi either. + (Invoking Info): mention customization here and elsewhere, + to make it a bit more prominent. + +2007-07-15 Oleg Katsitadze + + * doc/texinfo.tex (\quotedblleft, \quotedblright, \quoteleft, + \quoteright): aliases for the quotation marks from the CM fonts. + (\guillemetleft, \guillemotleft, \guillemetright, \guillemotright, + \guilsinglleft, \guilsinglright, \quotedblbase, \quotesinglbase): + new macros to borrow quotation marks from the EC fonts. The + following font macros support these glyphs. + (\ecfont): new macro to switch to a EC font as close as possible + to the current style. + (\textecsize, \smallecsize, \smallerecsize, titleecsize, \chapecsize, + \sececsize, \ssececsize, \reducedecsize): new macros to store EC + font name sizes. + * makeinfo/cmds.c, makeinfo/cmds.h: added defs for the new + quotation marks. + * makeinfo/lang.c (cm_special_char): added guillemetleft, + guillemotleft, guillemetright, guillemotright. + * util/texinfo.dtd (lsquo, rsquo, sbquo, bdquo, laquo, raquo, + lsaquo, rsaquo): entities for the new quotation marks. + * doc/texinfo.txi (Inserting Quotation Marks): new section. + (General Syntactic Conventions): moved quotation mark syntax to + Inserting Quotation Marks. + (Preparing for TeX): added info on installation of EC and Euro fonts. + +2007-07-14 Karl Berry + + * doc/texinfo.txi (@copying, GNU Sample Texts), + * doc/info-stnd.texi (@copying): update Back-Cover Text. + +2007-07-12 Karl Berry + + * makeinfo/lang.c (default_country_for_lang): strcasecmp returns 0 + when we find en. + +2007-07-10 Karl Berry + + * makeinfo/makeinfo.h (enable_encoding): default to 1. + * makeinfo/makeinfo.c (long_options): new option --disable-encoding + to set to zero. + (usage): document --disable-encoding. + * makeinfo/lang.c (add_encoded_char): don't enable 8-bit unless we + have a document encoding. + * doc/texinfo.txi (makeinfo Options, documentencoding): document this. + +2007-07-09 Karl Berry + + * doc/texinfo.tex (\xrefX): use \putwordSection for external + cross-references, too. + Report from Ludovic C, 09 Jul 2007 18:09:13. + +2007-07-09 Oleg Katsitadze + + * doc/texinfo.tex (\thissection): renamed to \lastsection. + (\thissectionname, \thissectionnum, \evenheadingmarks, \oddheadingmarks, \evenfootingmarks, \oddfootingmarks, \everyheadingmarks, \everyfootingmarks): + new macros. + (\thischapter, \thischaptername, \thischapternum, \thissection, \thissectionname, \thissectionnum): + defined these using marks. + (\chapoddpage): omit heading and footing on blank filler pages. + * doc/texinfo.txi (Page headings): documented + \thissection{,name,num} and \{even,odd,every}{head,foot}ingmarks. + * makeinfo/cmds.c (command_table): added + {even,odd,every}{head,foot}ingmarks. + +2007-07-08 Karl Berry + + * makeinfo/node.c (validate_file): don't check for warning limit, + it was hit in gnulib. + * makeinfo/makeinfo.h (reference_warning_limit): remove. + * makeinfo/makeinfo.c (main): ignore the option (but leave it in + so any Makefiles or scripts that use it won't gratuitiously break). + * doc/texinfo.txi (Invoking makeinfo): remove documentation for + --reference-limit. + +2007-07-07 Karl Berry + + * doc/texinfo.txi (@copying): new Back-Cover Text. + +2007-07-06 Karl Berry + + * doc/texinfo.txi (Other Info Directories): recommend columns 32 + and 48. Suggestion from Antonio Diaz Diaz. + +2007-07-05 Karl Berry + + * texinfo.tex (\setnonasciicharscatcodenonglobal, + \setnonasciicharscatcode): no newline after #1, that counts as a space. + (\pagebody, \pagesizesyyy): likewise. + +2007-07-03 Oleg Katsitadze + + * doc/texinfo.tex: use \setcolor for color changes instead of + \pdfsetcolor, to preserve color changes across page breaks. Use a + darker red (which comes out almost black in b&w print) for links + and urls. + +2007-07-02 Oleg Katsitadze + + * doc/pdfcolor.tex: removed (merged with doc/texinfo.tex). + * doc/texinfo.tex: merged doc/pdfcolor.tex, omitting unused colors. + * doc/Makefile.am, doc/README, doc/texinfo.txi, util/srclist.txt: + removed any mention of pdfcolor.tex. + + * doc/texinfo.tex (\chapmacro): avoid potential breakpoint at + interline glue between \pdfdest and the heading. + (\safewhatsit): typo. + +2007-07-01 Karl Berry + + * pretest version 4.9.90. + + * COPYING, all source files: GPLv3. + + * makeinfo/makeinfo.c, + * info/info.c, + * info/infokey.c, + * util/install-info.c, + * util/texindex.c: update --version output. + + * Makefile.am (EXTRA_DIST): remove config.rpath, it's in build-aux now. + * lib/Makefile.am (libtxi_A_SOURCES): system.h at top level now. + + * util/texi2dvi (move_to_dest): still more tweaks to try avoid + complaints from cp and cmp. + + * makeinfo/tests/copying.txi: test with nonempty copying text. + * makeinfo/insertion.c (cm_insert_copying): call output_head. + +2007-06-29 Karl Berry + + * Version 4.9 (GPLv3, made from 4.8 branch). + +2007-06-29 Karl Berry + + * util/texi2dvi (move_to_dest): do not cmp a directory. + +2007-06-27 Karl Berry + + * util/texi2dvi (move_to_dest): do not copy a file onto itself, + GNU cp complains. + +2007-06-27 Oleg Katsitadze + + * doc/texinfo.tex (\setnonasciicharscatcodenonglobal): new macro. + (\scanctxt): in case of non-ASCII encodings, un-activate 8-bit + chars to avoid their expansion. Report from John Mandereau, + 22 Jun 2007 17:26:09 +0200. + +2007-06-24 Karl Berry + + * doc/texinfo.tex (\internalpagesizes): must reset \pdfhorigin and + \pdfvorigin after changing \pdfpageheight and \pdfpagewidth. + +2007-06-20 Karl Berry + + * doc/texinfo.tex (\documentlanguagetrywithoutunderscore): new macro, + to try txi-de.tex if @documentlanguage de_DE. + (\documentlanguage): call it. + + * lang.c (default_country_for_lang): just return country code, not + whole locale string. + + * makeinfo.h (output_head_p): new global. + * makeinfo.c (info_output_head, output_head): new fns. + (add_char): call it. This is so we can translate the file header + ("produced by Makeinfo ...") in Info output as well as HTML. + * html.c, + * html.h, + * cmds.c: change usage of html_output_head_p to output_head_p, etc. + +2007-06-17 Karl Berry + + * makeinfo/lang.c (default_country_for_lang): implement using the + same locales_with_principal_territory list as gettext's msginit.c. + + * makeinfo/lang.c (language_table): update from current list, + write out update procedure for next time. + * makeinfo/lang.h (language_code_type): update enum. + * doc/texinfo.txi (documentlanguage): don't include the list of + language codes, change is too rapid. + + * doc/texinfo.tex (\codequoteright, \codequoteleft): support + @set txicodequoteundirected and + @set txicodequotebacktick, respectively, as well as the non-txi names. + * doc/texinfo.txi (Inserting Quote Characters): new node. + * NEWS: mention both. + +2007-06-14 Karl Berry + + * makeinfo/lang.c (cm_documentlanguage): add _CC part if necessary, + or split LL_CC if that's given. Set document_language so that + getdocumenttext strings will be translated. + * doc/texinfo.txi (documentlanguage): + * NEWS: mention this. + + * util/gendocs_template: mention possibility of buying manuals + +2007-06-13 Karl Berry + + * makeinfo/xml.c (xml_insert_element_with_attribute): close + menu_entry and menu_entry_comment elements before handling the + detailmenu element (either start or end). + From Thien-Thi Nguyen, 04 Jun 2007 01:18:37. + +2007-06-03 Per Bothner + + * xml.c (docbook_element_list): Map ANCHOR to "anchor". + * node.c (cm_anchor): Handle docbook. + +2007-05-22 Karl Berry + + * util/gendocs_template{,_min}: missing period on source link. + +2007-05-21 Karl Berry + + * makeinfo/multi.c (select_output_environment): C is not Perl. + + * util/install-info.c (--test, --debug): new options, + via new variable chicken_flag and debug_flag, + and (minimal) implementation thereof. + (--silent): synonym for --quiet. + * doc/texinfo.txi (Invoking install-info): document them. + +2007-05-18 Karl Berry + + * doc/texinfo.txi (Invoking install-info): document them. + +2007-05-18 Norbert Preining + + * util/install-info.c (longopts): new options --remove-exactly, + --section-regex. + (main): handle them. + +2007-05-17 Karl Berry + + * doc/texinfo.txi (Image Syntax): findex entry should just be for + "-", not "@-". (Which fails due to \initial{\} in texinfo.fns, + but that's a different story.) + +2007-05-04 Karl Berry + + * makeinfo/node.c (cm_anchor): ignore following whitespace, + including newlines. Reported by Kevin Ryde. + * doc/texinfo.txi (anchor): state this more clearly. + + * doc/texinfo.tex (\tocreadfilename): allow override of + \jobname.toc for sake of 2-volume printed lispref. + (\finishentry): change test for no page number (and hence no + leaders) again, for "Volume N" in lispref. + (\smallbook): adjust margins to be more equal. + +2007-05-03 Karl Berry + + * doc/texinfo.tex (\urlcolor, \linkcolor): define both as \BrickRed + by default. + +2007-04-29 Werner Koch + + * makeinfo/html.c (process_css_file): Don't omit copying the i + of @import. (Reported on 27 Sep 06.) + +2007-04-29 Karl Berry + + * system.h [__CYGWIN__]: #define STRIP_DOT_EXE 0 (since gunzip.exe + may no longer exist), and PIPE_USE_FORK as 1. + From Christopher Faylor, 28 Apr 2007 20:25:56. + + * makeinfo/cmds.c (cm_strong): doc fix. + + * makeinfo/makeinfo.h (paragraph_buffer_len): move decl here ... + * makeinfo/makeinfo.c (paragraph_buffer_len): from here. + * makeinfo/multi.c (select_output_environment): save and restore + paragraph_buffer_len. Otherwise, an exceptionally long multitable + entry (gcal.texi) might realloc output_paragraph, thus increasing + paragraph_buffer_len, and then we get back to the main text and + restore the old output_paragraph, we'll be out of sync. Yikes. + (Thank you to Electric Fence and valgrind.) + +2007-04-26 Oleg Katsitadze + + * doc/texinfo.tex (cmapOT1, cmapOT1IT, cmapOT1TT): new definitions + for pdf so that searching and copying from pdf documents will find + text properly, e.g., the "fi" in "file". Report from + Frank K on tex-live. + +2007-04-26 Karl Berry + + * util/gendocs_template: conform to new GNU style. From Yavor. + * util/gendocs_template_min: previous version, without SSI. + +2007-04-21 Karl Berry + + * system.h (DMALLOC_FUNC_CHECK) [DMALLOC_DEBUG]: #define. + +2007-04-17 Karl Berry + + * doc/texinfo.txi: findex set and clear. + From Kevin Ryde, 16 Apr 2007 11:15:00. + +2007-04-12 Karl Berry + + * doc/texinfo.txi: improve @: usage and documentation throughout. + +2007-04-08 Karl Berry + + * makeinfo/makeinfo.c (bs_escape_quote): new fn. + (cm_image) : call it, to escape the alt string. + Also expand the alt string. + bug-texinfo mail from Kevin Ryde, 26 Mar 2007 07:06:14. + + * doc/texinfo.tex (\printindex): set \plainfrenchspacing. + +2007-04-07 Oleg Katsitadze + + * doc/texinfo.tex (\defunpenalty): new register. + (\startdefun): use it to avoid page breaks between a defun and a + single defunx -- only allow breaks between multiple defunx's. + +2007-04-03 Oleg Katsitadze + + * doc/texinfo.tex (\whatsitskip, \whatsitpenalty): new registers. + (\safewhatsit): generalization of \dosubindsanitize. Change call. + (\pdfmkdest, \dosubind, \setref): call it. This avoids a page + break at an anchor (lispref/loading.texi/load-read-function). + +2007-04-02 Karl Berry + + * util/gendocs_template: "bytes" is more accurate than "characters". + * util/gendocs.sh: force English settings; improve --help. + From Bruno. + +2007-03-31 Karl Berry + + * makeinfo/makeinfo.c (init_paragraph): only free output_paragraph + if it is non-null. + +2007-03-31 Roland Levillain + + * makeinfo/makeinfo.c (cm_image): Look for a JPEG image in the + include search path before giving up. + Fix inclusion of JPEG images (with non explicit extension) + not present in the current directory, but in the include search path. + +2007-03-28 Karl Berry + + * doc/texinfo.txi (Menus): missing word "text". + From Matt Kraai, 27 Mar 2007 10:26:28 -0700. + +2007-03-18 Karl Berry + + * makeinfo/makeinfo.c (cm_image): malloc enough space for the .txt + when given an extension. + +2007-03-17 Karl Berry + + * util/dir-example: dmalloc, alignment. + +2007-03-13 Oleg Katsitadze + + * doc/texinfo.tex (\enddoublecolumns): add \penalty0 so the + recent contributions won't be spuriously added to an index page. + +2007-02-26 Karl Berry + + * info/info.c (info_short_example): example for dumping a whole + manual, suggested by Dan Jacobson, 21 Feb 2007 08:37:08. + +2007-02-24 Karl Berry + + * doc/texinfo.txi (The Top Node): no @insertcopying recommended, + per rms. + +2007-02-21 Karl Berry + + * system.h: simplify system header inclusion, following current + practice; that is, copied from GNU Hello. + + * makeinfo/test/no-headers (nulldev): just always use /dev/null. + Also from Brian. + + * system.h (strcase.h) [!HAVE_STRCASECMP...]: remove this + inclusion entirely, apparently with gnulib string.h suffices. + Report from Brian Dessent, 31 Oct 2006 15:50:34. + +2007-02-21 Brian Dessent (tiny change) + + * info/info.c, + * info/infokey.c, + * info/makedoc.c, + * util/texindex.c (program_name): declare as non-static, for + non-glibc, e.g., Cygwin. bug-texinfo mail from 31 Oct 2006 15:50:34. + +2007-02-14 Miloslav Trmac + + * makeinfo/makeinfo.c (getdocumenttext): Correctly save and + restore the current locale configuration. + bug-texinfo mail of 14 Feb 2007 16:28:37 +0100. + +2007-02-11 Karl Berry + + * doc/texinfo.txi (HTML Xref Link Basics): manual is metasyntactic. + + * doc/texinfo.txi (documentencoding, documentlanguage): + mention the UTF-8 is (sort of) supported, and that these commands + should be given after @setfilename. + + * doc/texinfo.tex (\pdfmkdest): \makevalueexpandable, + so simple @value in @node names can work. + Report from Jorge Barros de Abreu, 14 Jan 2007 08:24:57 (+ff). + +2007-02-10 gettextize + + * gnulib/m4/gettext.m4: Upgrade to gettext-0.16. + * gnulib/m4/lib-link.m4: Upgrade to gettext-0.16. + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.16. + +2007-02-07 Miloslav Trmac + + * configure.ac: Remove unnecessary wcwidth () test. Add missing + setlocale () test. + * makeinfo/makeinfo.c (string_width): Remove. + * makeinfo/makeinfo.h (string_width): Remove declaration. + + * makeinfo/cmds.c (cm_center) + * makeinfo/index.c (insert_index_output_line_no, cm_printindex): + * makeinfo/makeinfo.c (do_flush_right_indentation) + * makeinfo/multi.c (output_multitable_row): Use mbswidth () and + mbsnwidth () instead of string_width (). + +2007-01-25 Karl Berry + + * makeinfo/float.c (cm_listoffloats): always use the short caption + in the list of floats if it is provided. Report from + Jay Berkenbilt, 19 Jan 2007 11:58:00 -0500. + +2007-01-16 Akim Demaille + + * util/texi2dvi (insert_commands): Use fatal for errors. + (insert_commands): Actually, use "error", not "fatal". + White space changes. + +2007-01-16 Akim Demaille + + * util/texi2dvi (run_makeinfo): Instead of putting the whole + function in a "case", return if the language is not texinfo. + +2007-01-16 Akim Demaille + + * util/texi2dvi: White space changes. + +2007-01-08 Karl Berry + + * util/texinfo.dtd (rArr): define, per Per. + +2007-01-07 Karl Berry + + * makeinfo/cmds.c (cm_result): use rArr for html or docbook. + + * makeinfo/lang.c (encoding_table): include UTF-8, just passing + through everything as-is. + (asis_map): rename us_ascii_map (and change US-ASCII entry). + +2007-01-03 Karl Berry + + * makeinfo/xml.c (xml_id): oops, whitespace should be replaced + too. And probably more, but let's leave it at this for now. + +2007-01-02 Karl Berry + + * makeinfo/xml.c (xml_id): do not use the SGML rules for id's, + which were very restrictive (no 8-bit chars). Instead, just pass + along what we are given, more or less, per current XML. + +2006-12-30 Karl Berry + + * makeinfo/xml.c (xml_insert_element_with_attribute): remove the + warning again, the html-docdesc test triggers it for no apparent + reason, and I don't want to debug it now. + + * doc/texinfo.tex (\DeclareUnicodeCharacter, et al.): new macros + to support @documentencoding UTF-8 (as well as Computer Modern + can). From Werner Lemberg. + +2006-12-28 Karl Berry + + * makeinfo/xml.c (xml_insert_element_with_attribute): give a + warning if we need to ignore an insertion because the book hasn't + started. Can this ever happen with acceptable Texinfo documents? + I saw it in a document without @settitle but with @copying. + (xml_add_char): ensure that we have an element stack before + testing xml_current_element and failing the assertion. + (xml_pop_current_element): do not try to print the value of the + current element on underflow, there isn't one. + +2006-12-23 Karl Berry + + * doc/texinfo.tex (\xrdef, \xrefX, \pdfmkdest): sanitize the node + name, so accents (either 8-bit chars or cmds) can be used. + +2006-12-22 Karl Berry + + * doc/texinfo.tex (\setnormaldispenv, \setsmalldispenv): do + \endgraf before changing fonts, to get leading of previous + paragraph right when there is no blank line. + From John Gabriele, 21 Dec 2006 18:00:24. + +2006-12-11 Miloslav Trmac + + * configure.ac: Test wcwidth () availability. + * makeinfo/makeinfo.h (string_width, current_output_column): New + declarations. + (output_column): Remove. All users replaced by + current_output_column (), all modifications dropped. + * makeinfo/makeinfo.c (output_paragraph_start_column): New + variable. + (string_width, current_output_column): New functions. + (get_char_len): Remove. + (init_paragraph): Initialize output_paragraph_start_column. + (flush_output): Update output_paragraph_start_column. + + * makeinfo/cmds.c (cm_center) + * makeinfo/index.c (insert_index_output_line_no, cm_printindex): + * makeinfo/makeinfo.c (do_flush_right_indentation) + * makeinfo/multi.c (output_multitable_row): + Don't assume number of columns == number of bytes. + +2006-12-11 Miloslav Trmac + + * makeinfo/makeinfo.h (NON_BREAKING_SPACE): New macro. + (control_character_bit, meta_character_bit, CTL, UNCTL, META) + (UNMETA): Remove. + * makeinfo/makeinfo.c (add_char, flush_output): Use + NON_BREAKING_SPACE instead of META (' '). + (get_char_len): NON_BREAKING_SPACE is only one column wide. + +2006-12-05 Karl Berry + + * doc/texinfo.txi (@documentencoding): mention that it is + (somewhat) supported in TeX now. + +2006-12-05 Paulo Sequeira + + * doc/texinfo.tex (\documentencoding): real implementation. + (\setnonasciicharscatcode): new macro. + (\missingcharmsg): new macro. + (\latonechardefs, latninechardefs, \lattwochardefs): new macros. + +2006-11-24 Karl Berry + + * Makefile.am (po-check): new utility target from coreutils. + +2006-11-08 Karl Berry + + * doc/texinfo.tex (\dopdfimage): look for png, jpg/jpeg/JPG, and + as well as pdf images, since they are supported in pdftex with + no further ado. + * doc/texinfo.txi (Image Syntax): document it. + +2006-11-05 Karl Berry + + * doc/texinfo.tex (Image Syntax): don't mention GIF any more. + +2006-11-01 Miloslav Trmac + + * util/texindex.c (main): Remove off-line sort implementation. + (tempdir, tempbase, tempcount, last_deleted_tempcount) + keep_tempfiles): Remove variables. + (sort_offline, initbuffer, readline, merge_files, merge_direct) + (gettempname, maketempname, flush_tempfiles): + Remove functions. + (texindex_options): Remove --keep and --no-keep documentation. + (decode_command): Ignore --keep. + (writelines): Fix comment. + +2006-10-24 Karl Berry (tiny change) + + * util/texindex.c (readline): do the reallocation (more) correctly. + From Miloslav Trmac. + +2006-10-10 Karl Berry + + * TODO: would be nice if accent commands implicitly used + dotless i/j. + +2006-10-09 Miloslav Trmac (tiny change) + + * util/texindex.c (gettempname): new fn, split off from maketempname. + (maketempname): call it. We weren't deleting temp files. + (sort_offline): check result from maketempname. + +2006-10-06 Ralf Wildenhues + + * makeinfo/tests/quote-args: Add missing $srcdir. + +2006-10-04 Karl Berry + + * doc/texinfo.tex (\singlequotechar): rename to \codequoteright. + (\quoteexpand): rename to \rquoteexpand. + (\codequoteleft): new def, to look for @set codequotebacktick. + (\lquoteexpand, \quoteexpand): new defs. + (\lquoteChar, \rquoteChar, \dashChar, \underChar): new \chardef's. + (\code): must use new \...Char values, since now ` is active. + +2006-10-01 Karl Berry + + * util/texi2dvi (run_bibtex): also run bibtex if "no .aux file" in + the .log, and "\bibdata" in the aux, for the first run of a btxmac + file. Report from Oleg Katsitadze. + +2006-09-30 Karl Berry + + * doc/texinfo.txi (Inserting Braces): spurious ppp. + +2006-09-22 Stepan Kasal + + * configure.ac: Add a comment explaining `env -i PATH=$PATH'. + +2006-09-13 Karl Berry + + * doc/texinfo.txi (code): spurious "in the printed manual", from + Bob C. + +2006-09-01 Eli Zaretskii + + * doc/texinfo.txi (Multitable Rows): Document the Info output of + @headitem. + +2006-08-26 Karl Berry + + * makeinfo/cmds.c (command_table): new command @textdegree{}. + * makeinfo/lang.c (cm_special_char): handle textdegree. + * doc/texinfo.tex (\textdegree): define it. + + * doc/texinfo.txi (Output Formats): update Beebe paper reference. + (Printed Books): update texinfo.tex reference. + Report from VAN VLIERBERGHE Stef, 22 Aug 2006 22:05:27 +0200. + +2006-08-23 Karl Berry + + * doc/Makefile.am (man_rule_bin): use help2man -o, instead of + redirection, so that `missing' can infer the output filename. + +2006-08-13 Alexander E. Patrakov (tiny change) + + * info/man.c (get_manpage_contents), info/info.c (main): + Info apparently assumes equivalence of bytes and characters, + leading to (for example) translated man output in multibyte + locales being broken within a character. In lieu of a + real fix, if MB_CUR_MAX > 1, revert to C. bug-texinfo mail, + 07 Aug 2006 14:59:42 +0600. + +2006-08-12 Karl Berry + + * doc/texinfo.tex (error \box0): smaller font. + +2006-08-08 Karl Berry + + * doc/texinfo.txi (Invoking Macros): all commas inside macro calls + are quoted, it seems. From Patrice. + +2006-07-25 Karl Berry + + * configure.ac (AC_MINIX): remove, as it seems there is nowhere to + call it, and is it really necessary these days? + + * doc/info-stnd.texi (What is Info?): suggest the Emacs Info + reader for the nicest display. + +2006-07-16 Karl Berry + + * doc/texinfo.tex (\onepageout): hardwire a 24pt space before + \footlinebox, instead of 2\baselineskip. If the page break occurs + at a heading, for instance, \baselineskip might be larger, causing + the footer to jump. + (\oddfootingyyy): likewise (although doesn't really matter here). + Report from Werner Lemberg, 02 Jun 2006 07:44:36 +0200. + + * doc/texinfo.txi: use @copyright{} in @copying, not (C). + +2006-07-15 Karl Berry + + * doc/texinfo.tex (\code): make ' active. + (@lisp,@example): call \quoteexpand. + (\quoteexpand): new definition to make ' active. + (\singlequotechar): the active definition of '; if + the variable codequoteundirected is @set, use char"d from tt + instead of the regular directed quote. + This is all to make pasting of ' in examples work in more pdf + viewers, at least evince. + From: Han-Wen Nienhuys, 2 Jun 2006 01:22:44 +0000. + +2006-07-10 + + * makeinfo/html.c (insert_html_tag_with_attribute): Treat `samp' + special, to allow it to nest. + * makeinfo/cmds.c (cm_code): use insert_html_tag to add `samp' + instead of add_word, so that the roll-back of outer tags works + correctly. (This fixes @option inside of @emph causing badly + nested tags in the HTML output, see 8 Jun 2006 00:12:55 +0200 mail. + The general problem still remains.) + * makeinfo/tests/emph-option: New test. + * makeinfo/tests/emph-option.txi: New file. + * makeinfo/tests/Makefile.am: Adjust. + +2006-07-09 Karl Berry + + * doc/texinfo.txi (makeinfo Pointer Creation, Writing a Menu): + mention that accesskey is used in the HTML output. + +2006-07-09 + + * doc/texinfo.txi: Fix some typos. + +2006-07-04 Sergey Poznyakoff + + * makeinfo/macro.c (add_macro): Initialize def->argcount + (get_brace_args): Change argument type to enum quote_type. + (All callers updated.) Implement default argument quoting. + (expand_macro): Use def->argcount to control the number of passed + arguments. + (define_macro): Issue a warning if @allow-recursion or @quote-arg + is used. + * makeinfo/macro.h (MACRO_DEF): New member argcount + (enum quote_type): New data type. + (get_brace_args): Change argument type to enum quote_type + (ME_QUOTE_ARG): Remove the macro + * makeinfo/makeinfo.c (cm_ifeq): Update call to get_brace_args + * makeinfo/tests/Makefile.am (TESTS): New test quote-args + (EXTRA_DIST): New file quote-args.txi + * makeinfo/tests/quote-args: New test + * makeinfo/tests/quote-args.txi: New file + * doc/texinfo.txi: Document automatic argument quoting + +2006-07-03 Sergey Poznyakoff + + * doc/txi-pl.tex: Do not use \prefixing and \notprefixing. They + were defined in PLaTeX, but are no longer global. Use ISO-8859-1 + instead. + +2006-06-27 Akim Demaille + + * util/defs.in ($latex_paragraph): New. + * util/latex2html.test (input.tex): Make it big enough to trigger + the info file splitting. + * util/texi2dvi (move_to_dest): Accept several arguments. + (run_hevea): Use it to move the whole family. + +2006-06-27 Akim Demaille + + Fix the clean invocations to hevea. + Note that this breaks document using images (to be fixed). + * util/latex2html.test (run_hevea_check): Extend to support + various build modes. + Test them. + Force the creation of aux files (something the previous test + failed to do...). + * util/defs.in (title): New. + * util/texi2dvi: Fix incorrect "error" invocations. + (run_hevea): Don't pass -o to hevea. + Move the result to the expected destination. + Don't pass -noiso. + +2006-06-26 Akim Demaille + + * util/texi2dvi (generated_files_get): Call uniq. + +2006-06-07 + + * Makefile.am (AUTOMAKE_OPTIONS): Require Automake 1.9, since + non-direct subdirs in SUBDIRS (gnulib/lib) is a 1.9 feature. + +2006-06-24 Karl Berry + + * doc/texinfo.txi (anchor): pxref Node Line Requirements since the + same name restrictions apply. Suggested by Eli. + +2006-06-21 Akim Demaille + + * util/texi2dvi (fatal): Rename as... + (error): this. + If the exit status is 0, don't exit. + (run): New. + Use it where appropriate. + (run_dvipdf): New. + Use it. + +2006-06-21 Akim Demaille + + * util/Makefile.am, info/Makefile.am, makeinfo/Makefile.am, + * lib/Makefile.am (DEFS): Remove, included in... + (AM_CPPFLAGS): this. + Add -I $(top_srcdir) to find system.h. + +2006-06-19 Karl Berry + + * system.h: move to top level. + * */Makefile.am (AM_CPPFLAGS): no longer need -I$(top_srcdir)/lib. + + * makeinfo/makeinfo.c (getdocumenttext): replace with a modified + version of get_title from gettext, as suggested by Bruno Haible, + back on 2 Dec 2003. + * gnulib: import xsetenv module. + + * doc/texinfo.tex (\indexdotfill): back to regular (non-italic) + periods, suggested by Werner Lemberg and others. + +2006-06-19 Akim Demaille + + Support dvips and dvipdf for sake of pstricks, and to + spare the use tweaking TEXINPUTS. + * util/defs.in (optionset_get, assert_and_remove_files): New. + * util/texi2dvi (out_lang_tex, out_lang_ext): New. + Use them. + ($language): Rename as... + ($in_lang): this for consistency. + Support --dvipdf and --ps. + Not documented yet. + * util/dvipdf.test: New. + * util/Makefile.am (TESTS): Adjust. + * util/texi2dvi.tests (one_run): New. + +2006-06-18 Karl Berry + + * gnulib: new subdirectory, managed by gnulib-tool. + * m4: delete entire subdirectory, now replaced by gnulib/m4. + * build-aux: new subdirectory. + * README.dev: doc. + * autogen.sh: aclocal needs -I gnulib/m4 now. + * Makefile.am, util/Makefile.am, lib/Makefile.am, info/Makefile.am, + makeinfo/Makefile.am (AM_CPPFLAGS, LDADD): use new gnulib dirs. + * lib/alloca.c, lib/getopt*, lib/gettext.h, lib/mem*, lib/str*, + etc.: delete, now using gnulib modules (as recorded in + gnulib/m4/gnulib-cache.m4) + +2006-06-08 Karl Berry + + * po/Makevars (XGETTEXT_OPTIONS): add --keyword=__, so that the + gettext will mark the new __ strings (2006-05-29 change from + Norbert) for translation again. + +2006-06-07 + + * makeinfo/footnote.c (output_pending_notes): Use + add_html_block_elt instead of add_word for final part of + footnote, so no extra

is output. + +2006-06-05 Akim Demaille + + * util/bibtex.test: Add it for real. + +2006-06-03 Karl Berry + + * util/texi2dvi: always report tex command being used. + +2006-06-02 Karl Berry + + * util/texi2dvi (--src-specials): new option, + requested by Charlie Zender. + +2006-06-01 Karl Berry + + * doc/texinfo.tex (\thischapternum): new macro for + headings/footings, requested by Werner. + * NEWS, doc/texinfo.txi (Command List, Custom Headings): document it. + +2006-06-01 Sergey Poznyakoff + + * makeinfo/html.c (html_output_head): Insert external CSS + reference if css_ref is set. + (fix_filename): Attempt to transliterate the name before falling + back to numeric symbol representation. + * makeinfo/lang.c (iso8859_2_map): Add transliterations + (koi8_map): New map for koi8-u and koi8-r encodings. + (encoding_table): Add koi8-u and koi8-r + (cm_search_iso_map_char,lang_transliterate_char): New functions. + * makeinfo/lang.h (encoding_code_type): Add KOI8_R, KOI8_U + (struct iso_map_type): New member `translit'. + (lang_transliterate_char): New function prototype. + * makeinfo/makeinfo.c: New options --css-ref and + --transliterate-file-names. + * makeinfo/makeinfo.h (css_ref, transliterate_file_names): New + variables. + (URL_SAFE_CHAR): Bugfix: Make sure argument is in isalnum() domain. + + * doc/texinfo.txi: Document new options. + +2006-05-30 + + * configure.ac (sigblock): Fix underquoted macro usage. + +2006-05-30 Akim Demaille + + * util/texi2dvi (aux_file_p): Rename the second occurrence as... + (bibaux_file_p): this. + (run_bibtex): Use it. + (options processing, $usage): Support --dvi for symmetry and to + ease systematic tests. + * util/bibtex.test: New. + +2006-05-30 Akim Demaille + + * util/texi2dvi: Add support for latex to text and info using + hevea. + Don't document it yet, as it's preliminary and on some regards + incomplete. It is usable though. + (IFS): Use a more robust definition, taken from Autoconf. + (bibaux_file_p): New, extracted from... + (run_html): Generalize and rename as... + (run_hevea): this. + (run_core_conversion): Adjust. + (option processing): Accept --text and --info. + * configure.ac: Check for TEX and HEVEA. + * util/defs.in: No longer create a texi file by default. + Handle hevea requests. + (create_input_tex, create_input_texi): New. + (assert_files, list_files): Rework to use diff instead of test. + And sort both lists of files before comparing them. + * util/latex2html.test: New. + * util/Makefile.am (TESTS): Update. + +2006-05-29 Karl Berry + + * makeinfo/makeinfo.h (getdocumenttext, __): new definitions for + strings translated according to the document language, instead of + the interface language. + * makeinfo/makeinfo.c (getdocumenttext): new fn. + (usage): new option --document-language to specify. + * makeinfo/lang.h (document_language): new declaration. + * makeinfo/lang.c (document_language): define. + * makeinfo/defun.c, makeinfo/html.c, makeinfo/node.c, + makeinfo/toc.c, makeinfo/xref.c: use __ instead of _ for document + strings. + * doc/texinfo.txi (makeinfo options): minimal documentation. + From Norbert Preining, 10 Mar 2006 02:22:19 +0100. + Debian bugs 113988 and 355367. + +2006-05-28 Karl Berry + + * doc/texinfo.tex (\indexdummies): \let\endinput=\empty, to + avoid premature end of processing when an index entry is generated + from a macro. + Report from Graham Percival to help-texinfo, 22 May 2006 12:03:12. + + * doc/texinfo.tex (\dots): use width of three period characters if + that is wider than 1.5em. Report from Steve Peter. + + * system.h [__CYGWIN__] (NULL_DEVICE): define as /dev/null. + From Ralf W. + +2006-05-27 Karl Berry + + * texi2dvi (IFS): initialize, since otherwise when we save/restore + it may end up being set-but-empty, which may disable splitting. + Report from Ralf W. + +2006-05-20 Karl Berry + + * util/texi2dvi (run_makeinfo): use $TEX instead of hardwiring + tex, to maybe avoid running into some + misconfigured TeX installations, resulting in + ---! /var/lib/texmf/web2c/etex.fmt was written by pdfetex + (Fatal format file error; I'm stymied) + Original report from Ralf Wildenhues, 12 May 2006 11:19:13 +0200. + +2006-05-18 Ralf Wildenhues + + * util/gendocs.sh: quoting, url fixes. + +2006-05-08 Karl Berry + + * autogen.sh: new name for bootstrap, and improve msg. From Bruno + via hello. + +2006-05-07 Karl Berry + + * doc/texinfo.tex (\dopdfimage): width and height args might have + whitespace. Report from Bob Chassell. + +2006-05-05 Karl Berry + + * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): new cmds. + (\fonttextsize): new user-level command @fonttextsize to change + text font size. (To be used for the next Emacs edition.) + * makeinfo/cmds.c (cm_fonttextsize): new fn. + (command_table): include it. + * NEWS, doc/texinfo.txi (Fonts): document it. + +2006-05-04 Karl Berry + + * doc/texinfo.txi (Reporting Bugs): wording to match hello. + +2006-04-26 Karl Berry + + * doc/Makefile.am (TXI_XLATE): add txi-ru.tex and txi-uk.tex, + from Sergey Poznyakoff. + * doc/txi-ru.tex, doc/txi-uk.tex: new files. + +2006-04-13 Karl Berry + + * makeinfo/insertion.c (end_insertion): kill_self_indent(-1) to + remove all indentation. From Brian Gough, 11 Apr 2006 16:42:29 +0100. + +2006-04-11 Karl Berry + + * doc/texinfo.txi (GNU Sample Texts): GFDL is version 1.2 now. + Report from Claudio. + +2006-03-28 Karl Berry + + * doc/texinfo.txi (HTML Xref Command Expansion): use U+2605 for + @point{} and U+22A3 for @print{}. From Patrice. + +2006-03-25 Karl Berry + + * doc/texinfo.txi (copying): warn not to indent lines within the + @copying. + +2006-03-24 Karl Berry + + * makeinfo/html.c (escape_string): do not free the old string, + that is dangerous, only the caller should do it. + (add_link): escape the title string. + Report from Ralf Wildenhues, 17 Mar 2006 05:08:11 +0100. + +2006-03-21 Stepan Kasal + + * doc/texinfo.tex (\parseargusing, \finishparsearg): Use \argtorun + instead of \next. + (\argcheckspacesY): Change the wording of the comment about \next. + (\braceorline, \braceorlinexxx): Do not suppose that \next is + preserved during the run of \parsearg, anyway. + +2006-03-14 Karl Berry + + * doc/texinfo.txi (section, subsection, unnumberedsubsec, + subsubsection): make it clear that @section can be used within + any chapter unit. + Report from: Hynek Hanke, 11 Mar 2006 20:44:34 +0100. + + * doc/texinfo.tex (\imagexxx): do not center the image by default. + The manual says we don't do that, and Lilypond needs + left-justification. + From: Han-Wen Nienhuys, 9 Mar 2006 21:08:26 +0000. + +2006-03-13 Miloslav Trmac (tiny changes) + + * info/Makefile.am (infokey_LDADD): don't link with curses. + + * makeinfo/sectioning.c: cast arguments to substring, to placate + current gcc. + +2006-03-13 Karl Berry + + * util/texi2dvi: reindent --help message. + +2006-03-07 Karl Berry + + * doc/texinfo.txi (Writing a Node): show example of specifying + some pointers but not others. + +2006-02-28 Akim Demaille + + Be robust to spaces in directory names. + * util/texi2dvi (absolute): Be robust to non directories. + (run_tex): Quote in_input properly. + (compile): Quote args of eval properly. + +2006-02-25 Karl Berry + + * info/nodes.c (info_get_node_of_file_buffer): try to avoid + running man Top, which returns the top(1) man page on Debian. + +2006-02-14 Sergey Poznyakoff + + * util/texi2dvi: New options --translate-file and --recode-from. + +2006-02-13 Karl Berry + + * makeinfo/cmds.c (cm_enddots): output three dots, not four, for + consistency with texinfo.tex. + + * doc/texinfo.tex (\doignore): move \obeylines here. + (\dodoignore): from here. (just putting catcode changes together.) + (\doignoretextyyy): revert to previous code, no ##2^^M; + that caused blank lines in verbatim envs inside failing conditionals. + (\enddoignore): ignore any text after the @end #1 here, instead. + Bug report from Bob Wilson, 5 Oct 2005 21:22:33 -0700, + amended fix from Stepan, 13 Feb 2006 21:57:07 +0100. + + * info/nodes.c (info_get_node): don't try man Top and man top and + man TOP. Debian bug 234848. + +2006-02-11 Karl Berry + + * makeinfo/makeinfo.c (write_trailer): new fn. + (convert_from_loaded_file) : call it *after* the + tag table has been written, else Emacs likely won't seeit. + Report from: Juri Linkov, 11 Feb 2006 03:11:33 +0200. + +2006-02-10 Karl Berry + + * util/texinfo.dtd (menucomment): more inclusive. + (enumerate): allow indexes. + From Torsten. + +2006-02-06 Karl Berry + + * util/texinfo.dtd: apparently we cannot have -- in an XML + comment. Kludge. + +2006-02-05 Karl Berry + + * util/texi2dvi (run_makeinfo): eval $makeinfo, for gettext + 0.14.5's complex $MAKEINFO definition. + +2006-01-30 Karl Berry + + * util/texinfo.dtd: many additions and fixes from + Torsten Bronger. + +2006-01-27 Karl Berry + + * doc/texinfo.tex (\sectionheading): \nobreak before the \vbox + with the heading. + Report from: Norbert Preining, 2 Nov 2005 10:07:57 +0100, + Debian bug 276000. + +2006-01-25 Karl Berry + + * makeinfo/lang.c (cm_accent_generic_no_headers): do nothing + if end == 0 (accent command in @menu with --no-headers). + Report from Akim Demaille, 23 Jan 2006 16:41:38 +0100. + +2006-01-18 Karl Berry + + * doc/texinfo.txi (key): more examples. + +2006-01-18 Akim Demaille + + Sometimes the temporary directory remains. + Reported by Wybo Dekker. + * util/defs.in (assert_files): New. + * util/texi2dvi.test: Use it. + Extend to check the local builds. + * util/texi2dvi (aux_file_p, index_file_p, xref_file_p): Check + that the file exists. + (generated_files_get): Simplify according to these changes. + (remove, cleanup): New. + Use the latter in the cleaning trap. + (mostly_clean): Use them. + +2006-01-17 Akim Demaille + + * util/texi2dvi (generated_files_get): Skip nonexistent files + earlier. + +2006-01-15 Karl Berry + + * info/infodoc.c (info_internal_help_text): combine messages + which are single sentences into one string. + Report from Clytie Siddall, via + http://sourceforge.net/tracker/index.php?func=detail&aid=1406541&group_id=40033&atid=426818. + + * po/POTFILES.in: add missing makeinfo/xref.c, makeinfo/float.c. + Report from Torsten. + +2006-01-09 Akim Demaille + + * util/texi2dvi: set -e. + Stop using the idiom "test && action" in favor of "if test; then + action; fi". + (xref_files_save): Use tar instead of cp. + (run_makeinfo): Fix a "local" use. + +2006-01-08 Loic Minier (tiny change) + + * info/display.c (display_update_one_window): systematize + check as to whether `entry' is non-null before referring to it. + Still some segfaults when resizing the window rapidly. + +2006-01-08 Karl Berry + + * doc/texinfo.tex (\normalturnoffactive): restore setting of + active \ to \normalbackslash. + (\onepageout): restore call to \normalturnoffactive. + Otherwise, if a page break happens at the wrong time, the active + \ will result in writing an actual \ character, + instead of {\tt \backslashcurfont }. + Report from Kurt.Hornik@wu-wien.ac.at, 6 Jan 2006 14:38:38 +0100. + [test idxback-exts] + +2005-12-26 Karl Berry + + * doc/texinfo.txi (node, Node Names): pxref Node Line Requirements, + about restrictions on characters in node names. + +2005-12-25 Karl Berry + + * doc/texinfo.tex (\pdfurl): make @/ a no-op. + Report from Kurt Hornik, 23 Dec 2005 13:17:56 +0100. + + * util/texi2dvi (no_file_line_error): new control, + with option --no-line-error to set it. Wybo Dekker's mk program + wants to parse TeX's original error messages. + (run_tex): obey it. + +2005-12-22 Akim Demaille + + Implement --mostly-clean, improve the detection of aux files. + * util/texi2dvi ($action): New. + (--mostly-clean): New. + (cd_orig): New. + (generated_files_get, aux_file_p, index_file_p, xref_files_p): + New. + (get_index_files): Remove, replaced by the previous functions. + (get_xref_files): Rename as... + (xref_files_get): this. + (run_index): Use generated_files_get. + (clean): Rename as... + (mostly_clean): this. + Strengthen. + ($t2ddir): Try to have a `local' absolute file name, not a fully + absolute one to avoid very very long file names. + * util/texi2dvi.test: Exercise --mostly-clean. + +2005-12-20 Karl Berry + + * doc/texinfo.txi (key): DELETE, not DEL, per rms. + +2005-12-19 Akim Demaille + + * util/texi2dvi (run_conversion): Rename as... + (run_core_conversion): this. + (compile): New. + This is the former main program. + (clean): New. + Use it. + (language): Compute it in the main loop. + +2005-11-18 Akim Demaille + + Factor the handling of list of directories. + * util/texi2dvi (list_append, list_prefix, list_infix) + (list_dir_to_abs, absolute): New. + Use them. + ($miincludes, $txincludes): Remove, replaced by... + ($includes): this one. + (func_dirname): Don't use fd6 that might not be set up yet. + (run_to_html): Use $includes. + +2005-11-13 Karl Berry + + * doc/texinfo.txi (Top Node Example): missing @end iffnottex. + (The Top Node): @end ifnottex, not ifnottext. + From Steve Peter. + +2005-11-10 Akim Demaille + + Make the naming conventions more consistent and shorter. + * util/texi2dvi (oformat): Rename as... + (out_lang): this. + (filename_input, filename_src, filename_xtr, filename_rcd, + filename_noext, filename_dir, filename_dir_abs): Rename as... + (in_input, in_src, in_xtr, in_rcd, in_noext, in_dir, in_dir_abs) + this. + (in_base, out_name, out_dir, out_dir_abs, out_base, out_noext): New. + (output_base_name): New. + (move_to_dest): Use it. + (run_tex): Catch invalid calls. + Be robust to inclusion in subdirs. + (run_bibtex): Simplify when this is not a LaTeX file. + (run_tex_suite): cycle is local. + (input_file_name_decode): New, extracted from the main loop. + Some variables are now local. + + Use the output file name as root for the t2d directory name. + * util/texi2dvi (t2ddir): Use $out_noext, no $in_noext. + * util/texi2dvi.test: Adjust. + + Be robust to inclusion in subdirs. + * util/texi2dvi (run_tex): Look for \include of files in subdirs. + (run_bibtex): Citations might be in another aux file. + + Support html. + * util/texi2dvi (run_to_html): New. + (run_conversion): New, extracted from the main loop. + Support --html. + + +2005-11-10 Karl Berry + + * doc/texinfo.txi (Def Cmd Template): mismatched example and output. + Report from: Steve Peter, 09 Nov 2005 12:46:02 -0500. + +2005-10-23 Karl Berry + + * util/texi2dvi (insert_commands): missing $ in case statement; + from report by Simon Josefsson. + +2005-10-09 Karl Berry + + * doc/texinfo.tex (\doignoretext): ignore characters after + ignored conditionals, e.g., @end ifset. Otherwise the newline + following results in a blank line being output in verbatim + environments. + From: Bob Wilson, 5 Oct 2005 21:22:33 -0700. + +2005-10-05 Akim Demaille + + * util/texi2dvi.test: Make sure --build=clean passes. + * util/texi2dvi: Fix the handling of --build. + +2005-10-05 Karl Berry + + * util/texindex.c (maketempname): use mode 0600. + +2005-10-02 Karl Berry + + * util/texindex.c (maketempname): avoid race condition. + (concat): now take three args, so rename to concat3. + Debian bug 328365. + +2005-09-30 Karl Berry + + * configure.ac: reenable utils/defs generation, now that we have + the files below. + +2005-09-29 Akim Demaille + + * doc/texinfo.txi: Document pdftexi2dvi. + * doc/Makefile.am (common_texi2dvi_deps): New. + Handle texi2pdf and pdftexi2dvi. + * util/texi2dvi: Stop supporting shortened long options, as it's + causing troubles. Short options are here anyway. + (local): Provide a default implementation if not supported by the + shell. + (findprog): Use return. + (get_xref_files): Rename as... + (xref_files_get): this. + (xref_files_changed, xref_files_save): New. + (run_tex_suite): New. + (move_to_dest): Use `local'. + ($textra_cmd): Compute it in... + (insert_commands): here. + + * tests/defs.in, tests/texi2dvi.test, tests/local.test: New. + * configure.ac, tests/Makefile.am: Adjust. + +2005-09-22 Akim Demaille + + * util/texi2dvi ($build_dir): New. + (--build-dir): New. + ($usage): Adjust. + ($line_error): New. + AUC-TeX wants regular TeX error messages, so don't require + GNU style error message when under AUC-TeX. + ($filename_dir_abs): New. + ($t2ddir): When the build-dir is specified, make sure to avoid + collisions between files with equal names, but in different + directories. + ($command_line_filename): Decode possible TeX commands. + * util/Makefile.am (pdftexi2dvi): New. + +2005-09-20 Akim Demaille + + * util/texi2dvi: Be sure to return to the current directory even + after obeying --clean. + +2005-09-17 Sergey Poznyakoff (tiny change) + + * makeinfo/cmds.c (handle_include): don't expand @verbatiminclude, + so that texi2dvi will pass it through to texinfo.tex. Otherwise + the dvi/pdf output is wrong. + +2005-09-05 Stepan Kasal + + * doc/texinfo.tex: Fix typo in a comment. + +2005-09-05 Karl Berry (tiny change) + + * util/texi2dvi: look for btxmac.tex's "Undefined citation" message. + Then texi2dvi works with (e)plain, too, by setting LATEX=tex. + Report from Oleg Katsitadze. + +2005-08-31 Akim Demaille + + * util/texi2dvi: Fix white space issues. + Quote uses of directory and file names. + Don't expect "export var=val" to work (e.g., SunOS 5.9): do it in + two steps. + ($tex_help): Compute it where needed (run_tex), in particular so + that $tex is defined when used. + (func_dirname): New. + ($quiet, $verb): Now regular true/false variables. + (verbose): Adjust. + (run_tex): When we introduced white space by making absolute file + names, circumvent TeX's phobia of space in file names by + introducing a symbolic link. + (filename_dir): Keep it relative when not $tidy. + +2005-08-30 Karl Berry + + * makeinfo/xref.c (cm_xref): if the following wrong char is ), + suggest @pxref. Suggested by Kevin Ryde, 30 Aug 2005 09:23:39 +1000. + +2005-08-17 Predrag Rakic + + * doc/txi-sr.tex: Serbian translation. + +2005-08-15 Stepan Kasal + + * doc/texinfo.tex (\normalturnoffactive): Now contains the body of + \turnoffactive. Don't explicitly restore the original value of active \ + ---just let it be. + (\turnoffactive): Can now be redefined as \normalturnoffactive + \otherbackslash. + (\atdummies): All calls were followed by \turnoffactive; remove that + and add \otherbackslash to the definition, since it already calls + \normalturnoffactive indirectly. + (\xrefX): One of the calls of \refx missed the second parameter; + fix that. + (\commondummiesnofonts): No need to make ~ other for the definition; + it contains only \~ now. + (\backChar, \plusChar, \underChar): Nuke. + (\colonChar, \commaChar, \dotChar, \exclamChar, \questChar, \semiChar): + Move just before the definition of ... + (\plainfrenchspacing): ... since it's the only place where it's used. + (\activebackslash): Remove both definitions; the first one was shadowed + by the second one; and the second one can easily be eliminated; it + was used only on one place. + (\backslashlparen): No need for this; \realbackslash( is enough. + (\backslashrparen): Likewise. + +2005-08-14 Per Bothner + + * makeinfo/index.c (cm_printindex): Don't defer index if docbook, + since we don't need it and it prevents output to a pipe. + + * makeinfo/insertion.h (default_item_function): New declaration. + * makeinfo/insertion.c (default_item_function): New variable. + (begin_insertion): Use default_item_function for @bullet default. + (pop_insertion): Check if item_function is default_item_function. + * makeinfo/xml.c (xml_begin_table): Don't emit mark attribute + if the item_function was implied. + +2005-08-13 Karl Berry + + * doc/texinfo.tex (\writetocentry, ...): restore calls to + \turnoffactive after \atdummies removed in the July 1 change (v.194). + \turnoffactive and \normalturnoffactive are not the same -- we need + actual backslash characters in the pdf destinations and .aux and + index files, not expansions. (I'm not sure we ever need + \normalturnoffactive, actually.) + +2005-08-12 Karl Berry + + * doc/info.texi: merge changes from Emacs, by Juri. + +2005-08-06 Per Bothner + + * makeinfo/index.c (cm_printindex): Don't xml_insert_indexentry if + docbook, since we'll let the doxbook processor generate the index. + * makeinfo/xml.h (xml_sort_index, xml_insert_indexentry): Remove. + * makeinfo/xml.c (xml_begin_index): Don't actually do any formatting. + (xml_end_index): Don't do anything except close . + (xml_insert_indexentry): Remove no-longer-used function. + + * makeinfo/xml.c (element docbook_element_list): The docbook + element should *not* be contained_in_para. + + * makeinfo/xml.c (xml_begin_document): Add id attribute to top-level + book if emitting docbook. + +2005-08-05 Stepan Kasal + + * configure.ac: (auto)update. + * info/Makefile.am, makeinfo/Makefile.am, utils/Makefile.am: s/INCLUDES/AM_CPPFLAGS/ + * lib/Makefile.am (INCLUDES): Remove. + +2005-08-05 Stepan Kasal + + * doc/texinfo.tex (\Efloat): Revert the previous change, ... + (\commondummiesnofonts): ... instead, add the three commands here. + +2005-08-04 Karl Berry + + * doc/texinfo.tex (\Efloat): make \xref, \pxref, \ref no-ops. + Report from: Aaron S. Hawley, 3 Aug 2005 19:46:40 -0400. + (But what about all the other commands, don't we need to no-op + everything?) + +2005-07-31 Per Bothner + + * makeinfo/cmds.c (cm_code): For html output use lsquo and rsquot + entities around @samp. + +2005-07-10 Stepan Kasal + + * doc/texinfo.tex (\texinfoversion): Update. + +2005-07-05 Karl Berry + + * doc/texinfo.txi (verbatim): mention @verbatim inside + @smallformat, now that it works. + +2005-07-04 Stepan Kasal + + * doc/texinfo.tex (\commondummies): Remove \unsepspaces, it's already + called by \normalturnoffactive. Move \normalturnoffactive near the + end of the macro. + +2005-07-01 Stepan Kasal + + * doc/texinfo.tex: Remove all occurences of \normalturnoffactive or + \turnoffactive attached to \indexdummies or \atdummies, since they + are redundant; \indexdummies and \atdummies both call \commondummies, + which calls \normalturnoffactive, which calls \turnoffactive. + (\indexdummies, \atdummies): Move the definitions of \definedummy* ... + (\commondummies): ... here; they now take a control sequence as their + parameter; all callers fixed. + (\indexnofonts): Fixed the definitions of \definedummy* macros. + (\indexdummies): Define \escapechar = `\\ ... + (\onepageout): ... thus remove it from here. + (\macrolist): Now has the form of \definedummyword\macro1... It also + gathers user-defined aliases, so there is ... + (\addtomacrolist): ... a new macro ... + (\macroxxx, \aliasyyy): ... caled from these two. + (\unmacro, \unmacrodo): Adapted to the new form of \macrolist. + (\turnoffmacros, \emptyusermacros): Removed, mere \macrolist is enough + now. + +2005-07-01 Stepan Kasal + + * doc/texinfo.tex (\nonarrowing): Update the description. + (\cartouche): Set \nonarrowing to "t", not \comment. + (\nonfillstart, \quotation): Reset \nonarrowing. + +2005-06-30 Stepan Kasal + + * doc/texinfo.tex (\setupverbatim): Use \nonarrowing to declare that + we don't want to narrow the environment. + +2005-06-24 Akim Demaille + + * util/texi2dvi: Move the computation of $makeinfo to... + (run_makeinfo): here. + + * util/texi2dvi (tex, bibtex, texindex): Move their computation to... + (run_tex, run_bibtex, run_texindex): here, to clarify. + (move_to_dest): New. + (run_tex): Use it to copy the result back. + Don't bother exporting the log. + +2005-06-10 Karl Berry + + * doc/texinfo.tex (\., \!, \?): include \space after setting + \spacefactor, else all space disappears. + Report from Jim Meyering, 09 Jun 2005 23:03:22 +0200. + +2005-06-10 Akim Demaille + + * util/texi2dvi (run_tex): Updating the output is also needed when + -o is used, not just when $tidy. + +2005-06-09 Akim Demaille + + * util/texi2dvi: Support --tidy, a new build mode which lets all the + compilations happen in a local directory. This is + similar to using --clean, but the files are preserved. The + benefits are: + - the output is updated when each tex compilation is completed: + - to allow interactive viewing + - to preserve the previous output is the compilation fails + - if the compilation fails, the previous state is preserved. + - a fixed set of files to clean in this end (this directory) + - complete independence between DVI and PDF compilations. + + (comment_iftex_sed, uncomment_iftex_sed): No + longer external files, but simple strings named... + (comment_iftex, uncomment_iftex): like this. + (utildir): Remove. + + Make the structure clearer by introducing auxiliary functions. + * util/texi2dvi (run_bibtex, run_index, insert_commands) + (run_recode, run_thumpdf): New. + Extracted from the main loop. + + Simplify some variable handling. + * util/texi2dvi (clean, debug): Now true/false Booleans. + Adjust dependencies. + + Introduce a cycle counter. + * util/texi2dvi (cycle): New, to inform the user about the number + of compilation cycles. That's also a nice tool to help debugging: + look for "cycle" in the trace to go from cycle to cycle. + + Introduce the work dir, and use it. + * util/texi2dvi (ensure_dir, workdir): New. + (tmpdir_src, tmpdir_xtr, tmpdir_rcd, tmpdir_bak): Replace with... + (work_src, work_xtr, work_rcd, work_bak): these. + Adjust dependencies. + (filename_src, filename_xtr, filename_rcd, filename_bak): these. + (run_tex): Update the output. + Remove this task from the core of the loop. + (get_xref_files): Simplify by considering all the files around, + instead of try to select only those that correspond to a given + pattern. + Also, there's no reason to build the string result and then echo + it, just directly echo all the components. + (get_index_files): New. + (build_mode): New. + Adjust all dependencies (tex_help, command line parsing, clean, + tidy). + +2005-06-05 Karl Berry (tiny change) + + * doc/texinfo.txi: typos from Christian von Schultz, + 5 Jun 2005 16:45:48 +0200. + +2005-06-03 Karl Berry + + * info/man.c (get_manpage_contents): pass -a to man if no explicit + section is found. Suggestion from lacall@micron.com on + help-texinfo, 1 Jun 2005 16:44:20 -0600. + +2005-05-28 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.5. + +2005-05-25 Stepan Kasal + + * util/texi2dvi (findprog): Rewrite the test for an executable + again, per suggestion of Eric Blake. Restore IFS earlier. + +2005-05-24 Stepan Kasal + + * util/texi2dvi (findprog): Rewrite the test for an executable and + the explanation above it. + +2005-05-20 Karl Berry + + * doc/texinfo.texi (\allowcodebreaks, \kbdinputstyle): use \txiarg + instead of \arg; \arg already has a meaning in plain TeX (the + complex math function "arg"). + Report from: Brian Gough, 19 May 2005 19:48:57 +0100. + +2005-05-19 Stepan Kasal + + * configure.ac (AM_GNU_GETTEXT): The comment should not recommend + calling gettextize with --intl. + +2005-05-13 Karl Berry + + * doc/texinfo.txi (First Node): ok for (dir) to be the prev node, + and fix missing example. + From from Christian von Schultz, 13 May 2005 10:37:26 +0200. + +2005-05-10 Matthias Kilian + + * makeinfo/cmds.c, makeinfo/defun.c, makeinfo/insertion.c, + makeinfo/lang.c, makeinfo/macro.c, makeinfo/multi.c, + makeinfo/node.c, makeinfo/xml.c: More bounds checking. + +2005-05-09 Andreas Vögele (tiny change) + + * makeinfo/multi.c (output_multitable_row): don't look past + beginning of cell memory. bug-texinfo mail, + 1 May 2005 10:00:33 +0200. + +2005-05-09 Christian von Schultz (tiny change) + + * doc/texinfo.txi (Emacs chapter): wrong key bindings for + narrow-to-page, up-list, and texinfo-insert-braces. + bug-texinfo mail, 9 May 2005 10:01:06 +0200. + +2005-04-29 Karl Berry + + * doc/texinfo.txi: remove ls(1) and rcsintro(1) references at rms' + request. No (n) in GNU. + +2005-04-24 Karl Berry + + * configure.ac (AM_GNU_GETTEXT): switch to [external], since this + seems the most popular method nowadays. + (AC_CONFIG_FILES): remove intl/Makefile, also m4/Makefile. + * Makefile.am (SUBDIRS): remove intl and m4. + * intl/*: remove. + * m4/Makefile.am: no longer needed. + * lib/system.h (locale.h): unconditionally include, else syntax + error from system locale.h. + + * gettext 0.14.4. + +2005-04-22 Per Bothner + + * makeinfo/xml.c (docbook_element_list): Map EMAILADDARESS to "email". + * makeinfo/xref.c (cm_email): For docbook, if there is no name, + use tag, rather than . If there is a name, we must use + , but we need to explicitly escape expansion of addr. + +2005-04-22 Per Bothner + + * makeinfo/xml.c (docbook_element_list, xml_begin_defterm): Improved + docbook translation of definition commands: Use for the + summary line, and don't include it (only the body) in a

. + Wrap the whole definition in an . + +2005-04-21 Karl Berry + + * util/texi2dvi: also accept .drv and .dtx as LaTeX. + Suggestion from Wybo Dekker. + +2005-04-18 Karl Berry + + * doc/texinfo.tex (\smallerbook): new (test) definition for 6x9, + which is what lulu.com (print-on-demand) accepts. + +2005-04-05 Matthias Kilian (tiny changes) + + * makeinfo/html.c (rollback_empty_tag): be sure to avoid negative + array indexing. + * makeinfo/multi.c (env): make static. + * makeinfo/tests/cond, html-extrali, include-value: use grep -c, + instead of piping to wc -l, since that avoids the output files + being treated as binary on BSD. + +2005-04-04 Stepan Kasal + + * makeinfo/makeinfo.c (usage): Add indentation to the examples and + fix the indentation of the --footnote-style option, so that + help2man can recognize these; also some cosmetic indentation fixes. + * doc/Makefile.am (makeinfo.1): Add a sed command to postprocess + the generated manpage. + * doc/makefile.1: Refresh. + Thanks to Jim Razmus for the bug report. + +2005-04-04 Torsten Bronger (tiny changes) + + * doc/texinfo.txi: Fix several typos. + +2005-04-04 Stepan Kasal + + * doc/Makefile.am: Fix my previous patch, so that the rules work; and + don't modify $PATH, it's simpler to give help2man the full pathname. + +2005-03-31 Per Bothner + + * makeinfo/makeinfo.c (maybe_escaped_expansion): Don't start a new + para during string expansion. + + * makeinfo/xml.c (xml_element_dummy): Dummy variable so that enum + names get emitted in debug symbols, which helps debugging. + +2005-03-31 ezra peisach (tiny change) + + (bug-texinfo mail 30 Mar 2005 16:40:24 -0500.) + * defun.h (get_base_type): now takes an enum insertion_type. + defun.c (get_base_type): use enum instead of int internally. + (defun_internal): takes enum insertion_type instead of int and use + enum internally. + (cm_defun): ditto. + * insertion.c (do_enumeration, end_insertion, cm_end): ditto. + +2005-03-27 Karl Berry + + * util/texinfo.dtd: remove -- and ^L from inside comments, since + apparently XML cannot handle them. + Report from Torsten, bronger@physik.rwth-aachen.de. + + * configure.ac (AC_INIT): quote address. + (AC_PREREQ): move to after AC_INIT, per current recommendation. + +2005-03-25 Stepan Kasal + + * doc/Makefile.am: help2man should use the native binaries in the + build tree, not the one found on $PATH; thanks to Thomas Schwinge + for reporting the problem. + The rules also make sure the binaries are up-to-date, and generate + the man pages in the source tree, not build tree. + There is no need to depend on MAINTAINER_MODE, because help2man is + handled by the `missing' script. + (INSTALL_INFO): Comment out; it's not used. + * Makefile.am (distcleancheck_listfiles): Removed this variable, it + doesn't seem to be needed. + * configure.ac (AC_INIT): Add our bug report address. + +2005-03-21 Karl Berry + + * doc/texinfo.txi (allowcodebreaks): new node. + * makeinfo/cmds.c: define @allowcodebreaks (as a no-op). + * doc/texinfo.tex (\allowcodebreaks): new macro. + (\code): use it. + (\realunder, \keywordtrue, \keywordfalse, \ifallowcodebreaks): + helpers. + +2005-03-15 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.3. + +2005-03-12 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.2. + +2005-03-12 Karl Berry + + * process_css_file: fclose the file when we're through with it, + to avoid fd leaks. + From: Matthias Kilian , + 11 Mar 2005 19:42:27 +0100. + +2005-03-08 Keith Marshall + + * makeinfo/tests/no-headers: ($nulldev): new variable. + set it to `/dev/null' normally, but to `nul' on Win32, + so Cygwin doesn't fail this test, in `make check'. + +2005-03-08 Karl Berry + + * info/filesys.h (DEFAULT_INFOPATH): make . first in the path, + instead of last. That way info -f foo/bar finds foo/bar.info. + From: Bruno Haible , 8 Mar 2005 13:45:28 +0100. + +2005-03-07 Akim Demaille + + * util/texi2dvi: Fix -o when -c is not passed. + Don't make thumbpdf failures fatal. + +2005-03-05 Karl Berry + + * doc/texinfo.txi (General Index): Rename from Concept Index. + +2005-02-28 Stepan Kasal + + * util/texi2dvi: When running bibtex, improve quoting and again, + we can save a process by not running ls. (Thanks, Akim.) + +2005-02-24 Stepan Kasal + + * util/texi2dvi (get_xref_files): No need to use ls, save a process. + +2005-02-22 Akim Demaille + + * util/texi2dvi (absolute_filenames): Skip nonexistent directories. + Factor its invocations for TeX envvars. + (fd6): Document and use more extensively. + (get_xref_files): Accept bu[0-9]#.aux files from the bibunits + package. + Also adjust the bibtex invocation. + +2005-02-19 Karl Berry + + The main user-visible change of all this is to make + section names with \ characters work in pdf outlines. As a side + effect, .toc files now use @ instead of \ for the escape char. + * doc/texinfo.tex (\backChar, \plusChar): new \chardef's. + (\activebackslash): debugging macro. + (\activebackslashdouble): new macro. + (\HyPsdSubst): replace tokens. + (\HyReturnAfterFi): helper. + (\backslashparens): new macro, change () to \( and \) resp. + (\backslashlparen, \backslashrparen): new macros. + (\pdfmkdest): double backslashes, backslashparens, and @ for escape. + (\dopdfoutline): similarly. + (\pdfmakeoutlines): \readdatafile on the .toc the first time, + instead of straight \input. + (\makelinks, \picknum, \pn, \ppn, \ppnn, \pdfmklink): rm. + (\writetocentry): now we use @ for escape in the .toc instead of \. + (\activecatcodes, \readtocfile): new macros. + (\startcontents): don't swap \ and @ catcodes from Texinfo. + (\setref, \dofloat): no need to call \otherbackslash. + (\xrefX): no need to call \otherbackslash, also double backslashes + and backslash parens for pdf output. + (\readauxfile): generalize and rename to \readdatafile. + (\doublebackslash): new macro. + + * util/texi2dvi: do not have -o (used by Autoconf/make) imply + --clean. That results in TeX always running at least twice, since + the aux files are stuck (and removed) in the temp directory for clean. + +2005-02-18 Karl Berry + + * util/texi2dvi: call absolute_filenames on BIBINPUTS and + BSTINPUTS, too. te, 17 Feb 2005 20:10:23 +0100. + +2005-02-13 Karl Berry + + * doc/texinfo.txi (frenchspacing): new code. + * makeinfo/cmds.c (command_table): add frenchspacing. + (cm_frenchspacing): new fn. + * util/texinfo.dtd (frenchspacing): new element. + (option.cmds): new entity; use in Inline.phrase, I guess. + * makeinfo/xml.h (xml_element): add FRENCHSPACING. + * makeinfo/xml.c (docbook_element_list, texinfoml_element_list): same. + * doc/texinfo.tex (\frenchspacing): new macro for new command. + (\onword, \offword): args to that command. + (\plainfrenchspacing, \plainnonfrenchspacing): the commands which + really do the work; change calls. + (\endofsentencespacefactor): set in \plain...frenchspacing to 3000 + or 1000 as appropriate. + (\., \!, \?): use here, instead of hardwiring 3000. + +2005-02-10 Karl Berry + + * util/texi2dvi (findprog): also check for foo.exe, for Cygwin. + +2005-02-10 Karl Berry + + * info/dir.c (dir_file_list_entry_type): use dev_t and ino_t + instead of unsigned long. (Breaks on cygwin.) David Hunter + bug-texinfo mail, 08 Feb 2005 23:05:37 -0500. Paul Eggert says + these types should were present in 7th Edition and consequently + should be portable to any Unixish system. + +2005-02-09 Akim Demaille + + * util/texi2dvi (report): New. Use it. + (fatal): Take the exit status as argument. + Use report. + (run_tex): New function to factor the two tex invocations. + Move the handling of tex arguments in here to improve locallity. + Enforce the batch mode by branching /dev/null to its stdin. + +2005-02-05 Per Bothner + + * makeinfo/xml.c (docbook_element_list): Add two missing entries. + + * makeinfo/xml.c (xml_begin_document): Check for mismatch between + enum xml_element and texinfoml_element_list/docbook_element_list. + + bug-texinfo-mail, 05 Feb 2005 00:13:44 -0800. + +2005-02-05 Per Bothner + + * makeinfo/xref.c (cm_uref): Ulink urls in Docbook need to be + html-escaped. bug-texinfo mail, 05 Feb 2005 00:57:55 -0800. + +2005-01-30 Karl Berry + + * doc/texinfo.tex (\chapmacro) : failed to + \gdef\thischapter inside the group, resulting in "Chapter 1:" + appearing in the headline of an @unnumbered. + help-texinfo bug report from: , + 27 Jan 2005 11:45:31 +0100. + +2005-01-28 Karl Berry + + * util/texi2dvi : rename variable to verb, since + functions and variables apparently cannot have the same + name on Digital UNIX 4.0E, AIX 3.2.5 (325102), ULTRIX V4.5. + (and related releases, presumably). + : simplify sed expression to avoid \| operator, which does + not work on above platforms (and also be more correct). + : switch to ksh under Ultrix. + All of this stuff reported by Bernhard Simon + and te. + +2005-01-25 Karl Berry + + * doc/Makefile (texmf_dvips, texmf_pdftex_misc): new paths to + match teTeX. tex-k mail from peb, 25 Jan 2005 15:45:37 +0100. + +2005-01-23 Karl Berry + + * util/texi2dvi (findprog): split $PATH at $path_sep, not spaces. + (path_sep): don't let ComSpec fool us under cygwin. + Report from: Eric Blake , 19 Jan 2005 05:36:26 -0700. + + * doc/texinfo.txi (euro): mention the font we use for the Euro + symbol and where to get it. help-texinfo report from: + christoph.sobotka@utanet.at, 19 Jan 2005 21:29:20 +0100. + + * doc/info-stnd.texi (Top): per rms, don't use @insertcopying here. + * doc/texinfo.txi (Top): Likewise. Also, remove recommendations + to use it. + +2005-01-20 Akim Demaille + + * util/texi2dvi: Have a consistent function declaration style. + (verbose, absolute_filenames): New functions. + Use them. + Report TEXINPUTS and INDEXSTYLE when verbose. + +2005-01-20 Karl Berry + + * doc/texinfo.5, doc/info.5: define and use .EX/.EE instead of + .RS/RE, to placate esr. + + * util/texi2dvi (findprog): make sure test -x isn't returning true + for a directory. From Stepan and others, 20 Jan 2005 12:35:08 +0100. + +2005-01-16 Torsten Bronger (tiny change) + + * makeinfo/insertion.c (handle_verbatim_environment): do HTML + conversions, to make ]]> work. + * makeinfo/xml.c (xml_add_char): also escape >. + +2005-01-16 Torsten Bronger (tiny change) + + * makeinfo/cmds.c (cm_tie): use   for HTML,   for + XML/Docbook. + +2005-01-15 Karl Berry + + * makeinfo/xref.c (cm_xref): output *note for @ref, instead of + *Note. @ref is always used in the middle of a sentence. + * doc/texinfo.txi (pxref): rewrite, since now it can be used at + the ends of sentences. + (ref): likewise rewrite. + +2005-01-11 Karl Berry + + * util/gendocs.sh: eval $cmd instead of just $cmd, so allow for + embedded quotes. + From: Sergey Poznyakoff , + 11 Jan 2005 16:16:32 +0200. + +2004-12-31 Karl Berry + + * Version 4.8. + +2004-12-21 Karl Berry + + * pretest version 4.7.94. + + * makeinfo/xref.c: doc fix. + +2004-12-20 Karl Berry + + * makeinfo/html.c (cm_node) : need old-style names in the normal + (not no_headers) html case, too, of course. + (add_html_names): canon_white the new name, too. + +2004-12-19 Karl Berry + + * pretest version 4.7.93. + + * automake 1.9.4. + + * makeinfo/xml.c (try_docbook_image): new fn. + (xml_insert_docbook_image): call it, trying additional formats + pdf, svg, etc. + * makeinfo/makeinfo.c (cm_image): check for gif too. + http://www.gnu.org/philosophy/gif.html says: + "we can and will include support for displaying GIF files in GNU + software." Leaving it undocumented, though. + Based on patch from Jens Elkner, 18 Dec 2004 01:56:28 +0100. + +2004-12-19 Torsten Bronger + + * util/texinfo.dtd: define most entities, add . + +2004-12-17 Juan M. Guerrero + + * djgpp/config.bat: remove files like coXXXXXX.tmp created + in the top_srcdir by the gl_FUNC_MKSTEMP test. + +2004-12-15 Karl Berry + + * pretest version 4.7.92. + + * util/texinfo.dtd: merge with makeinfo/texinfo.dtd. + * makeinfo/texinfo.dtd, makeinfo/texinfo.xsl: remove. + +2004-12-15 Stepan Kasal + + * Makefile.am (EXTRA_DIST): Removed po/Makevars.template, sorry. + +2004-12-15 Juan M. Guerrero + + * djgpp/config.sed: adjust for new autoconf. + * makeinfo/node.c (enumerate_filename): make dos_file_names const + instead of static, since it may involve a fn call to pathconf. + +2004-12-15 Karl Berry + + * Makefile.am (EXTRA_DIST): include ChangeLog.46, README.dev, + and po/Makevars.template. From Stepan. + +2004-12-14 Karl Berry + + * doc/texinfo.txi (inforef): try to explain possible uses more + thoroughly. + From: Luc Teirlinck, 13 Dec 2004 21:45:58 -0600. + + * doc/texinfo.txi (pxref): more explanation. + * doc/info-stnd.texi (Basic Windows): put pxref in parens. + help-texinfo mail from adl, 13 Dec 2004 17:07:50 +0100. + +2004-12-13 Andreas Schwab + + * info/echo-area.c (DECLARE_INFO_COMMAND): Add intermediate cast + to avoid warning. + * info/infokey.c (compile): Likewise. + * info/session.c (forward_move_node_structure): Likewise. + (DECLARE_INFO_COMMAND): Likewise. + + * makeinfo/makeinfo.c (init_paragraph): Don't use free_and_clear + to avoid strict aliasing issue. + + * makeinfo/cmds.c (cm_center): Avoid strict aliasing issue. + +2004-12-13 Karl Berry + + * doc/texinfo.txi (HTML Cross-reference Command Expansion): add + @euro{} -> U+20AC. texinfo-pretest mail from Patrice, + 12 Dec 2004 23:49:50 +0100. + +2004-12-12 Karl Berry + + * doc/texinfo.txi (makeinfo options): don't be so suggestive about + skipping xref validation. + emacs-devel mail from: Luc Teirlinck, 12 Dec 2004 13:02:11 -0600. + +2004-12-08 Karl Berry + + * pretest version 4.7.91. + + * info/echo-area.c, info/infokey.c, info/session.c: omit useless + casts to intptr_t, since we're just casting to (void *) next. + intptr_t is not defined with gcc 3.04 on Tru64 Unix V5.1 + (This whole vararg stuff needs to be redone correctly.) + Report from: Svend Tollak Munkejord (via te) + 8 Dec 2004 17:15:17 +0100. + + * doc/texinfo.txi (ref): rewrite last two redundant paragraphs. + +2004-12-07 Karl Berry + + * doc/texinfo.txi (Macro Details): document @c kludge in macro + definitions to work around some newline problems. (From Werner.) + +2004-12-05 Karl Berry + + * makeinfo/html.c (add_escaped_anchor_name): prefix g_t if the + nodename begins with a nonletter. Ugh. + * doc/texinfo.txi (HTML Xref Node Name Expansion): document this. + http://ff0.org/pipermail/texinfo-pretest/2004-December/000210.html + + * doc/texinfo.txi (HTML Xref 8-bit Character Expansion): define + behavior for Unicode code points above 0xfff. + + * makeinfo/makeinfo.c (reader_loop): didn't make it into + HTML 4, remove it. Sigh. + texinfo-pretest mail from wl, 05 Dec 2004 23:39:05 +0100. + +2004-12-02 Karl Berry + + * configure.ac (install-warnings): simplify default case. From te. + +2004-12-01 Karl Berry + + * pretest version 4.7.90. + + * util/texi2dvi (recode): new option, off by default. + Unconditionally calling recode seems problematic, when there + hasn't been a release for years and its Texinfo support is less than + perfect. + +2004-11-30 Karl Berry + + * doc/texinfo.txi (Quotations and Examples): @quotation does not + reduce interparagraph spacing. + + * makeinfo/node.c (cm_node) : do not bother calling + add_html_nodes in the split case, the filename is wrong. + +2004-11-29 Karl Berry + + Support for writing using the old-style node name + to HTML name conversion, to keep the gcc folks happy. + * makeinfo/node.c (add_html_names): new routine, factoring out + common code (plus new code) from cm_node. + (cm_node) : call it. + * makeinfo/makeinfo.h (OLD_HTML_SAFE, OLD_URL_SAFE_CHAR): + (re)define these. + * makeinfo/html.c (add_escaped_anchor_name): take new argument to + optionally output the old-style conversion. + (add_anchor_name): change call. + * index.c: change calls. + * makeinfo/html.h (add_escaped_anchor_name): change decl. + +2004-11-26 Karl Berry + + * makeinfo/makeinfo.c (reader_loop): allow after — + +2004-11-25 Karl Berry + + * doc/texinfo.txi (Fonts): document new command @sansserif. + * doc/texinfo.tex (\sansserif): new command. + * makeinfo/cmds.h (cm_sansserif): new cmd. + * makeinfo/cmds.c (cm_sansserif): new cmd. + (command_table): add it. + * makeinfo/texinfo.dtd (Inline.fonts): add it; also slanted. + * makeinfo/xml.h (SANSSERIF, SLANTED): define these new elements. + * makeinfo/xml.c (texinfoml_element_list): add them. + From: Frank Küster, 21 Oct 2004 23:27:33 +0200, Debian bug#277754. + + * doc/texinfo.txi (Quotations and Examples, end titlepage): state + that there must be only one space between the @end and its + argument. Report from: christoph.sobotka, 26 Oct 2004 22:04:03 +0200. + +2004-11-22 Karl Berry + + * doc/texinfo.txi (euro): new node, documenting new command, + @euro{}, for the Euro currency symbol. + * doc/texinfo.tex (\euro): new command, along with \eurofont to + support it. The following extra font support is also related to + supporting @euro{}: + (\bfstylename): define this. + (\textnominalsize .. \ssecnominalsize): new macros. + (\textfonts .. \ssecfonts): define \curfontsize. + * makeinfo/cmds.c (command_table): add euro. + * makeinfo/lang.c (cm_special_char): handle euro. + (iso8859_15_map): new global. + +2004-11-18 Stepan Kasal + + * doc/texinfo.tex (\ptexnewwrite): Save \newwrite. + (\newwrite): Call it. + +2004-11-17 Karl Berry + + * configure.ac (install-warnings): new --enable option, requested + by te. + +2004-11-11 Karl Berry + + * texinfo.dtd (metainformation): add documentdescription. + (documentdescription): define. + * xml.h (DOCUMENTDESCRIPTION): new value for xml_element. + * xml.c (texinfoml_element_list): define documentdescription. + (docbook_element_list): likewise, but don't know how to handle it. + * cmds.c (cm_documentdescription): insert opening xml tag. + * insertion.c (end_insertion): insert closing xml tag. + + * makeinfo/makeinfo.c (insert_string): declare const char * arg. + * makeinfo/makeinfo.h: likewise. + Report from: Vincent Lefevre, 20 Oct 2004 15:40:39 +0200, + noting a spurious after . + +2004-11-08 Karl Berry + + * doc/texinfo.tex (\pdfmakeoutlines): in the first run through the + toc, define \thischapnum...\thissubsecnum as 0, rather than \empty. + This is so \expnumber doesn't end up trying to expand + \csname sec\empty\endcsname, i.e., \sec, which is the secant function. + Report from: Oliver Beck, help-texinfo, 8 Nov 2004 08:05:55 +0100. + +2004-11-07 Karl Berry + + * makeinfo/makeinfo.c (main) [LC_MESSAGES]: #ifdef the setlocale + using LC_MESSAGES. From te, 6 Nov 2004 23:36:10 +0100. + +2004-11-06 Karl Berry + + * lib/Makefile.am (libtxi_a_SOURCES): add strdup.h. + Report from: Thomas Esser , + 6 Nov 2004 18:11:51 +0100. + +2004-11-01 Karl Berry + + * makeinfo/xref.c (cm_xref): don't include the external file name + in the HTML output, since it's pretty traditional not to + distinguish internal and external links in HTML, and it disturbs + the flow of reading. + From: Han-Wen Nienhuys , 31 Oct 2004 00:13:36 +0200. + (For lilypond.) + +2004-10-31 Karl Berry + + * doc/texinfo.tex (\setmultitablespacing): just let \multistrut be + the same as \strut. Its previous computation was wrong. + See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. + +2004-10-22 Stepan Kasal + + * info/Makefile.am (generated_sources): Add dependencies defining + a total order on the files, to prevent race conditions with + parallel make. + Move the code about generated sources to the end of the file. + +2004-10-20 Stepan Kasal + + * info/Makefile.am (doc.c, key.c, funs.h): Don't distribute them. + of these three files. + (ginfo_SOURCES, nodist_ginfo_SOURCES): Move files. + (infokey_SOURCES, nodist_infokey_SOURCES): Likewise. + (DISTCLEANFILES): Include generated_sources. + +2004-10-20 Stepan Kasal + + BUILT_SOURCES is a special variable for a hack to supplement + the automatic dependency tracking; we need it for funs.h only. + See the explanation in the automake manual. + + * info/Makefile.am (BUILT_SOURCES): All occurences replaced by ... + (generated_sources): ... this new variable. + (BUILT_SOURCES): set to ``funs.h''. + +2004-10-20 Stepan Kasal + + * info/Makefile.am (ginfo_SOURCES): replace $(BUILT_SOURCES) + with ``doc.c funs.h''; this reflects the true situation. + (infokey_SOURCES): Add funs.h. + +2004-10-20 Stepan Kasal + + * info/Makefile.am (EXTRA_DIST): No need to mention the generated + sources here, they are in ginfo_SOURCES or infokey_SOURCES. + +2004-10-19 Stepan Kasal + + * configure.ac: When cross compiling, we have to remove + ./config.status, not "$native_tools"/config.status. + Replace ``echo'' with AC_MSG_NOTICE. Quote the variable + values passed to ``env.'' + +2004-10-17 Karl Berry + + * makeinfo/node.c (cm_node): don't output
after the + navigation line, it's apparently just extra space. + + * configure.ac: Clean environment for native configure. + From: Mark Fortescue , + 17 Oct 2004 19:09:53 +0100. + +2004-10-11 Stepan Kasal + + * configure.ac: Add a short explanation about cross compile. + +2004-10-08 Karl Berry + + * info/Makefile.am (generated_sources): remove. Found by Stepan. + +2004-10-08 Stepan Kasal + + Support cross compiling. Based on research by Mark Fortescue. + Maciej W. Rozycki pointed out this issue previously. + + * configure.ac: If cross compiling, run second configure script + in a subdirectory ${native_tools}. New automake conditional + TOOLS_ONLY is set inside that subdirectory. + * Makefile.am (SUBDIRS): Add $(native_tools); restrict the + SUBDIRS to minimum, if we are inside the $(native_toos) dir. + (distclean-local): Remove directory $(native_tools). + * doc/Makefile.am: If necessary, use makeinfo and install-info + from $(native_tools). + * info/Makefile.am: Similarily with the ``makedoc'' program. + +2004-10-07 Stepan Kasal + + @table command doesn't work inside environment @display. + There is no point in trying to fix it: just give up with a cry. + + * doc/texinfo.tex (\table, \ftable, \vtable): Instead of calling + \tablex directly, call ... + (\tablecheck): ... this new macro which checks for active newline; + if it's found, it reports an error and uses \doignore to recover. + * doc/texinfo.txi (display): mention this. + +2004-10-06 Karl Berry + + * doc/*.texi: more consistent use of dashes. + From Stepan and Benno Schulenberg . + +2004-10-04 Karl Berry + + * makeinfo/makeinfo.c (cm_value): increment and restore + input_text_offset before execute_string on the value, + so cm_xref doesn't complain about missing punctuation. + From: Sergey Poznyakoff , + 04 Oct 2004 15:04:33 +0300. + +2004-10-01 Karl Berry + + * lib/Makefile.am (libtxi_a_SOURCES): add getopt_.h. + + * configure.ac: bump version to 4.7.90, although we're not really + pretesting yet. (I need a distribution to check an + automake issue.) + +2004-09-14 Karl Berry + + * util/srclist.txt (getopt.h): renamed to getopt_.h. + * lib/getopt_.h: new file. + * lib/getopt.h: just include getopt.h. + +2004-09-09 Karl Berry + + * doc/texinfo.txi (Image Syntax): mention @noindent, @center. + +2004-09-06 Stepan Kasal + + * doc/texinfo.tex (\Efloat): Take care to run \scantokens on + \thisshortcaption before writing the lof line to auxfile. + Otherwise, when a newline appears in the argument to + @shortcaption, a literal ^^M is written to the aux file. + Report from Patrice, 1 Aug 2004 15:54:44 +0200. + +2004-09-01 Karl Berry + + * util/gendocs.sh: show commands, allow / in description. + +2004-08-30 Karl Berry + + * makeinfo/makeinfo.c (maybe_escaped_expansion): new routine, like + expansion but does HTML escapes. + * makeinfo/makeinfo.h (maybe_escaped_expansion): declare. + * makeinfo/index.c (cm_printindex): call it. + This is @cindex Kahrs, J@"urgen does not get + gawk.texi:23425: Unknown command `"urgen'. + (in gawk 3.1.4). + Report from: Stepan Kasal , 24 Aug 2004 12:36:34 +0200. + +2004-08-29 Karl Berry + + * makeinfo/node.c (split_file): do not search for output file + along the path when calling find_and_load (can cause seg + fault when cross-compiling). + From: Martin Husemann , 29 Aug 2004 08:40:33 +0200. + http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=26791 + +2004-08-27 Karl Berry + + * doc/texinfo.txi (Macro details): more warnings about macro usage. + Report from: Stepan Kasal , 24 Aug 2004 09:29:35 +0200. + + * doc/texinfo.tex (\Efloat): \vskip\parskip after printing the + caption; previous \printedsomething code to do this had become + obsolete. Reported by Stepan. + + * doc/texinfo.txi (caption shortcaption): show an example for + @shortcaption, and remark that weird commands like @c and @verb + are not allowed. Suggested by Stepan. + +2004-08-27 Stepan Kasal + + * doc/texinfo.tex (\initial): when breaking the column before the + initial, allow for some space at the bottom of the column, so + the baselineskip is preserved (more or less). + Don't give negative penalty, it encouradges creating of underfull + columns with stretched baselineskip. + At the end, the \nobreak should be before \vskip, not after it. + +2004-08-26 Stepan Kasal + + * util/texi2dvi: fix the sed script searching for @documentencoding; + Double-quote some instances of "$filename_???" + +2004-08-26 Akim Demaille + + Let DVI and PDF files honor the document encoding in TeX. + + * util/texi2dvi ($language): Be sure to set its value. + (get_xref_files): Turn this external shell script into a function. + (filename_rcd, $tmpdir_rcd): New. + If the file is in Texinfo, and has @documentencoding, and recode + is available, then run it. + +2004-08-25 Akim Demaille + + * util/Makefile.am (texinfo.cat): Fix for srcdir != builddir. + +2004-08-25 Karl Berry + + * util/texi2dvi: @ is also ok for the first character of xref_files. + +2004-08-20 Karl Berry + + * doc/texinfo.tex (\tablez): accidentally removed assignments + enabling @item and @itemx within @table. + +2004-08-19 Karl Berry + + * doc/texinfo.tex (\multitable): \def\item to \crcr, instead of + \let, to avoid errors with a nested @itemize inside + @multitable. + Report from: Pierre-Luc Veilleux , + 18 Aug 2004 13:26:00 -0400. + +2004-08-19 Stepan Kasal + + * doc/texinfo.tex (\scanmacro): Make backslash active, not other, + as this is the default when processing texinfo files. + Otherwise, a \ inside @copying will eventually print as ``. + +2004-08-18 Stepan Kasal + + * doc/texinfo.tex (\scantxt): " is another active char to be + sanitized. + +2004-08-18 Karl Berry + + * doc/texinfo.txi (exampleindent): document that the default is + different in TeX. + From: Simon Josefsson , 18 Aug 2004 13:44:32 +0200. + +2004-08-14 Karl Berry + + * doc/texinfo.tex (\cslet): equivalent-or-better, and shorter, + version from dak, 12 Aug 2004 19:17:27 +0200. + + * doc/texinfo.txi (makeinfo options): use --no-number-sections + with non-hierarchical manuals. + +2004-08-13 Karl Berry + + * util/texi2dvi: check for -file-line-error, since -style is no + longer part of the name. + +2004-08-07 Karl Berry + + * info/echo-area.c (inform_in_echo_area): avoid buffer overrun. + Report from: Roman Werpachowski , + 7 Aug 2004 01:18:32 +0200. + + * info/echo-area.h (inform_in_echo_area): declare arg as const, + while we're at it. + +2004-08-02 Karl Berry + + * makeinfo/cmds.c (cm_acronym_or_abbr): use strchr, not index. + Report from: Prof Brian Ripley , + 2 Aug 2004 12:47:36 +0100 (BST) + +2004-07-31 Karl Berry + + * doc/texinfo.txi, + * doc/texinfo.tex, + * makeinfo/cmds.c, cmds.h, xml.c, xml.h, + * util/texinfo.dtd: new command @abbr, suggested by Paul Eggert, + who also sent the original documentation. + +2004-07-30 Karl Berry + + * info/infomap.c (initialize_vi_like_keymaps): bind j to + info_next_line and k to info_prev_line. From Eli. + +2004-07-30 Maciej W. Rozycki + + * info/filesys.c (extract_colon_unit): Clean up handling of the + end of string. + +2004-07-27 Karl Berry + + * doc/texinfo.txi (verb): explicitly warn that @verb cannot be + used in xref contexts. + +2004-07-27 Stepan Kasal + + * doc/texinfo.tex (\float): The parameters for @float are + separated by commas; allow a space after each of the commas. + + The TeX code for @caption, @shortcaption and @copying now uses + a similar mechanism to macro definitions. In detail: + + * doc/texinfo.tex (\macrobodyctxt, \macroargctxt): Generalize, ... + (\scanctxt, \scanargctxt): ... and introduce new variants. + (\scanexp): New macro--expand the parameter and call \scantokens. + (\copying, \docopying, \insertcopying): Use \scanargctxt and + \scanexp--this simplifies things a lot. + (\caption, \shortcaption): Redefine, using \scanargctxt via ... + (\docaption, \defcaption): ... these new macros. + (\appendtomacro): Simplify code, using \expandafter. + +2004-07-26 Karl Berry + + Avoid using the path for output files, since this led to problems + when incompatible files created by previous versions were found. + * makeinfo/files.c (find_and_load): introduce second parameter + use_path, set to 0 from the call in handle_delayed_writes, + 1 in all cases. + * makeinfo/files.h: change decl. + * makeinfo/cmds.c, makeinfo.c, node.c: change calls. + From: Thomas Klausner , + 14 Jul 2004 00:31:54 +0200. + +2004-07-25 Werner Lemberg + + Rename @s to @slanted. + + * doc/texinfo.tex (\s): Replace with... + (\slanted): This. + * doc/texinfo.txi: Updated. + + * makeinfo/cmds.c (command_table): Add @slanted, not @s. + (cm_s): Replace with... + (cm_slanted): This. + * makeinfo/cmds.h: Add cm_slanted, not cm_s.. + + * NEWS: Updated. + +2004-07-24 Karl Berry + + * info/echo-area.c (ea_possible_completions), + * info/session.c (forward_move_node_structure), + * info/infokey.c (compile): cast to intptr_t to avoid cast to + pointer from integer of different size. + From Havard Eidnes , 14 Jul 2004 20:38:59 +0200. + +2004-07-19 Alper Ersoy + + * makeinfo/makeinfo.c (main): with XML, instead of directly calling + handle_variable_internal for -D and -U command line flags, hold the + variable declarations until output document is started. + (convert_from_loaded_file): handle variables provided with -D and -U + flags here, just before entering the reader_loop. + (Otherwise, -D/-U with --xml cause a segfault.) + +2004-07-15 Werner Lemberg + + * doc/texinfo.tex (\s): New command to typeset text with a slanted + font. + * doc/texinfo.txi: Document @s. + + * makeinfo/cmds.c (command_table): Add @s. + (cm_s): New function. Currently the same as cm_i -- it probably + has to be adapted to Docbook and XML. + * makeinfo/cmds.h: Add prototype for cm_s. + + * NEWS: Document new command @s. + +2004-07-15 Werner Lemberg + + * doc/texinfo.tex (\TeX): Adjust \spacefactor to make it act like a + lowercase letter, not like a period. + +2004-07-12 Karl Berry + + * texinfo/texinfo.txi (Useful Highlighting): Include + cross-references to each of the commands. Suggestion from + Wolfgang Pausch, 12 Jul 2004 08:26:28 +0200. + + * texinfo/texinfo.txi (Invoking makeinfo), + * makeinfo/makeinfo.c: mention that --if-noFORMAT also processes + @ifnotFORMAT blocks. + Suggestion from Stepan. + +2004-07-11 Karl Berry + + * makeinfo/makeinfo.c (discard_until): leave input_text_offset at + the end of input_text if not found, not at one past the + end of input_text. (Had erroneously put that in the block + only if an error was given.) The result was a null byte + after macro expansions. Report from Werner, + 10 Jul 2004 15:36:40 +0200. + + * makeinfo/node.c (split_file): fwrite Local Variables trailer so + it actually gets into the output of the top-level info + file; don't just insert_string. + Report from: Werner LEMBERG, 11 Jul 2004 08:58:13 +0200. + +2004-07-10 Karl Berry + + * util/texi2pdf: new script. + * util/Makefile.am: install it. + * doc/texinfo.txi: document it. + +2004-07-05 Karl Berry + + * makeinfo/xref.c (cm_email, cm_uref, et al.): + * makeinfo/xml.c (xml_insert_indexentry, xml_insert_indexterm): + * makeinfo/sectioning.c (sectioning_underscore): + * makeinfo/makeinfo.c (cm_listoffloats): use %s, don't pass string to + execute_string. Report from Christian Schenk. + +2004-07-02 Karl Berry + + * makeinfo/makinfo.c (execute_string): don't worry about + mismatched multiline commands if executing_macro. + +2004-06-27 Karl Berry + + * doc/texinfo.tex: Various doc fixes. + (\dosubindsanitize): propagate the same penalty + >10000, don't just use \nobreak. + (\sectionheading): insert a final penalty of + 10001, not 10000. This causes \aboveenvbreak to + insert \parskip glue, cancelling the + \vskip-\parskip done here. Otherwise, when (e.g.) + @section is followed immediately by @example, the + example can be shrunk up above the section title. + +2004-06-14 Karl Berry + + * doc/texinfo.tex (\commondummies, \indexnofonts): dummy-up @comma. + Report from Arnold. + +2004-06-06 Karl Berry + + * makeinfo/index.c (index_add_arg): ensure all elements are always + initialized, including output_file, section, and section_name. + (cm_printindex): don't pass index->output_file to + add_html_block_elt_args if it is null. Also do + not pass spurious extra index_name argument. + + * makeinfo/makeinfo.c (add_char): don't call html_output_head if + only_macro_expansion (e.g., a macro call in the + Top menu). From: Yuri D'Elia , + 05 Jun 2004 21:11:00 +0200. + +2004-06-03 Karl Berry + + * info/session.c (info_menu_digit): use menu, rather than entry, to + avoid seg fault on "0" (the last item), + since menu has already been checked. + From: Malcolm Rowe , + 02 Jun 2004 21:32:37 +0100. + +2004-05-17 Karl Berry + + * util/gendocs.sh, gendocs_template: use package.format.tar.gz + consistently. Before, -, _, and . were all used. + +2004-05-16 Karl Berry + + * lib/Makefile.am (libtxi_a_SOURCES): include strcase.h. + From: "Gerrit P. Haase" , + 15 May 2004 21:50:52 +0200. + + * util/gendocs.sh: force HTML output name, otherwise Emacs fails + with its "@setfilename ../...". + +2004-05-04 Karl Berry + + * util/texi2dvi (TEX): don't use the value when it ends in + "latex"; TEX is also used by mpost. Report from + Yvon.Henel@wanadoo.fr. + +2004-04-29 Karl Berry + + * doc.texinfo.txi (Invoking makeinfo): mention --plaintext. + From Akim. + + * doc/texinfo.tex (\emptyusermacros): can use \asis. + (\identity): remove. + +2004-04-29 Stepan Kasal + + * doc/texinfo.tex (\commondummiesnofonts, \indexnofonts): In order + to correctly transform words like `Dvo\v{r}\'{a}k' to `Dvorak' + for index sorting, one has to define all accent control sequences + as @asis. (Current code would produce `Dvor{a}k'.) + +2004-04-29 Jan Nieuwenhuizen + + * makeinfo/makeinfo.c (remember_error): Try cm_bye not more than + twice. Fixes `Too many errors! Gave up.' looping. + +2004-04-26 Karl Berry + + * lib/system.h (STRCASEEQ, STRNCASEEQ): new #defines for + convenience. + * makeinfo/cmds.c (cm_strong): actually change the output to avoid a + spurious xref. Suggestion from Jan Nieuwenhuizen + , 26 Apr 2004 00:04:04 +0200, emacs-devel. + + * automake 1.8.4. + +2004-04-24 Karl Berry + + * doc/texinfo.tex (\emptyusermacros, \identity): new macros. + (\indexdummiesnofonts): call it. + This is to semi-support macro calls in the arg to @deffn. + Report from: Akim Demaille , 20 Apr 2004 17:48:28 +0200. + +2004-04-21 Karl Berry + + * configure.ac (gl_FUNC_MKSTEMP): rename from UTILS_FUNC_MKSTEMP, + per new gnulib code. + +2004-04-20 Karl Berry + + * makeinfo/tests/copying: force POSIX language setting. + +2004-04-19 Karl Berry + + * makeinfo/cmds.c (cm_code): use for commands other than + @code, so we get typewriter output; and add `...' + for @samp. + Report from: John Blevin , + 16 Apr 2004 11:40:01 -0400. + + * makeinfo/html.c (html_output_head) [CSS_FONT_ROMAN, + CSS_FONT_SMALL_CAPS]: prettify. + +2004-04-18 Karl Berry + + * doc/texinfo.tex (\Orb): define if undefined. + Report from Laurent Siebenmann. + + * util/dir-example: diff updates. + +2004-04-13 Karl Berry + + * doc/texinfo.tex: remove trailing blanks. suggestion from Jim. + +2004-04-12 Paul Eggert + + * doc/Makefile.am (info.1, infokey.1, install-info.1, + makeinfo.1, texi2dvi.1, texindex.1): Don't use $< in ordinary + rules; it's not portable. + * util/Makefile.am (texinfo.cat): Likewise. + +2004-04-12 Karl Berry + + * bootstrap: update from berlios. + +2004-04-11 Karl Berry + + * Version 4.7. + +2004-04-09 Karl Berry + + * makeinfo/makeinfo.c (execute_string): do not free the temporary copy + of input_filename until we're definitely done with + it. It is used in line_error, etc. + + * INSTALL: mention texinfo.tex install step. + + * util/Makefile.am (texinfo.cat): new name instead of just + `catalog'. rename files. + * util/Makefile.am (EXTRA_DIST): texinfo-cat.in now, not + catalog.in. + +2004-04-09 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion): after @copying, do not + discard until a newline if we are looking at one. + (end_insertion): decrement input line number after @end copying. + +2004-04-08 Karl Berry + + * util/Makefile.am: doc fix, as automake.diff is no longer needed. + +2004-04-07 Karl Berry + + * pretest version 4.6.95. + + * doc/texinfo.tex (\dodonode): new macro to remove trailing comma. + (\donode): call it, after removing space-comma. + + * doc/texinfo.txi (indicateurl): new name for url. + (uref): url is now a synonym for uref. + * doc/texinfo.tex (\url, \indicateurl): implement. + * makeinfo/cmds.c (cm_indicate_url): rename from cm_url. + (command_table): make "url" a synonym for "uref". + * makeinfo/cmds.h (cm_indicate_url): declare it. + +2004-04-06 Karl Berry + + * makeinfo/sectioning.c (insert_and_underscore): use `...' quote + instead of "..." in error message. + * info/*.c: likewise. + +2004-04-07 Alper Ersoy + + * makeinfo/cmds.c (cm_colon): check if the character we are erasing + from the output belongs to an XML tag. + +2004-04-07 Alper Ersoy + + * makeinfo/insertion.c (cm_author): use author element in XML output + for attribution. + +2004-04-06 Alper Ersoy + + * makeinfo/makeinfo.c (convert_from_loaded_file): do not call + write_tag_table if the output filename is "-". + +2004-04-06 Alper Ersoy + + * makeinfo/insertion.c (end_insertion):
 blocks implicitly ends
+	the previous paragraph, so avoid 

after the end tag. + + * makeinfo/footnote.c (output_pending_notes): made Footnotes anchor + non translatable, and changed it to "texinfo-footnotes-in-document" to + lessen the chance of getting in the way of another Footnotes anchor. + +2004-04-04 Jim Meyering + + * info/nodes.c (info_load_file_internal): Don't free lowered_name + until *after* using fullpath, since they may be one and the same. + +2004-04-03 Karl Berry + + * doc/texinfo.txi (Image Syntax): had missing @'s in cookies. + + * makeinfo/cmds.c (cm_w): insert a comment at the end of @w, so that + @w{$}Log$ doesn't end up as Log. + Report from rms. + * doc/texinfo.txi (GNU Sample Texts, w): mention this. + +2004-04-02 Karl Berry + + * configure.ac: pretest version 4.6.94. + + * doc/texinfo.txi (Node Line Requirements): discuss whitespace. + + * doc/texinfo.tex (\node, \donode): remove trailing + spaces (before the first comma) in the @node line. + +2004-03-29 Karl Berry + + * util/install-info.c (menu_line_lessp, menu_line_equal): move to + before all uses. + +2004-03-27 Karl Berry + + * info/signals.c (initialize_info_signal_handler) [SA_NOCLDSTOP]: + use instead of HAVE_SIGACTION, since Solaris 2.7+ + with Sun CC don't have sa_handler, sa_flags, sa_mask. + + * info/session.c (search_string_index): remove unused variable. + * info/terminal.c (term_mo): remove unused variable. + * info/display.c (display_clear_display): remove unused variable + display_line. + * util/install-info.c (infilelen_sans_info): remove unused + variable. + + * doc/texinfo.txi: mistakenly had * name: node: in menu items instead + of * name: node. + + * util/install-info.c (menu_item_equal): must declare ret at beginning + of function. From Werner. + +2004-03-27 Jim Meyering + + * info/info-utils.c (info_parse_node): Don't read beyond end + of buffer when looking for ``(line ...)'' in a menu item. + +2004-03-27 Andreas Schwab + + * util/install-info.c (menu_item_equal): Don't scan past + term_char. + +2004-03-26 Karl Berry + + * pretest version 4.6.93. + + * util/install-info.c (menu_item_equal): compare basenames, + so lilypond/ subdir will match. Bug report from Werner, + 21 Mar 2004 08:31:10 +0100. + + * configure.ac (AC_CHECK_DECLS): skip strncasecmp again. + * lib/system.h (strcase.h): change conditional to + !HAVE_STRNCASECMP || !HAVE_STRCASECMP. Extra + !HAVE_DECL seems superfluous. + + * lib/system.h: include last, following Autoconf's + ac_includes_default. + +2004-03-25 Karl Berry + + All these changes are because strncasecmp is only declared in + on IBM AIX 4.2. (Report from Nelson Beebe.) + + * configure.ac (AC_CHECK_DECLS): add memchr; no need to check for + strcasecmp.(gl_STRCASE): call this ... + (AC_REPLACE_FUNCS): ... replacing checks for + strcasecmp and strncasecmp here. + * lib/system.h (memchr) [!HAVE_DECL_MEMCHR]: add conditional + declaration. + (strcase.h) [!HAVE_DECL_STRNCASE]: add conditional include. + (strings.h) [HAVE_STRINGS_H]: include if + available, even if is also available. + * info/session.c (strncasecmp) [M_XENIX]: remove this conditional + declaration, since we haven't been testing for M_XENIX in many + years. + * m4/Makefile.am (EXTRA_DIST): add strcase.m4. + * util/srclist.txt (lib/strcase.h, m4/strcase.m4): add, updating + from gnulib. + +2004-03-24 Karl Berry + + * makeinfo/index.c: + * makeinfo/float.c: avoid use of snprintf, which is not available on + all platforms. Bug report by Nelson and Vin Shelton (22mar03). + + * automake 1.8.3. + +2004-03-23 Karl Berry + + * doc/info-stnd.texi (Searching Commands): typo from jesper. + +2004-03-21 Karl Berry + + * doc/texinfo.tex (\indexnofonts): \definedummyletter needs to + define the control letters to be empty, without + taking any argument; most control letters, such as + @:, don't take arguments, and it won't hurt to + just always ignore them for index sorting. + Report from Arnold. + + * info/doc.h (InfoFunction): cast NULL to VFunction *, to + prevent pgcc from complaining. From Nelson. + +2004-03-20 Karl Berry + + * doc/texinfo.txi (Structuring Command Types): be even more explicit + about @unnumbered vs. @heading. + + * makeinfo/html.c (insert_html_tag_with_attributes): use the same + parameter names (start_or_end and tag) in both stdc and !stdc + cases. Report from Nelson. + + * info/m-x.c (info_execute_command): don't dereference + InfoFunction(command) as a function call if it's NULL. Report + from Nelson, pgcc-5.1-3 complains. + +2004-03-19 Karl Berry + + * info/signals.h [!SA_NOCLDSTOP]: borrow test from coreutils' + sort.c, to avoid using sigset_t when it's not + defined (apparently). + + * makeinfo/html.c (escape_string): escape ", too, for @image's + alttext among others. + * makeinfo/html.h: doc fix. + * doc/texinfo.txi (Image Syntax): making empty alt text, do + escaping. + + * util/dir-example: reorder. + + * doc/texinfo.txi (title subtitle author): using them outside + @titlepage is an error, they're not actually "ignored". + * makeinfo/insertion.c (cm_author): one mdash suffices. + +2004-03-19 Jim Meyering + + * makeinfo/makeinfo.c (add_char): Use memmove, rather than strncpy, + since source and destination strings overlap. + + * makeinfo/float.c (add_new_float): Avoid buffer overrun when + appending `.' to a chapter number. + +2004-03-18 Karl Berry + + * pretest version 4.6.92. + +2004-03-18 Andreas Schwab + + * lib/xmalloc.c: Include "system.h" instead of declaring malloc + and realloc ourselves. + (xmalloc): Change type of size parameter to size_t. + (xrealloc): Likewise. + + * lib/system.h (xmalloc, xrealloc): Change type of size parameter + to size_t. + +2004-03-18 Karl Berry + + * makeinfo/xref.c (cm_xref): ignore any directory part or extension + in html case, warn if nothing left. + * doc/texinfo.txi (HTML Xref Link Basics): ignore directory part in + @xref cmd. + + * lib/getopt.h (__GNUC_PREREQ) [! __GNUC_PREREQ]: change + conditional to the actual symbol, instead of just + __GNUC, else --disable-nls compilation fails under + SunOS 5.8 with gcc 3.2.3 (at least). + Report from Vin Shelton, 15 Mar 2004 08:51:14 -0500. + + * util/texindex.c: add some const declarations. + * util/install-info.c: add some const declarations. + (by no means all) + + * doc/texinfo.txi (HTML Xref *): new nodes. + +2004-03-15 Karl Berry + + * makeinfo/xref.c (cm_xref): need ../ in reference to foreign html + manual, if splitting. + +2004-03-14 Jim Meyering + + * makeinfo/index.c (insert_index_output_line_no): Ensure that `i' + is larger than zero before (not after) using `i-1' as an array index. + + * makeinfo/cmds.c (cm_acronym): Don't write description[-1] + when description is the empty string. + + * makeinfo/makeinfo.c (insert): Avoid buffer under-run when + output_paragraph_offset is zero. + (canon_white): Rewrite not to use strcpy (was used with + overlapping source and destination) + +2004-03-14 Andreas Schwab + + * info/session.c: Fix buffer overflows. + +2004-03-14 Alper Ersoy + + * makeinfo/xref.c (cm_xref): print the fifth arg (or fourth if it's + not available), in parens for the visible text of the HTML link. + +2004-03-14 Alper Ersoy + + * makeinfo/tests/node-expand.txi: + * makeinfo/tests/node-whitespace.txi: added titles to @top. + +2004-03-14 Alper Ersoy + + * makeinfo/sectioning.c (sectioning_underscore): check if title is + pointing to NULL before calling strlen (happens when there is no + @settitle before @top.) + +2004-03-14 Alper Ersoy + + * makeinfo/sectioning.c (sectioning_underscore): warn if both @top and + @settitle are empty. + (sectioning_html, insert_and_underscore): use @settitle argument if + @top is empty. + (insert_and_underscore): removed with_char argument from function + declaration. + + * makeinfo/sectioning.h: insert_and_underscore proto update. + +2004-03-13 Karl Berry + + * pretest version 4.6.91. + + * info/*.[ch]: copyright dates, and final ugly casts. + + * doc/texinfo.txi (Generating HTML): make its own chapter, since we + have lots to say about xrefs now. + + * doc/texinfo.txi (Refilling Paragraphs): @ignore this, just + describe @refill better in the summary. + (Obtaining TeX): make a section of Hardcopy, + instead of its own appendix. + (Command Syntax): subnode of @@-Command List. + This reduction in the number of appendices will hopefully make the + manual less overwhelming. + +2004-03-13 Alper Ersoy + + * info/dir.c: + * info/display.c: + * info/display.h: + * info/doc.h: + * info/dribble.c: + * info/dribble.h: + * info/echo-area.c: + * info/echo-area.h: + * info/filesys.c: + * info/filesys.h: + * info/footnotes.c: + * info/footnotes.h: + * info/gc.c: + * info/gc.h: + * info/indices.c: + * info/indices.h: + * info/info-utils.c: + * info/info-utils.h: + * info/info.c: + * info/info.h: + * info/infodoc.c: + * info/infokey.c: + * info/infomap.c: + * info/infomap.h: + * info/m-x.c: + * info/makedoc.c: + * info/man.c: + * info/man.h: + * info/nodemenu.c: + * info/nodes.c: + * info/nodes.h: + * info/search.c: + * info/search.h: + * info/session.c: + * info/session.h: + * info/signals.c: + * info/terminal.c: + * info/terminal.h: + * info/tilde.c: + * info/tilde.h: + * info/variables.c: + * info/variables.h: + * info/window.c: + * info/window.h: + * lib/system.h: protoized. + +2004-03-12 Karl Berry + + * makeinfo/sectioning.c (sectioning_underscore): don't segfault when + generating xml if @top arg was empty. Report from Pat. + +2004-03-11 Karl Berry + + * doc/texinfo.tex (\pdfoutput): check also for \relax and 0, not + just \undefined, in case pdftex is being run in dvi mode. + Reported by Thomas Esser. + + * lib/Makefile.am (libtxi_a_SOURCES): add getopt_int.h. + +2004-03-11 Alper Ersoy + + * makeinfo/html.c (add_escaped_anchor_name): removed unnecessary + ampersand check. + (fix_filename): removed size calculation and memory reallocation for + filename as it is already PATH_MAX bytes. Added a check so we don't + cross PATH_MAX boundary while expanding not-isalnum to hex values. + + * makeinfo/toc.c (toc_add_entry): generate links following html cross + refs proposal from Patrice Dumas. + +2004-03-11 Alper Ersoy + + * makeinfo/makeinfo.h: changed URL_SAFE_CHAR to isalnum. + + * makeinfo/html.c (add_escaped_anchor_name, add_anchor_name) + (fix_filename): generate links following html cross refs proposal + from Patrice Dumas. + + * makeinfo/xref.c (cm_xref): tweaked references to external manuals, + to better follow html cross refs proposal. + +2004-03-08 Karl Berry + + * pretest version 4.6.90. + + * makeinfo/Makefile.am (makeinfo_SOURCES): include multi.h. + * makeinfo/cmds.c (cm_verb): avoid spurious warning. + +2004-03-06 Alper Ersoy + + * makeinfo/lang.c (cm_special_char): call add_encoded_char for Info + output too. + +2004-03-01 Alper Ersoy + + * makeinfo/cmds.c (cm_minus): use minus entity for HTML too. + +2004-03-01 Alper Ersoy + + * makeinfo/makeinfo.c (reader_loop): disable multiple dashes and + quotes entity substitution for HTML and XML, if escape_html is not + true. + +2004-03-01 Alper Ersoy + + * util/texinfo.dtd: added math element and updated footnote. + +2004-03-01 Alper Ersoy + + * makeinfo/xml.c (xml_insert_footnote): start if not already + started. + +2004-03-01 Alper Ersoy + + * makeinfo/index.c (index_add_arg): make entry node name 'Footnotes' + if the output format is non-split HTML, and we are handling footnotes. + + * makeinfo/footnote.c (output_pending_notes): added anchor at the + start of footnotes block for the non-split HTML output, so @printindex + can refer to that point as the nodename. + +2004-03-01 Alper Ersoy + + * makeinfo/defun.c (defun_internal): use var element for HTML, instead + of i. + +2004-03-01 Alper Ersoy + + * makeinfo/makeinfo.c (cm_image): reset filling_enable to its previous + state after getting the cookie done. + +2004-03-01 Alper Ersoy + + * makeinfo/makeinfo.c (cm_image): insert magic cookie only if there's + a bitmap file (if all we have is a text file, skip the cookie.) + +2004-02-29 Alper Ersoy + + * makeinfo/node.c (cm_node): moved node order handling to ... + (remember_node): here. + +2004-02-29 Alper Ersoy + + * makeinfo/multi.c (draw_horizontal_separator): insert a space before + the newline so it looks different than @subsection's. + +2004-02-29 Alper Ersoy + + * makeinfo/makeinfo.c (insert): do not strip trailing whitespace in + multitables. + +2004-02-29 Alper Ersoy + + * makeinfo/makeinfo.c (execute_string): removed XML tag balance + checks. + +2004-02-28 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion, end_insertion): for rawxml, + rawhtml and rawdocbook blocks, change the state of escaping depending + on raw_output_block in order to avoid problems when these blocks are + used within a @rmacro. + +2004-02-28 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): for quotation use + default_indentation_increment. + +2004-02-28 Alper Ersoy + + * makeinfo/makeinfo.c (info_trailer): call current_document_encoding + here too. + +2004-02-28 Alper Ersoy + + * makeinfo/lang.h: new variable unknown_encoding. + + * makeinfo/lang.c (cm_documentencoding): save and use the encoding + argument even if it's unknown. + + * makeingo/html.c (html_output_head): call current_document_encoding + instead of checking document_encoding_code. + +2004-02-28 Alper Ersoy + + * makeinfo/float.c (cm_listoffloats): simplified entry generation. + +2004-02-28 Alper Ersoy + + * makeinfo/files.h: new members node_order and index_order in + DELAYED_WRITE struct. + + * makeinfo/files.c (register_delayed_write): save current node and + index order. + (handle_delayed_writes): update tag_table positions and index line + numbers by comparing orders, not line numbers they are defined. + + * makeinfo/index.c: made index_counter not static and ... + * makeinfo/index.h: extern. + + * makeinfo/node.h: new member order in TAG_ENTRY struct. + + * makeinfo/node.c (cm_node): keep the order of the node entry. + +2004-02-27 Karl Berry + + * util/gendocs.sh: generate ASCII in static file, not stdout, so + toc/index can get written. + + * util/gendocs_template: XHTML version from + http://www.gnu.org/boilerplate.html, via John Darrington + , 9 Jan 2004 07:24:27 +0800. + +2004-02-27 Jan Nieuwenhuizen + + * doc/texinfo.txi (Image Syntax): Update. + + * makeinfo/makeinfo.c (cm_image): Only insert a period between the + image's NAME and EXTENSION as a second guess, to retain backward + compatibility. + +2004-02-27 Alper Ersoy + + * makeinfo/xml.c (xml_insert_element_with_attribute): if we are + closing either TABLEITEM, ITEM or DEFINITIONITEM during string + execution, update relevant state. + +2004-02-27 Alper Ersoy + + * makeinfo/makeinfo.c (execute_string): moved state updates below + insertion and element stack checks, so any code executed in those + checks will be aware of executing_string. + +2004-02-27 Alper Ersoy + + * makeinfo/xml.c (xml_insert_docbook_image): for Docbook, if paragraph + is open, use inlinemediaobject instead of mediaobject in an + informalfigure. + (xml_insert_element_with_attribute): indent after informalfigure. + +2004-02-27 Alper Ersoy + + * makeinfo/xml.c: + * makeinfo/xml.h: new element INLINEIMAGE. + + * makeinfo/makeinfo.c (cm_image): for XML, use INLINEIMAGE or IMAGE + depending on paragraph state. + +2004-02-27 Alper Ersoy + + * makeinfo/makeinfo.c (cm_image): for Info, enclose text image in + brackets if @image is used inline (ie. paragraph is open). + +2004-02-27 Alper Ersoy + + * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): start paragraph for + Info too. + +2004-02-27 Alper Ersoy + + * makeinfo/makeinfo.c (cm_image): for HTML, if paragraph is not open, + enclose image in a
block. + +2004-02-27 Alper Ersoy + + * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): insert

for HTML. + +2004-02-26 Alper Ersoy + + * util/texinfo.dtd: moved verbatim to █. + +2004-02-25 Stepan Kasal + + A first step towards general cleanup of sectioning macros: + * doc/texinfo.tex (\genhead): A generalized version of ... + (\numhead, \apphead, unnmhead): ... these, which uses ... + (\chapheadtype, \unmlevel, \maxseclevel): ... these "variables". + +2004-02-25 Karl Berry + + * makeinfo/index.c (cm_printindex): insert cookie in Info output + for benefit of Info readers. + +2004-02-26 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): removed obsolete Docbook + indentation work-around. + +2004-02-25 Alper Ersoy + + * makeinfo/insertion.c (cm_author): new function. + (cm_titlepage_cmds): removed @author parts. + + * makeinfo/cmds.c: made @author call cm_author. + +2004-02-24 Karl Berry + + * doc/texinfo.txi: avoid duplicate index entries within the same + node (from Alper): syncodeindex, lines 9627 and 9633 TEXINPUTS, + lines 14157 and 14202 texinfo-format-buffer 15131 and 15159 + texinfo-format-region 15130 and 15149 + +2004-02-24 Alper Ersoy + + * makeinfo/makeinfo.h: new variable example_indentation_increment. + + * makeinfo/cmds.c (set_default_indentation_increment): renamed to + set_example_indentation_increment. + (cm_exampleindent): call set_example_indentation_increment. + + * makeinfo/insertion.c (begin_insertion, end_insertion): @example, + @display and the like now rely on example_indentation_increment. + +2004-02-24 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion, end_insertion): @float should + not play with indentation. + +2004-02-24 Alper Ersoy + + * makeinfo/float.c (cm_listoffloats): check if we are crossing the + caption boundaries looking for a space to break at. + +2004-02-24 Karl Berry + + * makeinfo/makeinfo.c: TEXINFO_OUTPUT -> TEXINFO_OUTPUT_FORMAT, + after discussion with tar maintainer. + +2004-02-20 Stepan Kasal + + * doc/texinfo.tex (\infochapter, \infosection, etc.): these stubs + of sectioning commands nuked. + +2004-02-24 Stepan Kasal + + * doc/texinfo.tex (\centerchap): Fixed to work again, + don't open group. + (\centerparameters): New macro. + (\centerchfplain): Nuked. + + The following continues with prosecution of @setchapterstyle{open}: + * doc/texinfo.tex (\chfplain): renamed to \chapmacro. + (\CHAPFplain): Nuked. + (\setchapterstyle): Moved next to its deprecated friends. + +2004-02-24 Karl Berry + + * doc/texinfo.tex (\dofloat): start a paragraph. + +2004-02-24 Alper Ersoy + + * makeinfo/insertion.c (cm_caption): check if the innermost + environment is @float. + +2004-02-24 Alper Ersoy + + * info/session.c (info_menu_digit): if the menu entry has a line + number, go to that line. + +2004-02-24 Alper Ersoy + + * info/info.c (main): make sure dir file is not listed for option + --where. + +2004-02-24 Alper Ersoy + + * makeinfo/xml.c (xml_insert_element_with_attribute, xml_add_char) + (xml_begin_table, xml_end_table, xml_begin_table_item) + (xml_continue_table_item): separated ITEM and TABLEITEM states to + handle @table environments better. + +2004-02-24 Alper Ersoy + + * util/texinfo.dtd: added float and friends, updated tableitem and + Inline.reference. + +2004-02-23 Karl Berry + + * doc/texinfo.txi (Structuring Command Types): slightly more info + about headings. Fix other references, too. + + * Makefile.am (EXTRA_DIST): explicitly list every file in djgpp, + so that the CVS directory is not included in the dist.tar.gz. + +2004-02-23 Arnold D. Robbins + + * makeinfo/cmds.c (cm_code): For @samp, using single quotes instead of + double quotes, to match TeX output more closely. + +2004-02-23 Alper Ersoy + + * makeinfo/index.h: new output_file and entry_number members in + index_elt struct. + + * makeinfo/index.c (index_add_arg, cm_printindex): rewrote hyperlink + generation for HTML to avoid duplicate anchors, and to work with + splitting enabled. + +2004-02-20 Alper Ersoy + + * makeinfo/float.c (cm_listoffloats): create HTML hyperlinks with + add_word instead of using @ref to avoid problems with commas in + captions. + +2004-02-20 Alper Ersoy + + * makeinfo/node.c (cm_node): remove whitespace before the node + separator sequence. + +2004-02-20 Alper Ersoy + + * makeinfo/sectioning.c (handle_enum_increment): do not increment + counters for ENUM_SECT_NO heading commands (ie. @unnumbered, + @majorheading, etc.) + +2004-02-20 Alper Ersoy + + * makeinfo/multi.c (multitable_item): unset hsep if item command is + not @headitem. + +2004-02-19 Karl Berry + + * doc/texinfo.tex: More hyphenation exceptions. + (\author, \quotation): implement @author inside + @quotation, for attribution purposes. + +2004-02-19 Alper Ersoy + + * makeinfo/cmds.c (cm_exampleindent): fixed paragraph handling after + @exampleindent lines. + +2004-02-19 Alper Ersoy + + * makeinfo/index.c (index_add_arg): create an anchor where @index is + used in HTML documents. + (cm_printindex): make index text an hyperlink to the created anchor. + +2004-02-19 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion): skip empty lines following + @table, @ftable, @vtable and @itemize lines. + +2004-02-18 Karl Berry + + * lib/substring.c, + * lib/xexit.c, + * lib/xmalloc.c, + * lib/system.h: ANSI-fy. (Other lib files come from gnulib.) + + * doc/texinfo.txi (Definition Commands): describe the argument/@var + situation more accurately. + + * doc/texinfo.txi (Definition Commands): explicitly document the + implicit index entry creation in all cases. + + * doc/texinfo.txi (Printing Indices & Menus, Indices, Predefined + Indices): remove redundancies, make different + purposes clear, etc. + +2004-02-18 Alper Ersoy + + * makeinfo/xml.h: + * makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id): + removed these functions. + + * makeinfo/xref.c (cm_xref): do not call xml_get_assoc_for_id. + + * makeinfo/sectioning.c (sectioning_underscore): added xreflabel + attribute to @unnumbered for Docbook. + +2004-02-18 Alper Ersoy + + * makeinfo/xref.c (cm_xref): for Docbook, use lowercase ``see'' when + printing index. + +2004-02-18 Alper Ersoy + + * makeinfo/xml.c (xml_insert_indexentry): removed ``see'' from index + entries as cm_xref takes care of it. + +2004-02-17 Karl Berry + + * doc/info.texi (Help-Int): mention the new line number feature. + * doc/texinfo.txi (Indices): plural correction. + * doc/info-stnd.texi (Invoking Info): matche typo. + (Searching Commands): grammar. + * info/session.c (info_menu_or_ref_item): need to subtract 1 from + the actual line number to get to the right place, + don't really know why. + + * makeinfo/makeinfo.c, info/info.c, util/texindex.c, + utils/install-info.c, util/texi2dvi: update copyright year to + 2004, and do not mark copyright line for translation, since + international law says to always use the English word "copyright". + +2004-02-17 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): use add_html_block_elt instead + of add_word for

ending @example and the like. + * makeinfo/float.c (cm_listoffloats): use add_html_block_elt for
  • . + +2004-02-17 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion): do not expand @copying for + HTML and Info too. + (cm_insert_copying): expand copying_text for all formats here. + + * makeinfo/html.c (html_output_head): use text_expansion for copying + text. + +2004-02-17 Karl Berry + + * doc/texinfo.txi (float): mention @multitable and @image + as typical contents. From Arnold. + +2004-02-17 Alper Ersoy + + * makeinfo/xml.c (xml_insert_element_with_attribute): removed check + to see if current element contains para before calling xml_start_para, + as that check is performed in xml_start_para too. + +2004-02-17 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): indent float caption. + +2004-02-17 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion): for XML and Docbook, do not + expand @copying text. Instead of calling @anchor, use for XML. + (cm_copying): removed ugly copying_text manipulation for Docbook. + Warn if there is no @copying before @insertcopying. + + * makeinfo/xml.c: made floats contain para. + (xml_start_para): check if current element can contain para. + (xml_add_char): removed @copying checks. + +2004-02-17 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): if the output format is XML, + do not call close_insertion_paragraph after @end menu. + +2004-02-17 Alper Ersoy + + * makeinfo/xml.c (xml_insert_element_with_attribute): indentation + fixes for @multitable. + +2004-02-17 Alper Ersoy + + * makeinfo/multi.c (do_multitable): remove trailing newline when the + output format is Docbook or XML, as output_paragraph becomes unusable + later for xml_indent during select_output_environment. + +2004-02-16 Alper Ersoy + + * makeinfo/cmds.c (cm_bye): do not call flush_output as text appended + by convert_from_loaded_file may need to play with output_paragraph. + +2004-02-16 Alper Ersoy + + * makeinfo/xml.c (xml_end_document): insert newline after + only if indentation is disabled (otherwise xml_indent takes care of + the newline.) + (xml_insert_indexentry): disable warnings when executing implicit + @xref commands for Docbook, otherwise makeinfo will warn about + missing punctuation. + +2004-02-16 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion): eat one newline after + @xml/@docbook blocks for proper indentation. + +2004-02-16 Alper Ersoy + + * makeinfo/cmds.c (cm_center): fixed line wrapping after the @center + command. + +2004-02-15 Alper Ersoy + + * makeinfo/xml.c (xml_begin_document): disabled warnings around the + implicit register_delayed_write("@documentencoding") call. + +2004-02-15 Alper Ersoy + + * makeinfo/insertion.c (begin_insertion, end_insertion): when handling + @xml, @html and @docbook blocks, do not touch para elements, and keep + whitespace as-is. + +2004-02-15 Alper Ersoy + + * makeinfo/xml.h: made xml_keep_space extern. + +2004-02-15 Alper Ersoy + + * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): implicitly start + para element for Docbook and XML. + +2004-02-15 Karl Berry + + * doc/texinfo.tex (\hyphenation): add more hyphenation exceptions, + gleaned from the log in TUGboat. + * doc/info-stnd.texi: document new option --where. + * info/info.c (main): in print_where_p case, ensure we don't try + to print NULL. + +2004-02-14 Karl Berry + + * doc/texinfo.tex (\addtokens): had two identical definitions, + remove one. + (\maketoks): no space token after |ENDTOKS|, + although I guess it hasn't mattered. + (\entry): make clear what is the argument to + \pdfgettoks and what is output. + (\appendtomacro): use our own token registers, + for safety. + (\listoffloatsdoentry): fully expand the page + number, and don't expand the lof text. + +2004-02-14 Alper Ersoy + + * makeinfo/cmds.c (cm_strong): + * makeinfo/xml.c (xml_begin_index): cast output_paragraph to char, to + avoid warnings with -pedantic. + +2004-02-13 Alper Ersoy + + * makeinfo/cmds.c: + * makeinfo/cmds.h: + * makeinfo/defun.c: + * makeinfo/defun.h: + * makeinfo/files.c: + * makeinfo/files.h: + * makeinfo/float.c: + * makeinfo/float.h: + * makeinfo/footnote.c: + * makeinfo/footnote.h: + * makeinfo/html.c: + * makeinfo/html.h: + * makeinfo/index.c: + * makeinfo/index.h: + * makeinfo/insertion.c: + * makeinfo/insertion.h: + * makeinfo/lang.c: + * makeinfo/lang.h: + * makeinfo/macro.c: + * makeinfo/macro.h: + * makeinfo/makeinfo.c: + * makeinfo/makeinfo.h: + * makeinfo/multi.c: + * makeinfo/node.c: + * makeinfo/node.h: + * makeinfo/sectioning.c: + * makeinfo/sectioning.h: + * makeinfo/toc.c: + * makeinfo/toc.h: + * makeinfo/xml.c: + * makeinfo/xml.h: + * makeinfo/xref.c: + * makeinfo/xref.h: protoized functions. + +2004-02-13 Alper Ersoy + + * makeinfo/multi.h: new file. + +2004-02-13 Karl Berry + + * doc/texinfo.tex (\caption): make \long. + * doc/texinfo.txi (Nodes): mention that changing node names is bad. + (caption shortcaption, listoffloats): write these, finishing the + first cut at @float documentation. + +2004-02-12 Alper Ersoy + + * makeinfo/cmds.c (cm_verb): end @verb only if delimiter is followed + by a closing brace. + +2004-02-12 Alper Ersoy + + * makeinfo/lang.c (cm_accent_generic): warn if accented character is + whitespace. + +2004-02-12 Alper Ersoy + + * makeinfo/insertionc. (end_insertion): decrement current_indent + only if the output format is Info. + +2004-02-12 Alper Ersoy + + * makeinfo/insertion.c (end_insertion): adjusted caption styles for + label and type conditions. + (begin_insertion, end_insertion): indent first paragraphs inside + @float, even if first paragraph in a chapter. Increment/decrement + current_indent. + +2004-02-12 Alper Ersoy + + * makeinfo/tests/defxcond: look for `--' instead of `-'. + +2004-02-12 Karl Berry + + * makeinfo/float.c (cm_listoffloats): change warning wording. + +2004-02-11 Karl Berry + + * doc/texinfo.tex (\dofloat): initialize caption macros here, not + globally. + (\Efloat): rewrite for more consistent caption + line, matching documentation. + (\appendtomacro): new macro. + (\currentparindent): this \newdimen was not used; removed. + * doc/texinfo.txi (float): continue documenting. + + * makeinfo/files.c (register_delayed_write): change wording of msgs. + +2004-02-10 Karl Berry + + * makeinfo/defun.c: --- (which gets reduced to --) + instead of -- (which gets reduced to -). + Report from Akim Demaille , 09 Feb 2004 18:06:29 +0100. + +2004-02-09 Karl Berry + + * doc/texinfo.tex (\pickupwholefraction): allow the fraction to be + an integer without a decimal point, like `1'. Report from: Dumas + Patrice , 9 Feb 2004 16:46:30 +0100. + * makeinfo/multi.c (setup_multitable_parameters): compute width + and pass it, for clarity. + +2004-02-07 Alper Ersoy + + * makeinfo/insertion.c (cm_insert_copying): insert double newlines + instead of one in non XML outputs. + +2004-02-07 Alper Ersoy + + * makeinfo/cmds.c (cm_code): do not decrement in_fixed_width_font as + it gets decremented elsewhere. + +2004-02-07 Alper Ersoy + + * makeinfo/makeinfo.c (next_nonwhitespace_character): also check + global input_text since filestack does not contain it. + +2004-02-07 Alper Ersoy + + * makeinfo/makeinfo.c (next_nonwhitespace_character): go through the + whole filestack looking for the next character. + +2004-02-06 Karl Berry + + * doc/texinfo.tex (\indexnofonts): define \bullet .. \result, so + they can be used in @?index commands. + Report from: Akim Demaille , 06 Feb 2004 13:34:15 +0100. + +2004-02-05 Karl Berry + + * makeinfo/xref.c (add_xref_punctuation): if we insert anything, + make it a period. + (cm_xref): include command name in error message. + * doc/texinfo.txi (ref): mention generating a period, if needed. + Too many complaints when we made a warning for @ref not followed + by period or comma. + +2004-02-05 Alper Ersoy + + * info/info-utils.c (info_parse_node): look for ``(line '' instead of + skipping any non-digit characters. + +2004-02-05 Alper Ersoy + + * makeinfo/index.c (insert_index_output_line_no): made ``(line NNN)'' not + translatable for Info output. + +2004-02-03 Alper Ersoy + + * makeinfo/makeinfo.c (flush_output): increment node_line_number too. + + * makeinfo/makeinfo.h: new variable node_line_number to hold the last + output line number the current node. + + * makeinfo/nodes.c (cm_node): reset node_line_number just before the + node start cookie. + + * makeinfo/files.h: new node member in DELAYED_WRITE struct. + * makeinfo/files.c (register_delayed_write): save current node name if + there's one. + (handle_delayed_writes): adjust line numbers in indices only if the + output is plaintext, or the index entry appears in the changed node. + + * makeinfo/index.c (index_add_arg, cm_printindex): use + node_line_number instead of output_line_number if the output is an + Info file. + +2004-02-03 Alper Ersoy + + * info/info-utils.h: new line_number member in REFERENCE struct. + + * info/info-utils.c (info_parse_node): parse (line ...) strings + from menu items. + (info_references_internal): save parsed line number in the entry. + + * info/session.c (info_menu_of_ref_item): if selected entry has a line + number associated with it, jump to that line after updating window. + +2004-02-02 Alper Ersoy + + * makeinfo/xml.c (add_xref_punctuation): new function that inserts + necessary punctuation after @ref and @pxref commands. + (cm_xref): call add_xref_punctuation when multiple parameters are + given, make use of next_nonwhitespace_character function in the END + case. + (cm_ref): do not call cm_xref in the END case. + +2004-02-02 Alper Ersoy + + * makeinfo/makeinfo.c (next_nonwhitespace_character): new function. + +2004-02-02 Alper Ersoy + + * makeinfo/cmds.c (cm_code): call xml_start_para instead of tweaking + in_fixed_width_font, and use entities rather than quotes. + +2004-02-02 Arnold D. Robbins + + * makeinfo/cmds.c (cm_TeX, cm_LaTeX): Add docbook support. + (cm_code): Add opening and closing single quotes for @samp in the + Docbook output. + * makeinfo/xml.c (xml_begin_document): Add `tex' and `latex' entities. + * makeinfo/xref.c (cm_xref): Add `See' and `see' strings for docbook + and xml. + +2004-01-31 Alper Ersoy + + * makeinfo/makeinfo.c (main): fixed ``--option: makeinfo'' messages. + +2004-01-31 Alper Ersoy + + * makeinfo/cmds.c (cm_TeX, cm_LaTeX): really ignore the arguments as + the warning suggests. + +2004-01-31 Alper Ersoy + + * makeinfo/cmds.c (cm_TeX, cm_LaTeX): warn if there are any arguments. + +2004-01-31 Alper Ersoy + + * makeinfo/files.c (pop_path_from_include_path): do not mock with + include_files_path address directly, as it confuses realloc. + +2004-01-31 Alper Ersoy + + * makeinfo/makeinfo.c (main, usage): new --output-indent option. + +2004-01-31 Alper Ersoy + + * makeinfo/xml.c (xml_add_char): break long lines in paragraphs + when the output format is Docbook. + +2004-01-31 Alper Ersoy + + * makeinfo/files.c (prepend_to_include_path, append_to_include_path) + (pop_path_from_include_path): new functions to manipulate + include_files_path. + + * makeinfo/makeinfo.c (convert_from_file): prepend the loaded file's + path to include_files_path in order to make relative include files to + be found, then remove afterwards. + (main): make use of new functions for -I and -P options. + +2004-01-30 Alper Ersoy + + * util/texinfo.dtd: added exdent element. + +2004-01-29 Alper Ersoy + + * makeinfo/makeinfo.c (convert_from_loaded_file): call + xml_begin_document after opening the output stream for writing. + + * makeinfo/files.c (register_delayed_write): use delayed_command + instead of command in messages as it may differ from the actual + command name. Check the usability of current_output_filename. + +2004-01-28 Karl Berry + + * doc/texinfo.txi (HTML Splitting): describe when two nodes are + written to one output file. + + * doc/texinfo.tex (\TeX): \edef using original \TeX definition. + +2004-01-28 Alper Ersoy + + * makeinfo/defun.c (process_defun_args, defun_internal): + * makeinfo/insertion.c (begin_insertion, end_insertion): execute XML + only blocks for Docbook also. + + * makeinfo/xml.c: added Docbook elements for definition commands. + (xml_begin_def_term): for Docbook, generate an Info-like @defun line. + (xml_insert_element_with_attribute): do not indent DEFINITION and + DEFINITIONTERM when the output is Docbook. + +2004-01-25 Alper Ersoy + + * makeinfo/xml.c: changed majorheading and the like with bridgehead + for Docbook. + + * makeinfo/sectioning.c (sectioning_underscore): do not start sections + with @majorheading and the like, only insert title. + +2004-01-25 Alper Ersoy + + * makeinfo/xml.c: + * makeinfo/xml.h: new element EXDENT. + + * makeinfo/cmds.c (cm_comment): save the paragraph state. + (cm_exdent): use EXDENT element for XML, LINEANNOTATION for Docbook. + + * makeinfo/html.c (html_output_head): + * makeinfo/xml.c (xml_begin_document): erase output_paragraph. + + * makeinfo/insertion.c (begin_insertion): canonize whitespace around + copying text. + (cm_insert_copying): comment fixes. Do not append newline if the + output is Docbook. + + * makeinfo/makeinfo.c (close_paragraph): return if Docbook too. + + * makeinfo/sectioning.c (sectioning_underscore): removed newline from + the end of titles. + + * makeinfo/lang.c (cm_documentencoding): insert encoding attribute + into XML and Docbook prologs when handling delayed writes. + + * makeinfo/xml.c (xml_begin_document): register a delayed write for + @documentencoding when writing the prolog. + (xml_end_para): removed docbook checks. + (xml_insert_element_with_attribute): skip indentation if + xml_keep_space is true, indent after table element. When the output + is Docbook, do not insert xml:space attribute, and do not remove from + the end of group element and keep_space blocks. + (xml_add_char): join lines in a paragraph for Docbook too. + +2004-01-24 Alper Ersoy + + * makeinfo/multi.c (out_char): simple use add_char for XML and Docbook + outputs too. + + * makeinfo/makeinfo.c (close_paragraph): just return when the output + format is XML. + + * makeinfo/makeinfo.h: new variable xml_indendation_increment. + + * makeinfo/cmds.c (cm_comment): insert a newline before the comment, + if there is not already one. + (cm_noindent_cmd): skip whitespace after the command. + + * makeinfo/xml.c: + * makeinfo/xml.h: new element DETAILMENU. + + * makeinfo/xml.c: menuentry and menucomment should not contain para. + (xml_indent, xml_indent_end_para): use xml_indentation_increment + value, and indent only if it is a positive number. + (xml_start_para): apply indentation for XML output too. + (xml_end_para): add newline if xml_indentation_increment is positive. + (xml_insert_element_with_attribute): major indentation fixes. + (xml_start_menu_entry): skip whitespace at the start of menu comments. + (xml_add_char): fixed paragraph detection in menus, and added a check + to detect multiple whitespaces after newline in menu comments. Do not + return when inside multitable to avoid concatenation of two lines + without a space char in between. + + * makeinfo/insertion.c (cm_insert_copying, cm_lisp, cm_smalllisp) + (cm_format, cm_smallformat, cm_display, cm_smalldisplay, cm_example) + (cm_smallexample): do not insert newline when the output is XML. + (end_insertion): ditto for the above mentioned block commands and + @group. Do not increment in_fixed_font for XML output. + (begin_insertion, end_insertion): enclose @detailmenu in a detailmenu + element. + + * util/texinfo.dtd: added detailmenu, and fixed menucomment and + tableitem definitions. + +2004-01-23 Alper Ersoy + + * util/Makefile.am: substituted catalog in EXTRA_DIST with catalog.in, + and added catalog to CLEANFILES. + +2004-01-23 Alper Ersoy + + * makeinfo/files.h: new input_filename member in delayed_write struct. + + * makeinfo/files.c (register_delayed_write): added input_filename to + saved variables, and adjusted line_number saving. + (handle_delayed_writes): set input_filename and line_number for + correct warning and error messages. + +2004-01-23 Alper Ersoy + + * makeinfo/float.c (cm_listoffloats): + * makeinfo/index.c (cm_printindex): decrement line_number only if + not handling delayed writes. + + * makeinfo/float.c (float_type_exists): check if float has a label. + +2004-01-23 Alper Ersoy + + * makeinfo/makeinfo.c (main): updated copyright year in --version text. + +2004-01-23 Alper Ersoy + + * makeinfo/tests/Makefile.am: commented top2.texi to fix distcheck. + +2004-01-23 Alper Ersoy + + * makeinfo/xml.c (xml_begin_document): use PUBLIC id for TexinfoML + instead of SYSTEM. + +2004-01-23 Alper Ersoy + + * makeinfo/Makefile.am: removed texinfo.dtd and texinfo.xsl and ... + + * util/Makefile.am: added here. + +2004-01-23 Alper Ersoy + + * utils/catalog.in: catalog file for texinfo.dtd. + +2004-01-23 Alper Ersoy + + * makeinfo/texinfo.dtd: + * makeinfo/texinfo.xsl: moved to ... + + * utils/texinfo.dtd: + * utils/texinfo.xsl: here. + +2004-01-23 Alper Ersoy + + * makeinfo/texinfo.dtd: added ordm and ordf entities and dmn element. + updated indexterm location in tables. + +2004-01-22 Karl Berry + + * doc/texinfo.tex (\dofloat): handle empty float type and empty + float label separately, matching makeinfo behavior. + * doc/texinfo.txi (Floats): new section, not yet fully written. + (Special Displays): new chapter to hold it. + (Footnotes, Images): move these sections to the new chapter. + (@@-Command Summary): list new commands. + * NEWS: mention new commands here too. + +2004-01-21 Alper Ersoy + + * makeinfo/xml.c (xml_begin_index): move data to a temporary location + for delayed use and insert back when handling delayed writes. + + * makeinfo/index.c (cm_printindex): call xml_begin_index when not + handling delayed writes too. + +2004-01-19 Karl Berry + + * doc/texinfo.tex: doc fix. + +2004-01-18 Karl Berry + + * doc/texinfo.tex (\commondummies): dummify @tie and remaining + @ commands. + (\tocindent): reduce to 15pt to match \defaultparindent. + (\setref): use XR as control sequence prefix + instead of just X; seems nicer. Change calls. + + Finish implementing @listoffloats: + (\xrdef): keep lists of each float type. + (\dofloat): save the floattype in the aux file. + (\Efloat): write the lof text to the aux file. + (\iffloat, \doiffloat, \listoffloats, + \listoffloatsdo, \listoffloatsentry): new macros. + * bootstrap: autoheader should come after aclocal, I think. + +2004-01-17 Karl Berry + + * doc/texinfo.tex (\doitemize): rename from \itemizey. + (\itemizeitem): do not set \parskip=0 if the last + thing was a \nobreak (e.g., from \sectionheading). + Report from: Jesper Harder , + 17 Jan 2004 22:03:51 +0100. + + * doc/texinfo.txi (email): no angle brackets in TeX output. + Report from: Jesper Harder , + 17 Jan 2004 21:03:21 +0100. + +2004-01-17 Alper Ersoy + + * makeinfo/float.c (cm_listoffloats): Prefixed captions with + float_type. For HTML, used an
  • \n" : "\n"); + } + + /* The ending of one of these insertions always marks the + start of a new paragraph, except for the XML output. */ + if (!xml || docbook) + close_insertion_paragraph (); + + /* closes paragraph without messing with

    . */ + if (html && type != quotation) + paragraph_is_open = 0; + break; + + case table: + case ftable: + case vtable: + current_indent -= default_indentation_increment; + if (html) + add_html_block_elt ("\n"); + close_insertion_paragraph (); + break; + + case itemize: + current_indent -= default_indentation_increment; + if (html) + add_html_block_elt ("\n"); + close_insertion_paragraph (); + break; + + case flushright: + force_flush_right--; + if (html) + add_html_block_elt ("
    \n"); + close_insertion_paragraph (); + break; + + /* Handle the @defun insertions with this default clause. */ + default: + { + int 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 deftypecv: + case deftypefn: + case deftypevr: + case defcv: + case defop: + case deftypemethod: + case deftypeop: + case deftypeivar: + if (html) + { + if (paragraph_is_open) + add_html_block_elt ("

    "); + /* close the div and blockquote which has been opened in defun.c */ + if (!rollback_empty_tag ("blockquote")) + add_html_block_elt (""); + add_html_block_elt ("\n"); + } + if (xml) + xml_end_definition (); + 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 (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 == rawdocbook + || insertion_stack->insertion == rawhtml + || insertion_stack->insertion == rawxml + || insertion_stack->insertion == rawtex)) + break; + else + { + const char *offender = insertion_type_pname (insertion_stack->insertion); + + file_line_error (insertion_stack->filename, + insertion_stack->line_number, + _("No matching `%cend %s'"), COMMAND_PREFIX, + offender); + pop_insertion (); + } + } + line_number = real_line_number; +} + +/* Insertion (environment) commands. */ + +void +cm_quotation (void) +{ + /* We start the blockquote element in the insertion. */ + begin_insertion (quotation); +} + +void +cm_example (void) +{ + if (docbook && current_insertion_type () == floatenv) + xml_begin_docbook_float (FLOATEXAMPLE); + + if (xml) + { + /* Rollback previous newlines. These occur between + and . */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + + xml_insert_element (EXAMPLE, START); + + /* Make sure example text is starting on a new line + for improved readability. */ + if (docbook) + add_char ('\n'); + } + + begin_insertion (example); +} + +void +cm_smallexample (void) +{ + if (docbook && current_insertion_type () == floatenv) + xml_begin_docbook_float (FLOATEXAMPLE); + + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (SMALLEXAMPLE, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (smallexample); +} + +void +cm_lisp (void) +{ + if (docbook && current_insertion_type () == floatenv) + xml_begin_docbook_float (FLOATEXAMPLE); + + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (LISP, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (lisp); +} + +void +cm_smalllisp (void) +{ + if (docbook && current_insertion_type () == floatenv) + xml_begin_docbook_float (FLOATEXAMPLE); + + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (SMALLLISP, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (smalllisp); +} + +void +cm_cartouche (void) +{ + if (docbook && current_insertion_type () == floatenv) + xml_begin_docbook_float (CARTOUCHE); + + if (xml) + xml_insert_element (CARTOUCHE, START); + begin_insertion (cartouche); +} + +void +cm_copying (void) +{ + begin_insertion (copying); +} + +/* Not an insertion, despite the name, but it goes with cm_copying. */ +void +cm_insert_copying (void) +{ + if (!copying_text) + { + warning ("@copying not used before %s", command); + return; + } + + /* It is desirable that @copying is set early in the input file. For + Info output, we write the copying text out right away, and thus it + may well be the first thing in the output, and we want the file + header first. The special case in add_char has to check for + executing_string, so it won't be effective. Thus, do it explicitly. */ + output_head (); + execute_string ("%s", copying_text); + + if (!xml && !html) + { + add_word ("\n\n"); + /* Update output_position so that the node positions in the tag + tables will take account of the copying text. */ + flush_output (); + } +} + +void +cm_format (void) +{ + if (xml) + { + if (docbook && xml_in_bookinfo) + { + xml_insert_element (ABSTRACT, START); + xml_in_abstract = 1; + } + else + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (FORMAT, START); + if (docbook) + add_char ('\n'); + } + } + begin_insertion (format); +} + +void +cm_smallformat (void) +{ + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (SMALLFORMAT, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (smallformat); +} + +void +cm_display (void) +{ + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (DISPLAY, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (display); +} + +void +cm_smalldisplay (void) +{ + if (xml) + { + /* See cm_example comments about newlines. */ + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') + output_paragraph_offset--; + xml_insert_element (SMALLDISPLAY, START); + if (docbook) + add_char ('\n'); + } + + begin_insertion (smalldisplay); +} + +void +cm_direntry (void) +{ + if (html || xml || no_headers) + command_name_condition (); + else + begin_insertion (direntry); +} + +void +cm_documentdescription (void) +{ + if (html) + begin_insertion (documentdescription); + + else if (xml) + { + xml_insert_element (DOCUMENTDESCRIPTION, START); + begin_insertion (documentdescription); + } + + else + command_name_condition (); +} + + +void +cm_itemize (void) +{ + 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 (enum insertion_type 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 (void) +{ + do_enumeration (enumerate, "1"); +} + + + +/* Handle verbatim environment: + find_end_verbatim == 0: process until end of file + find_end_verbatim != 0: process until 'COMMAND_PREFIXend verbatim' + or end of file + + No indentation is inserted: this is verbatim after all. + If you want indentation, enclose @verbatim in @example. + + Thus, we cannot simply copy the input to the output, since the + verbatim environment may be encapsulated in an @example environment, + for example. */ + +void +handle_verbatim_environment (int find_end_verbatim) +{ + int character; + int seen_end = 0; + int save_filling_enabled = filling_enabled; + int save_inhibit_paragraph_indentation = inhibit_paragraph_indentation; + + if (!insertion_stack) + close_single_paragraph (); /* no blank lines if not at outer level */ + inhibit_paragraph_indentation = 1; + filling_enabled = 0; + in_fixed_width_font++; + last_char_was_newline = 0; + + if (html) + { /* If inside @example, we'll be preceded by the indentation + already. Browsers will ignore those spaces because we're about + to start another
     (don't ask me).  So, wipe them out for
    +         cleanliness, and re-insert.  */
    +      int i;
    +      kill_self_indent (default_indentation_increment);
    +      add_html_block_elt ("
    ");
    +      for (i = current_indent; i > 0; i--)
    +        add_char (' ');
    +    }
    +  else if (xml)
    +    {
    +      xml_insert_element (VERBATIM, START);
    +    }
    +
    +  if (find_end_verbatim)
    +    { /* Ignore the remainder of the @verbatim line.  */
    +      char *junk;
    +      get_rest_of_line (0, &junk);
    +      free (junk);
    +    }
    +  
    +  while (input_text_offset < input_text_length)
    +    {
    +      character = curchar ();
    +
    +      if (character == '\n')
    +        line_number++;
    +
    +      /* Assume no newlines in END_VERBATIM. */
    +      else if (find_end_verbatim && (character == COMMAND_PREFIX) /* @ */
    +          && (input_text_length - input_text_offset > sizeof (END_VERBATIM))
    +          && !strncmp (&input_text[input_text_offset+1], END_VERBATIM,
    +                       sizeof (END_VERBATIM)-1))
    +        {
    +          input_text_offset += sizeof (END_VERBATIM);
    +          seen_end = 1;
    +          break;
    +        }
    +
    +      if (html && character == '&' && escape_html)
    +        add_word ("&");
    +      else if (html && character == '<' && escape_html)
    +        add_word ("<");
    +      else
    +        add_char (character);
    +
    +      input_text_offset++;
    +    }
    +
    +  if (find_end_verbatim && !seen_end)
    +    warning (_("end of file inside verbatim block"));
    +
    +  if (html)
    +    { /* See comments in example case above.  */
    +      kill_self_indent (default_indentation_increment);
    +      add_word ("
    "); + } + else if (xml) + { + xml_insert_element (VERBATIM, END); + } + + in_fixed_width_font--; + filling_enabled = save_filling_enabled; + inhibit_paragraph_indentation = save_inhibit_paragraph_indentation; +} + +void +cm_verbatim (void) +{ + handle_verbatim_environment (1); +} + +void +cm_table (void) +{ + begin_insertion (table); +} + +void +cm_multitable (void) +{ + begin_insertion (multitable); /* @@ */ +} + +void +cm_ftable (void) +{ + begin_insertion (ftable); +} + +void +cm_vtable (void) +{ + begin_insertion (vtable); +} + +void +cm_group (void) +{ + begin_insertion (group); +} + +/* Insert raw HTML (no escaping of `<' etc.). */ +void +cm_html (int arg) +{ + if (process_html) + begin_insertion (rawhtml); + else + command_name_condition (); +} + +void +cm_xml (int arg) +{ + if (process_xml) + begin_insertion (rawxml); + else + command_name_condition (); +} + +void +cm_docbook (int arg) +{ + if (process_docbook) + begin_insertion (rawdocbook); + else + command_name_condition (); +} + +void +cm_ifdocbook (void) +{ + if (process_docbook) + begin_insertion (ifdocbook); + else + command_name_condition (); +} + +void +cm_ifnotdocbook (void) +{ + if (!process_docbook) + begin_insertion (ifnotdocbook); + else + command_name_condition (); +} + +void +cm_ifhtml (void) +{ + if (process_html) + begin_insertion (ifhtml); + else + command_name_condition (); +} + +void +cm_ifnothtml (void) +{ + if (!process_html) + begin_insertion (ifnothtml); + else + command_name_condition (); +} + + +void +cm_ifinfo (void) +{ + if (process_info) + begin_insertion (ifinfo); + else + command_name_condition (); +} + +void +cm_ifnotinfo (void) +{ + if (!process_info) + begin_insertion (ifnotinfo); + else + command_name_condition (); +} + + +void +cm_ifplaintext (void) +{ + if (process_plaintext) + begin_insertion (ifplaintext); + else + command_name_condition (); +} + +void +cm_ifnotplaintext (void) +{ + if (!process_plaintext) + begin_insertion (ifnotplaintext); + else + command_name_condition (); +} + + +void +cm_tex (void) +{ + if (process_tex) + begin_insertion (rawtex); + else + command_name_condition (); +} + +void +cm_iftex (void) +{ + if (process_tex) + begin_insertion (iftex); + else + command_name_condition (); +} + +void +cm_ifnottex (void) +{ + if (!process_tex) + begin_insertion (ifnottex); + else + command_name_condition (); +} + +void +cm_ifxml (void) +{ + if (process_xml) + begin_insertion (ifxml); + else + command_name_condition (); +} + +void +cm_ifnotxml (void) +{ + if (!process_xml) + begin_insertion (ifnotxml); + else + command_name_condition (); +} + + +/* Generic xrefable block with a caption. */ +void +cm_float (void) +{ + begin_insertion (floatenv); +} + +void +cm_caption (int arg) +{ + char *temp; + + /* This is a no_op command for most formats, as we handle it during @float + insertion. For XML though, we handle it here to keep document structure + as close as possible, to the Texinfo source. */ + + /* Everything is already handled at START. */ + if (arg == END) + return; + + /* Check if it's mislocated. */ + if (current_insertion_type () != floatenv) + line_error (_("@%s not meaningful outside `@float' environment"), command); + + get_until_in_braces ("\n@end float", &temp); + + if (xml) + { + int elt = STREQ (command, "shortcaption") ? SHORTCAPTION : CAPTION; + xml_insert_element (elt, START); + if (!docbook) + execute_string ("%s", temp); + xml_insert_element (elt, END); + } + + free (temp); +} + +/* Begin an insertion where the lines are not filled or indented. */ +void +cm_flushleft (void) +{ + 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 (void) +{ + begin_insertion (flushright); +} + +void +cm_menu (void) +{ + if (current_node == NULL && !macro_expansion_output_stream) + { + 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 (void) +{ + if (current_node == NULL && !macro_expansion_output_stream) + { /* 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); +} + +/* Title page commands. */ + +void +cm_titlepage (void) +{ + titlepage_cmd_present = 1; + if (xml && !docbook) + begin_insertion (titlepage); + else + command_name_condition (); +} + +void +cm_author (void) +{ + char *rest; + get_rest_of_line (1, &rest); + + if (is_in_insertion_of_type (quotation)) + { + if (html) + add_word_args ("— %s", rest); + else if (docbook) + { + /* FIXME Ideally, we should use an attribution element, + but they are supposed to be at the start of quotation + blocks. So to avoid looking ahead mess, let's just + use mdash like HTML for now. */ + xml_insert_entity ("mdash"); + add_word (rest); + } + else if (xml) + { + xml_insert_element (AUTHOR, START); + add_word (rest); + xml_insert_element (AUTHOR, END); + } + else + add_word_args ("-- %s", rest); + } + else if (is_in_insertion_of_type (titlepage)) + { + if (xml && !docbook) + { + xml_insert_element (AUTHOR, START); + add_word (rest); + xml_insert_element (AUTHOR, END); + } + } + else + line_error (_("@%s not meaningful outside `@titlepage' and `@quotation' environments"), + command); + + free (rest); +} + +void +cm_titlepage_cmds (void) +{ + char *rest; + + get_rest_of_line (1, &rest); + + if (!is_in_insertion_of_type (titlepage)) + line_error (_("@%s not meaningful outside `@titlepage' environment"), + command); + + if (xml && !docbook) + { + int elt = 0; + + if (STREQ (command, "title")) + elt = BOOKTITLE; + else if (STREQ (command, "subtitle")) + elt = BOOKSUBTITLE; + + xml_insert_element (elt, START); + add_word (rest); + xml_insert_element (elt, END); + } + + free (rest); +} + +/* End existing insertion block. */ +void +cm_end (void) +{ + char *temp; + enum insertion_type type; + + get_rest_of_line (0, &temp); + + if (!insertion_level) + { + line_error (_("Unmatched `%c%s'"), COMMAND_PREFIX, command); + return; + } + + 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 `%s' to `@%s', using `%s'"), + temp, command, insertion_type_pname (current_insertion_type ())); + } + if (xml && type == menu) /* fixme */ + { + xml_end_menu (); + } + end_insertion (type); + free (temp); +} + +/* @itemx, @item. */ + +static int itemx_flag = 0; + +/* Return whether CMD takes a brace-delimited {arg}. */ +int +command_needs_braces (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 (void) +{ + 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 ifnotplaintext: + case ifnottex: + case ifnotxml: + case ifplaintext: + case ifset: + case iftex: + case ifxml: + case rawdocbook: + case rawhtml: + case rawxml: + 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) + add_html_block_elt ("
  • "); + else if (xml) + xml_begin_item (); + else + { + start_paragraph (); + kill_self_indent (-1); + filling_enabled = indented_fill = 1; + + if (current_item_function ()) + { + indent (current_indent - 2); + + /* 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 (' '); + } + 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) + { /* If nothing has been output since the last
    , + remove the empty
    element. Some browsers render + an extra empty line for
    , which makes @itemx + conversion look ugly. */ + rollback_empty_tag ("dd"); + + /* Force the browser to render one blank line before + each new @item in a table. But don't do that if + this is the first
    after the
    , or if we are + converting @itemx. + + Note that there are some browsers which ignore
    + in this context, but I cannot find any way to force + them all render exactly one blank line. */ + if (!itemx_flag && html_deflist_has_term) + add_html_block_elt ("
    "); + + /* We are about to insert a
    , so this
    has a term. + Feel free to insert a
    next time. :) */ + html_deflist_has_term = 1; + + add_html_block_elt ("
    "); + 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); + + add_html_block_elt ("
    "); + } + else if (xml) /* && docbook)*/ /* 05-08 */ + { + xml_begin_table_item (); + + if (!docbook && current_insertion_type () == ftable) + execute_string ("%cfindex %s\n", COMMAND_PREFIX, rest_of_line); + + if (!docbook && current_insertion_type () == vtable) + execute_string ("%cvindex %s\n", COMMAND_PREFIX, rest_of_line); + + if (item_func && *item_func) + execute_string ("%s{%s}", item_func, rest_of_line); + else + execute_string ("%s", rest_of_line); + xml_continue_table_item (); + } + 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 (void) +{ + itemx_flag++; + cm_item (); + itemx_flag--; +} + +int headitem_flag = 0; + +void +cm_headitem (void) +{ + headitem_flag = 1; + cm_item (); +} diff --git a/makeinfo/insertion.h b/makeinfo/insertion.h new file mode 100644 index 0000000..75e5468 --- /dev/null +++ b/makeinfo/insertion.h @@ -0,0 +1,82 @@ +/* insertion.h -- declarations for insertion.c. + $Id: insertion.h,v 1.15 2008/01/31 18:33:27 karl Exp $ + + Copyright (C) 1998, 1999, 2001, 2002, 2003, 2007, 2008 + 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 3 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, see . */ + +#ifndef INSERTION_H +#define INSERTION_H + +/* Must match list in insertion.c. */ +enum insertion_type +{ + cartouche, copying, defcv, deffn, defivar, defmac, defmethod, defop, + defopt, defspec, deftp, deftypecv, deftypefn, deftypefun, deftypeivar, + deftypemethod, deftypeop, deftypevar, deftypevr, defun, defvar, defvr, + detailmenu, direntry, display, documentdescription, enumerate, + example, floatenv, flushleft, flushright, format, ftable, group, + ifclear, ifdocbook, ifhtml, ifinfo, ifnotdocbook, ifnothtml, ifnotinfo, + ifnotplaintext, ifnottex, ifnotxml, ifplaintext, ifset, iftex, ifxml, + itemize, lisp, menu, multitable, quotation, rawdocbook, rawhtml, rawtex, + rawxml, smalldisplay, smallexample, smallformat, smalllisp, verbatim, + table, tex, vtable, titlepage, bad_type +}; + +extern const char default_item_function[]; + +typedef struct istack_elt +{ + struct istack_elt *next; + char *item_function; + char *filename; + int line_number; + int filling_enabled; + int indented_fill; + int 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 int headitem_flag; +extern int after_headitem; + +extern void init_insertion_stack (void); +extern void command_name_condition (void); +extern void cm_ifdocbook (void), cm_ifnotdocbook(void), cm_docbook (int arg); +extern void cm_ifhtml (void), cm_ifnothtml(void), cm_html (int arg); +extern void cm_ifinfo (void), cm_ifnotinfo (void); +extern void cm_ifplaintext (void), cm_ifnotplaintext(void); +extern void cm_iftex (void), cm_ifnottex (void), cm_tex (void); +extern void cm_ifxml (void), cm_ifnotxml (void), cm_xml (int arg); +extern void handle_verbatim_environment (int find_end_verbatim); +extern void begin_insertion (enum insertion_type type); +extern void pop_insertion (void); +extern void discard_insertions (int specials_ok); + +extern int is_in_insertion_of_type (int type); +extern int command_needs_braces (char *cmd); + +extern enum insertion_type find_type_from_name (char *name); + +extern char *get_item_function (void); +#endif /* !INSERTION_H */ diff --git a/makeinfo/lang.c b/makeinfo/lang.c new file mode 100644 index 0000000..a56cb61 --- /dev/null +++ b/makeinfo/lang.c @@ -0,0 +1,1811 @@ +/* lang.c -- language-dependent support. + $Id: lang.c,v 1.34 2007/12/03 01:38:43 karl Exp $ + + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + 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 3 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, see . + + Originally written by Karl Heinz Marbaise . */ + +#include "system.h" +#include "cmds.h" +#include "files.h" +#include "lang.h" +#include "makeinfo.h" +#include "xml.h" + +#include + +/* Current document encoding. */ +encoding_code_type document_encoding_code = no_encoding; + +/* Current language code; default is English. */ +language_code_type language_code = en; + +/* Language to use for translations that end up in the output. */ +char *document_language = "C"; + +/* By default, unsupported encoding is an empty string. */ +char *unknown_encoding = NULL; + +static iso_map_type asis_map [] = {{NULL, 0, 0}}; /* ASCII, etc. */ + +/* Translation table between HTML and ISO Codes. The last item is + hopefully the Unicode. It might be possible that those Unicodes are + not correct, cause I didn't check them. kama */ +static iso_map_type iso8859_1_map [] = { + { "nbsp", 0xA0, 0x00A0 }, + { "iexcl", 0xA1, 0x00A1 }, + { "cent", 0xA2, 0x00A2 }, + { "pound", 0xA3, 0x00A3 }, + { "curren", 0xA4, 0x00A4 }, + { "yen", 0xA5, 0x00A5 }, + { "brkbar", 0xA6, 0x00A6 }, + { "sect", 0xA7, 0x00A7 }, + { "uml", 0xA8, 0x00A8 }, + { "copy", 0xA9, 0x00A9 }, + { "ordf", 0xAA, 0x00AA }, + { "laquo", 0xAB, 0x00AB }, + { "not", 0xAC, 0x00AC }, + { "shy", 0xAD, 0x00AD }, + { "reg", 0xAE, 0x00AE }, + { "hibar", 0xAF, 0x00AF }, + { "deg", 0xB0, 0x00B0 }, + { "plusmn", 0xB1, 0x00B1 }, + { "sup2", 0xB2, 0x00B2 }, + { "sup3", 0xB3, 0x00B3 }, + { "acute", 0xB4, 0x00B4 }, + { "micro", 0xB5, 0x00B5 }, + { "para", 0xB6, 0x00B6 }, + { "middot", 0xB7, 0x00B7 }, + { "cedil", 0xB8, 0x00B8 }, + { "sup1", 0xB9, 0x00B9 }, + { "ordm", 0xBA, 0x00BA }, + { "raquo", 0xBB, 0x00BB }, + { "frac14", 0xBC, 0x00BC }, + { "frac12", 0xBD, 0x00BD }, + { "frac34", 0xBE, 0x00BE }, + { "iquest", 0xBF, 0x00BF }, + { "Agrave", 0xC0, 0x00C0, "A" }, + { "Aacute", 0xC1, 0x00C1, "A" }, + { "Acirc", 0xC2, 0x00C2, "A" }, + { "Atilde", 0xC3, 0x00C3, "A" }, + { "Auml", 0xC4, 0x00C4, "A" }, + { "Aring", 0xC5, 0x00C5, "AA" }, + { "AElig", 0xC6, 0x00C6, "AE" }, + { "Ccedil", 0xC7, 0x00C7, "C" }, + { "Ccedil", 0xC7, 0x00C7, "C" }, + { "Egrave", 0xC8, 0x00C8, "E" }, + { "Eacute", 0xC9, 0x00C9, "E" }, + { "Ecirc", 0xCA, 0x00CA, "E" }, + { "Euml", 0xCB, 0x00CB, "E" }, + { "Igrave", 0xCC, 0x00CC, "I" }, + { "Iacute", 0xCD, 0x00CD, "I" }, + { "Icirc", 0xCE, 0x00CE, "I" }, + { "Iuml", 0xCF, 0x00CF, "I" }, + { "ETH", 0xD0, 0x00D0, "DH" }, + { "Ntilde", 0xD1, 0x00D1, "N" }, + { "Ograve", 0xD2, 0x00D2, "O" }, + { "Oacute", 0xD3, 0x00D3, "O" }, + { "Ocirc", 0xD4, 0x00D4, "O" }, + { "Otilde", 0xD5, 0x00D5, "O" }, + { "Ouml", 0xD6, 0x00D6, "O" }, + { "times", 0xD7, 0x00D7 }, + { "Oslash", 0xD8, 0x00D8, "OE" }, + { "Ugrave", 0xD9, 0x00D9, "U" }, + { "Uacute", 0xDA, 0x00DA, "U" }, + { "Ucirc", 0xDB, 0x00DB, "U" }, + { "Uuml", 0xDC, 0x00DC, "U" }, + { "Yacute", 0xDD, 0x00DD, "Y" }, + { "THORN", 0xDE, 0x00DE, "TH" }, + { "szlig", 0xDF, 0x00DF, "s" }, + { "agrave", 0xE0, 0x00E0, "a" }, + { "aacute", 0xE1, 0x00E1, "a" }, + { "acirc", 0xE2, 0x00E2, "a" }, + { "atilde", 0xE3, 0x00E3, "a" }, + { "auml", 0xE4, 0x00E4, "a" }, + { "aring", 0xE5, 0x00E5, "aa" }, + { "aelig", 0xE6, 0x00E6, "ae" }, + { "ccedil", 0xE7, 0x00E7, "c" }, + { "egrave", 0xE8, 0x00E8, "e" }, + { "eacute", 0xE9, 0x00E9, "e" }, + { "ecirc", 0xEA, 0x00EA, "e" }, + { "euml", 0xEB, 0x00EB, "e" }, + { "igrave", 0xEC, 0x00EC, "i" }, + { "iacute", 0xED, 0x00ED, "i" }, + { "icirc", 0xEE, 0x00EE, "i" }, + { "iuml", 0xEF, 0x00EF, "i" }, + { "eth", 0xF0, 0x00F0, "dh" }, + { "ntilde", 0xF1, 0x00F1, "n" }, + { "ograve", 0xF2, 0x00F2, "o"}, + { "oacute", 0xF3, 0x00F3, "o" }, + { "ocirc", 0xF4, 0x00F4, "o" }, + { "otilde", 0xF5, 0x00F5, "o" }, + { "ouml", 0xF6, 0x00F6, "o" }, + { "divide", 0xF7, 0x00F7 }, + { "oslash", 0xF8, 0x00F8, "oe" }, + { "ugrave", 0xF9, 0x00F9, "u" }, + { "uacute", 0xFA, 0x00FA, "u" }, + { "ucirc", 0xFB, 0x00FB, "u" }, + { "uuml", 0xFC, 0x00FC, "u" }, + { "yacute", 0xFD, 0x00FD, "y" }, + { "thorn", 0xFE, 0x00FE, "th" }, + { "yuml", 0xFF, 0x00FF, "y" }, + { NULL, 0, 0 } +}; + + +/* ISO 8859-15, also known as Latin 9, differs from Latin 1 in only a + few positions. http://www.cs.tut.fi/~jkorpela/latin9.html has a good + explanation and listing, summarized here. The names here are + abbreviated to fit in a decent line length. + + code position + dec oct hex latin1 latin1 name latin9 latin9 name + + 164 0244 0xA4 U+00A4 currency symbol U+20AC euro sign + 166 0246 0xA6 U+00A6 broken bar U+0160 S with caron + 168 0250 0xA8 U+00A8 diaeresis U+0161 s with caron + 180 0264 0xB4 U+00B4 acute accent U+017D Z with caron + 184 0270 0xB8 U+00B8 cedilla U+017E z with caron + 188 0274 0xBC U+00BC fraction 1/4 U+0152 ligature OE + 189 0275 0xBD U+00BD fraction 1/2 U+0153 ligature oe + 190 0276 0xBE U+00BE fraction 3/4 U+0178 Y with diaeresis +*/ + +static iso_map_type iso8859_15_map [] = { + { "nbsp", 0xA0, 0x00A0 }, + { "iexcl", 0xA1, 0x00A1 }, + { "cent", 0xA2, 0x00A2 }, + { "pound", 0xA3, 0x00A3 }, + { "euro", 0xA4, 0x20AC }, + { "yen", 0xA5, 0x00A5 }, + { "Scaron", 0xA6, 0x0160, "S" }, + { "sect", 0xA7, 0x00A7 }, + { "scaron", 0xA8, 0x0161, "s" }, + { "copy", 0xA9, 0x00A9 }, + { "ordf", 0xAA, 0x00AA }, + { "laquo", 0xAB, 0x00AB }, + { "not", 0xAC, 0x00AC }, + { "shy", 0xAD, 0x00AD }, + { "reg", 0xAE, 0x00AE }, + { "hibar", 0xAF, 0x00AF }, + { "deg", 0xB0, 0x00B0 }, + { "plusmn", 0xB1, 0x00B1 }, + { "sup2", 0xB2, 0x00B2 }, + { "sup3", 0xB3, 0x00B3 }, + { "Zcaron", 0xB4, 0x017D, "Z" }, + { "micro", 0xB5, 0x00B5 }, + { "para", 0xB6, 0x00B6 }, + { "middot", 0xB7, 0x00B7 }, + { "zcaron", 0xB8, 0x017E, "z" }, + { "sup1", 0xB9, 0x00B9 }, + { "ordm", 0xBA, 0x00BA }, + { "raquo", 0xBB, 0x00BB }, + { "OElig", 0xBC, 0x0152, "OE" }, + { "oelig", 0xBD, 0x0153, "oe" }, + { "Yuml", 0xBE, 0x0178, "y" }, + { "iquest", 0xBF, 0x00BF }, + { "Agrave", 0xC0, 0x00C0, "A" }, + { "Aacute", 0xC1, 0x00C1, "A" }, + { "Acirc", 0xC2, 0x00C2, "A" }, + { "Atilde", 0xC3, 0x00C3, "A" }, + { "Auml", 0xC4, 0x00C4, "A" }, + { "Aring", 0xC5, 0x00C5, "AA" }, + { "AElig", 0xC6, 0x00C6, "AE" }, + { "Ccedil", 0xC7, 0x00C7, "C" }, + { "Egrave", 0xC8, 0x00C8, "E" }, + { "Eacute", 0xC9, 0x00C9, "E" }, + { "Ecirc", 0xCA, 0x00CA, "E" }, + { "Euml", 0xCB, 0x00CB, "E" }, + { "Igrave", 0xCC, 0x00CC, "I" }, + { "Iacute", 0xCD, 0x00CD, "I" }, + { "Icirc", 0xCE, 0x00CE, "I" }, + { "Iuml", 0xCF, 0x00CF, "I" }, + { "ETH", 0xD0, 0x00D0, "DH" }, + { "Ntilde", 0xD1, 0x00D1, "N" }, + { "Ograve", 0xD2, 0x00D2, "O" }, + { "Oacute", 0xD3, 0x00D3, "O" }, + { "Ocirc", 0xD4, 0x00D4, "O" }, + { "Otilde", 0xD5, 0x00D5, "O" }, + { "Ouml", 0xD6, 0x00D6, "O" }, + { "times", 0xD7, 0x00D7 }, + { "Oslash", 0xD8, 0x00D8, "OE" }, + { "Ugrave", 0xD9, 0x00D9, "U" }, + { "Uacute", 0xDA, 0x00DA, "U" }, + { "Ucirc", 0xDB, 0x00DB, "U" }, + { "Uuml", 0xDC, 0x00DC, "U" }, + { "Yacute", 0xDD, 0x00DD, "Y" }, + { "THORN", 0xDE, 0x00DE, "TH" }, + { "szlig", 0xDF, 0x00DF, "s" }, + { "agrave", 0xE0, 0x00E0, "a" }, + { "aacute", 0xE1, 0x00E1, "a" }, + { "acirc", 0xE2, 0x00E2, "a" }, + { "atilde", 0xE3, 0x00E3, "a" }, + { "auml", 0xE4, 0x00E4, "a" }, + { "aring", 0xE5, 0x00E5, "aa" }, + { "aelig", 0xE6, 0x00E6, "ae" }, + { "ccedil", 0xE7, 0x00E7, "c" }, + { "egrave", 0xE8, 0x00E8, "e" }, + { "eacute", 0xE9, 0x00E9, "e" }, + { "ecirc", 0xEA, 0x00EA, "e" }, + { "euml", 0xEB, 0x00EB, "e" }, + { "igrave", 0xEC, 0x00EC, "i" }, + { "iacute", 0xED, 0x00ED, "i" }, + { "icirc", 0xEE, 0x00EE, "i" }, + { "iuml", 0xEF, 0x00EF, "i" }, + { "eth", 0xF0, 0x00F0, "d" }, + { "ntilde", 0xF1, 0x00F1, "n" }, + { "ograve", 0xF2, 0x00F2, "o" }, + { "oacute", 0xF3, 0x00F3, "o" }, + { "ocirc", 0xF4, 0x00F4, "o" }, + { "otilde", 0xF5, 0x00F5, "o" }, + { "ouml", 0xF6, 0x00F6, "o" }, + { "divide", 0xF7, 0x00F7 }, + { "oslash", 0xF8, 0x00F8, "oe" }, + { "ugrave", 0xF9, 0x00F9, "u" }, + { "uacute", 0xFA, 0x00FA, "u" }, + { "ucirc", 0xFB, 0x00FB, "u" }, + { "uuml", 0xFC, 0x00FC, "u" }, + { "yacute", 0xFD, 0x00FD, "y" }, + { "thorn", 0xFE, 0x00FE, "th" }, + { "yuml", 0xFF, 0x00FF, "y" }, + { NULL, 0, 0 } +}; + + + +/* Date: Mon, 31 Mar 2003 00:19:28 +0200 + From: Wojciech Polak +... + * Primary Polish site for ogonki is http://www.agh.edu.pl/ogonki/, + but it's only in Polish language (it has some interesting links). + + * A general site about ISO 8859-2 at http://nl.ijs.si/gnusl/cee/iso8859-2.html + + * ISO 8859-2 Character Set at http://nl.ijs.si/gnusl/cee/charset.html + This site provides almost all information about iso-8859-2, + including the character table!!! (must see!) + + * ISO 8859-2 and even HTML entities !!! (must see!) + 88592.txt in the GNU enscript distribution + + * (minor) http://www.agh.edu.pl/ogonki/plchars.html + One more table, this time it includes even information about Polish + characters in Unicode. +*/ + +static iso_map_type iso8859_2_map [] = { + { "nbsp", 0xA0, 0x00A0 }, /* NO-BREAK SPACE */ + { "", 0xA1, 0x0104, "A" }, /* LATIN CAPITAL LETTER A WITH OGONEK */ + { "", 0xA2, 0x02D8 }, /* BREVE */ + { "", 0xA3, 0x0141, "L" }, /* LATIN CAPITAL LETTER L WITH STROKE */ + { "curren", 0xA4, 0x00A4 }, /* CURRENCY SIGN */ + { "", 0xA5, 0x013D, "L" }, /* LATIN CAPITAL LETTER L WITH CARON */ + { "", 0xA6, 0x015A, "S" }, /* LATIN CAPITAL LETTER S WITH ACUTE */ + { "sect", 0xA7, 0x00A7 }, /* SECTION SIGN */ + { "uml", 0xA8, 0x00A8 }, /* DIAERESIS */ + { "#xa9", 0xA9, 0x0160, "S" }, /* LATIN CAPITAL LETTER S WITH CARON */ + { "", 0xAA, 0x015E, "S" }, /* LATIN CAPITAL LETTER S WITH CEDILLA */ + { "", 0xAB, 0x0164, "T" }, /* LATIN CAPITAL LETTER T WITH CARON */ + { "", 0xAC, 0x0179, "Z" }, /* LATIN CAPITAL LETTER Z WITH ACUTE */ + { "shy", 0xAD, 0x00AD }, /* SOFT HYPHEN */ + { "", 0xAE, 0x017D, "Z" }, /* LATIN CAPITAL LETTER Z WITH CARON */ + { "", 0xAF, 0x017B, "Z" }, /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ + { "deg", 0xB0, 0x00B0 }, /* DEGREE SIGN */ + { "", 0xB1, 0x0105, "a" }, /* LATIN SMALL LETTER A WITH OGONEK */ + { "", 0xB2, 0x02DB }, /* OGONEK */ + { "", 0xB3, 0x0142, "l" }, /* LATIN SMALL LETTER L WITH STROKE */ + { "acute", 0xB4, 0x00B4 }, /* ACUTE ACCENT */ + { "", 0xB5, 0x013E, "l" }, /* LATIN SMALL LETTER L WITH CARON */ + { "", 0xB6, 0x015B, "s" }, /* LATIN SMALL LETTER S WITH ACUTE */ + { "", 0xB7, 0x02C7 }, /* CARON (Mandarin Chinese third tone) */ + { "cedil", 0xB8, 0x00B8 }, /* CEDILLA */ + { "", 0xB9, 0x0161, "s" }, /* LATIN SMALL LETTER S WITH CARON */ + { "", 0xBA, 0x015F, "s" }, /* LATIN SMALL LETTER S WITH CEDILLA */ + { "", 0xBB, 0x0165, "t" }, /* LATIN SMALL LETTER T WITH CARON */ + { "", 0xBC, 0x017A, "z" }, /* LATIN SMALL LETTER Z WITH ACUTE */ + { "", 0xBD, 0x02DD }, /* DOUBLE ACUTE ACCENT */ + { "", 0xBE, 0x017E, "z" }, /* LATIN SMALL LETTER Z WITH CARON */ + { "", 0xBF, 0x017C, "z" }, /* LATIN SMALL LETTER Z WITH DOT ABOVE */ + { "", 0xC0, 0x0154, "R" }, /* LATIN CAPITAL LETTER R WITH ACUTE */ + { "Aacute", 0xC1, 0x00C1, "A" }, /* LATIN CAPITAL LETTER A WITH ACUTE */ + { "Acirc", 0xC2, 0x00C2, "A" }, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ + { "", 0xC3, 0x0102, "A" }, /* LATIN CAPITAL LETTER A WITH BREVE */ + { "Auml", 0xC4, 0x00C4, "A" }, /* LATIN CAPITAL LETTER A WITH DIAERESIS */ + { "", 0xC5, 0x0139, "L" }, /* LATIN CAPITAL LETTER L WITH ACUTE */ + { "", 0xC6, 0x0106, "C" }, /* LATIN CAPITAL LETTER C WITH ACUTE */ + { "Ccedil", 0xC7, 0x00C7, "C" }, /* LATIN CAPITAL LETTER C WITH CEDILLA */ + { "", 0xC8, 0x010C, "C" }, /* LATIN CAPITAL LETTER C WITH CARON */ + { "Eacute", 0xC9, 0x00C9, "E" }, /* LATIN CAPITAL LETTER E WITH ACUTE */ + { "", 0xCA, 0x0118, "E" }, /* LATIN CAPITAL LETTER E WITH OGONEK */ + { "Euml", 0xCB, 0x00CB, "E" }, /* LATIN CAPITAL LETTER E WITH DIAERESIS */ + { "", 0xCC, 0x011A, "E" }, /* LATIN CAPITAL LETTER E WITH CARON */ + { "Iacute", 0xCD, 0x00CD, "I" }, /* LATIN CAPITAL LETTER I WITH ACUTE */ + { "Icirc", 0xCE, 0x00CE, "I" }, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ + { "", 0xCF, 0x010E, "D" }, /* LATIN CAPITAL LETTER D WITH CARON */ + { "ETH", 0xD0, 0x0110, "D" }, /* LATIN CAPITAL LETTER D WITH STROKE */ + { "", 0xD1, 0x0143, "N" }, /* LATIN CAPITAL LETTER N WITH ACUTE */ + { "", 0xD2, 0x0147, "N" }, /* LATIN CAPITAL LETTER N WITH CARON */ + { "Oacute", 0xD3, 0x00D3, "O" }, /* LATIN CAPITAL LETTER O WITH ACUTE */ + { "Ocirc", 0xD4, 0x00D4, "O" }, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ + { "", 0xD5, 0x0150, "O" }, /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ + { "Ouml", 0xD6, 0x00D6, "O" }, /* LATIN CAPITAL LETTER O WITH DIAERESIS */ + { "times", 0xD7, 0x00D7 }, /* MULTIPLICATION SIGN */ + { "", 0xD8, 0x0158, "R" }, /* LATIN CAPITAL LETTER R WITH CARON */ + { "", 0xD9, 0x016E, "U" }, /* LATIN CAPITAL LETTER U WITH RING ABOVE */ + { "Uacute", 0xDA, 0x00DA, "U" }, /* LATIN CAPITAL LETTER U WITH ACUTE */ + { "", 0xDB, 0x0170, "U" }, /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ + { "Uuml", 0xDC, 0x00DC, "U" }, /* LATIN CAPITAL LETTER U WITH DIAERESIS */ + { "Yacute", 0xDD, 0x00DD, "Y" }, /* LATIN CAPITAL LETTER Y WITH ACUTE */ + { "", 0xDE, 0x0162, "T" }, /* LATIN CAPITAL LETTER T WITH CEDILLA */ + { "szlig", 0xDF, 0x00DF, "ss" }, /* LATIN SMALL LETTER SHARP S (German) */ + { "", 0xE0, 0x0155, "s" }, /* LATIN SMALL LETTER R WITH ACUTE */ + { "aacute", 0xE1, 0x00E1, "a" }, /* LATIN SMALL LETTER A WITH ACUTE */ + { "acirc", 0xE2, 0x00E2, "a" }, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ + { "", 0xE3, 0x0103, "a" }, /* LATIN SMALL LETTER A WITH BREVE */ + { "auml", 0xE4, 0x00E4, "a" }, /* LATIN SMALL LETTER A WITH DIAERESIS */ + { "", 0xE5, 0x013A, "l" }, /* LATIN SMALL LETTER L WITH ACUTE */ + { "", 0xE6, 0x0107, "c" }, /* LATIN SMALL LETTER C WITH ACUTE */ + { "ccedil", 0xE7, 0x00E7, "c" }, /* LATIN SMALL LETTER C WITH CEDILLA */ + { "", 0xE8, 0x010D, "c" }, /* LATIN SMALL LETTER C WITH CARON */ + { "eacute", 0xE9, 0x00E9, "e" }, /* LATIN SMALL LETTER E WITH ACUTE */ + { "", 0xEA, 0x0119, "e" }, /* LATIN SMALL LETTER E WITH OGONEK */ + { "euml", 0xEB, 0x00EB, "e" }, /* LATIN SMALL LETTER E WITH DIAERESIS */ + { "", 0xEC, 0x011B, "e" }, /* LATIN SMALL LETTER E WITH CARON */ + { "iacute", 0xED, 0x00ED, "i" }, /* LATIN SMALL LETTER I WITH ACUTE */ + { "icirc", 0xEE, 0x00EE, "i" }, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ + { "", 0xEF, 0x010F, "d" }, /* LATIN SMALL LETTER D WITH CARON */ + { "", 0xF0, 0x0111, "d" }, /* LATIN SMALL LETTER D WITH STROKE */ + { "", 0xF1, 0x0144, "n" }, /* LATIN SMALL LETTER N WITH ACUTE */ + { "", 0xF2, 0x0148, "n" }, /* LATIN SMALL LETTER N WITH CARON */ + { "oacute", 0xF3, 0x00F3, "o" }, /* LATIN SMALL LETTER O WITH ACUTE */ + { "ocirc", 0xF4, 0x00F4, "o" }, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ + { "", 0xF5, 0x0151, "o" }, /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ + { "ouml", 0xF6, 0x00F6, "o" }, /* LATIN SMALL LETTER O WITH DIAERESIS */ + { "divide", 0xF7, 0x00F7 }, /* DIVISION SIGN */ + { "", 0xF8, 0x0159, "r" }, /* LATIN SMALL LETTER R WITH CARON */ + { "", 0xF9, 0x016F, "u" }, /* LATIN SMALL LETTER U WITH RING ABOVE */ + { "uacute", 0xFA, 0x00FA, "u" }, /* LATIN SMALL LETTER U WITH ACUTE */ + { "", 0xFB, 0x0171, "u" }, /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ + { "uuml", 0xFC, 0x00FC, "u" }, /* LATIN SMALL LETTER U WITH DIAERESIS */ + { "yacute", 0xFD, 0x00FD, "y" }, /* LATIN SMALL LETTER Y WITH ACUTE */ + { "", 0xFE, 0x0163, "t" }, /* LATIN SMALL LETTER T WITH CEDILLA */ + { "", 0xFF, 0x02D9 }, /* DOT ABOVE (Mandarin Chinese light tone) */ + { NULL, 0, 0 } +}; + +/* Common map for koi8-u, koi8-r */ +static iso_map_type koi8_map [] = { + { "", 0xa3, 0x0415, "io"}, /* CYRILLIC SMALL LETTER IO */ + { "", 0xa4, 0x0454, "ie"}, /* CYRILLIC SMALL LETTER UKRAINIAN IE */ + { "", 0xa6, 0x0456, "i"}, /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ + { "", 0xa7, 0x0457, "yi"}, /* CYRILLIC SMALL LETTER YI */ + + { "", 0xb3, 0x04d7, "IO"}, /* CYRILLIC CAPITAL LETTER IO */ + { "", 0xb4, 0x0404, "IE"}, /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ + { "", 0xb6, 0x0406, "I"}, /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ + { "", 0xb7, 0x0407, "YI"}, /* CYRILLIC CAPITAL LETTER YI */ +/* { "", 0xbf, 0x}, / * CYRILLIC COPYRIGHT SIGN */ + { "", 0xc0, 0x042e, "yu"}, /* CYRILLIC SMALL LETTER YU */ + { "", 0xc1, 0x0430, "a"}, /* CYRILLIC SMALL LETTER A */ + { "", 0xc2, 0x0431, "b"}, /* CYRILLIC SMALL LETTER BE */ + { "", 0xc3, 0x0446, "c"}, /* CYRILLIC SMALL LETTER TSE */ + { "", 0xc4, 0x0434, "d"}, /* CYRILLIC SMALL LETTER DE */ + { "", 0xc5, 0x0435, "e"}, /* CYRILLIC SMALL LETTER IE */ + { "", 0xc6, 0x0444, "f"}, /* CYRILLIC SMALL LETTER EF */ + { "", 0xc7, 0x0433, "g"}, /* CYRILLIC SMALL LETTER GHE */ + { "", 0xc8, 0x0445, "h"}, /* CYRILLIC SMALL LETTER HA */ + { "", 0xc9, 0x0438, "i"}, /* CYRILLIC SMALL LETTER I */ + { "", 0xca, 0x0439, "i"}, /* CYRILLIC SMALL LETTER SHORT I */ + { "", 0xcb, 0x043a, "k"}, /* CYRILLIC SMALL LETTER KA */ + { "", 0xcc, 0x043b, "l"}, /* CYRILLIC SMALL LETTER EL */ + { "", 0xcd, 0x043c, "m"}, /* CYRILLIC SMALL LETTER EM */ + { "", 0xce, 0x043d, "n"}, /* CYRILLIC SMALL LETTER EN */ + { "", 0xcf, 0x043e, "o"}, /* CYRILLIC SMALL LETTER O */ + { "", 0xd0, 0x043f, "p"}, /* CYRILLIC SMALL LETTER PE */ + { "", 0xd1, 0x044f, "ya"}, /* CYRILLIC SMALL LETTER YA */ + { "", 0xd2, 0x0440, "r"}, /* CYRILLIC SMALL LETTER ER */ + { "", 0xd3, 0x0441, "s"}, /* CYRILLIC SMALL LETTER ES */ + { "", 0xd4, 0x0442, "t"}, /* CYRILLIC SMALL LETTER TE */ + { "", 0xd5, 0x0443, "u"}, /* CYRILLIC SMALL LETTER U */ + { "", 0xd6, 0x0436, "zh"}, /* CYRILLIC SMALL LETTER ZHE */ + { "", 0xd7, 0x0432, "v"}, /* CYRILLIC SMALL LETTER VE */ + { "", 0xd8, 0x044c, "x"}, /* CYRILLIC SMALL LETTER SOFT SIGN */ + { "", 0xd9, 0x044b, "y"}, /* CYRILLIC SMALL LETTER YERU */ + { "", 0xda, 0x0437, "z"}, /* CYRILLIC SMALL LETTER ZE */ + { "", 0xdb, 0x0448, "sh"}, /* CYRILLIC SMALL LETTER SHA */ + { "", 0xdc, 0x044d, "e"}, /* CYRILLIC SMALL LETTER E */ + { "", 0xdd, 0x0449, "shch"}, /* CYRILLIC SMALL LETTER SHCHA */ + { "", 0xde, 0x0447, "ch"}, /* CYRILLIC SMALL LETTER CHA */ + { "", 0xdf, 0x044a, "w"}, /* CYRILLIC SMALL LETTER HARD SIGN */ + { "", 0xe0, 0x042d, "YU"}, /* CYRILLIC CAPITAL LETTER YU */ + { "", 0xe1, 0x0410, "A"}, /* CYRILLIC CAPITAL LETTER A */ + { "", 0xe2, 0x0411, "B"}, /* CYRILLIC CAPITAL LETTER BE */ + { "", 0xe3, 0x0426, "C"}, /* CYRILLIC CAPITAL LETTER TSE */ + { "", 0xe4, 0x0414, "D"}, /* CYRILLIC CAPITAL LETTER DE */ + { "", 0xe5, 0x0415, "E"}, /* CYRILLIC CAPITAL LETTER IE */ + { "", 0xe6, 0x0424, "F"}, /* CYRILLIC CAPITAL LETTER EF */ + { "", 0xe7, 0x0413, "G"}, /* CYRILLIC CAPITAL LETTER GHE */ + { "", 0xe8, 0x0425, "H"}, /* CYRILLIC CAPITAL LETTER HA */ + { "", 0xe9, 0x0418, "I"}, /* CYRILLIC CAPITAL LETTER I */ + { "", 0xea, 0x0419, "I"}, /* CYRILLIC CAPITAL LETTER SHORT I */ + { "", 0xeb, 0x041a, "K"}, /* CYRILLIC CAPITAL LETTER KA */ + { "", 0xec, 0x041b, "L"}, /* CYRILLIC CAPITAL LETTER EL */ + { "", 0xed, 0x041c, "M"}, /* CYRILLIC CAPITAL LETTER EM */ + { "", 0xee, 0x041d, "N"}, /* CYRILLIC CAPITAL LETTER EN */ + { "", 0xef, 0x041e, "O"}, /* CYRILLIC CAPITAL LETTER O */ + { "", 0xf0, 0x041f, "P"}, /* CYRILLIC CAPITAL LETTER PE */ + { "", 0xf1, 0x042f, "YA"}, /* CYRILLIC CAPITAL LETTER YA */ + { "", 0xf2, 0x0420, "R"}, /* CYRILLIC CAPITAL LETTER ER */ + { "", 0xf3, 0x0421, "S"}, /* CYRILLIC CAPITAL LETTER ES */ + { "", 0xf4, 0x0422, "T"}, /* CYRILLIC CAPITAL LETTER TE */ + { "", 0xf5, 0x0423, "U"}, /* CYRILLIC CAPITAL LETTER U */ + { "", 0xf6, 0x0416, "ZH"}, /* CYRILLIC CAPITAL LETTER ZHE */ + { "", 0xf7, 0x0412, "V"}, /* CYRILLIC CAPITAL LETTER VE */ + { "", 0xf8, 0x042c, "X"}, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ + { "", 0xf9, 0x042b, "Y"}, /* CYRILLIC CAPITAL LETTER YERU */ + { "", 0xfa, 0x0417, "Z"}, /* CYRILLIC CAPITAL LETTER ZE */ + { "", 0xfb, 0x0428, "SH"}, /* CYRILLIC CAPITAL LETTER SHA */ + { "", 0xfc, 0x042d, "E"}, /* CYRILLIC CAPITAL LETTER E */ + { "", 0xfd, 0x0429, "SHCH"}, /* CYRILLIC CAPITAL LETTER SHCHA */ + { "", 0xfe, 0x0427, "CH"}, /* CYRILLIC CAPITAL LETTER CHE */ + { "", 0xff, 0x042a, "W"}, /* CYRILLIC CAPITAL LETTER HARD SIGN */ + { NULL, 0, 0 } +}; + +encoding_type encoding_table[] = { + { no_encoding, "(no encoding)", NULL }, + { US_ASCII, "US-ASCII", asis_map }, + { ISO_8859_1, "iso-8859-1", (iso_map_type *) iso8859_1_map }, + { ISO_8859_2, "iso-8859-2", (iso_map_type *) iso8859_2_map }, + { ISO_8859_3, "iso-8859-3", NULL }, + { ISO_8859_4, "iso-8859-4", NULL }, + { ISO_8859_5, "iso-8859-5", NULL }, + { ISO_8859_6, "iso-8859-6", NULL }, + { ISO_8859_7, "iso-8859-7", NULL }, + { ISO_8859_8, "iso-8859-8", NULL }, + { ISO_8859_9, "iso-8859-9", NULL }, + { ISO_8859_10, "iso-8859-10", NULL }, + { ISO_8859_11, "iso-8859-11", NULL }, + { ISO_8859_12, "iso-8859-12", NULL }, + { ISO_8859_13, "iso-8859-13", NULL }, + { ISO_8859_14, "iso-8859-14", NULL }, + { ISO_8859_15, "iso-8859-15", (iso_map_type *) iso8859_15_map }, + { KOI8_R, "koi8-r", (iso_map_type *) koi8_map }, + { KOI8_U, "koi8-u", (iso_map_type *) koi8_map }, + { UTF_8, "utf-8", asis_map }, /* specific code for this below */ + { last_encoding_code, NULL, NULL } +}; + + +/* List of HTML entities. */ +static struct { const char *html; unsigned int unicode; } unicode_map[] = { +/* Extracted from http://www.w3.org/TR/html401/sgml/entities.html through + sed -n -e 's|/tmp/639.2 + + Extract the C table below to a file, say /tmp/lc, and run: + cut -c 10- /tmp/lc| sed -e 's/", "/|/' -e 's,".*,,'>/tmp/lang.2 + + Then: comm -3 /tmp/639.2 /tmp/lang.c. + + Also update the enum in lang.h. */ + +language_type language_table[] = { + { aa, "aa", "Afar" }, + { ab, "ab", "Abkhazian" }, + { ae, "ae", "Avestan" }, + { af, "af", "Afrikaans" }, + { ak, "ak", "Akan" }, + { am, "am", "Amharic" }, + { an, "an", "Aragonese" }, + { ar, "ar", "Arabic" }, + { as, "as", "Assamese" }, + { av, "av", "Avaric" }, + { ay, "ay", "Aymara" }, + { az, "az", "Azerbaijani" }, + { ba, "ba", "Bashkir" }, + { be, "be", "Belarusian" }, + { bg, "bg", "Bulgarian" }, + { bh, "bh", "Bihari" }, + { bi, "bi", "Bislama" }, + { bm, "bm", "Bambara" }, + { bn, "bn", "Bengali" }, + { bo, "bo", "Tibetan" }, + { br, "br", "Breton" }, + { bs, "bs", "Bosnian" }, + { ca, "ca", "Catalan; Valencian" }, + { ce, "ce", "Chechen" }, + { ch, "ch", "Chamorro" }, + { co, "co", "Corsican" }, + { cr, "cr", "Cree" }, + { cs, "cs", "Czech" }, + { cu, "cu", "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic" }, + { cv, "cv", "Chuvash" }, + { cy, "cy", "Welsh" }, + { da, "da", "Danish" }, + { de, "de", "German" }, + { dv, "dv", "Divehi; Dhivehi; Maldivian" }, + { dz, "dz", "Dzongkha" }, + { ee, "ee", "Ewe" }, + { el, "el", "Greek, Modern (1453-)" }, + { en, "en", "English" }, + { eo, "eo", "Esperanto" }, + { es, "es", "Spanish; Castilian" }, + { et, "et", "Estonian" }, + { eu, "eu", "Basque" }, + { fa, "fa", "Persian" }, + { ff, "ff", "Fulah" }, + { fi, "fi", "Finnish" }, + { fj, "fj", "Fijian" }, + { fo, "fo", "Faroese" }, + { fr, "fr", "French" }, + { fy, "fy", "Western Frisian" }, + { ga, "ga", "Irish" }, + { gd, "gd", "Gaelic; Scottish Gaelic" }, + { gl, "gl", "Galician" }, + { gn, "gn", "Guarani" }, + { gu, "gu", "Gujarati" }, + { gv, "gv", "Manx" }, + { ha, "ha", "Hausa" }, + { he, "he", "Hebrew" } /* (formerly iw) */, + { hi, "hi", "Hindi" }, + { ho, "ho", "Hiri Motu" }, + { hr, "hr", "Croatian" }, + { ht, "ht", "Haitian; Haitian Creole" }, + { hu, "hu", "Hungarian" }, + { hy, "hy", "Armenian" }, + { hz, "hz", "Herero" }, + { ia, "ia", "Interlingua (International Auxiliary Language Association)" }, + { id, "id", "Indonesian" } /* (formerly in) */, + { ie, "ie", "Interlingue" }, + { ig, "ig", "Igbo" }, + { ii, "ii", "Sichuan Yi" }, + { ik, "ik", "Inupiaq" }, + { io, "io", "Ido" }, + { is, "is", "Icelandic" }, + { it, "it", "Italian" }, + { iu, "iu", "Inuktitut" }, + { ja, "ja", "Japanese" }, + { jv, "jv", "Javanese" }, + { ka, "ka", "Georgian" }, + { kg, "kg", "Kongo" }, + { ki, "ki", "Kikuyu; Gikuyu" }, + { kj, "kj", "Kuanyama; Kwanyama" }, + { kk, "kk", "Kazakh" }, + { kl, "kl", "Kalaallisut; Greenlandic" }, + { km, "km", "Central Khmer" }, + { kn, "kn", "Kannada" }, + { ko, "ko", "Korean" }, + { kr, "kr", "Kanuri" }, + { ks, "ks", "Kashmiri" }, + { ku, "ku", "Kurdish" }, + { kv, "kv", "Komi" }, + { kw, "kw", "Cornish" }, + { ky, "ky", "Kirghiz; Kyrgyz" }, + { la, "la", "Latin" }, + { lb, "lb", "Luxembourgish; Letzeburgesch" }, + { lg, "lg", "Ganda" }, + { li, "li", "Limburgan; Limburger; Limburgish" }, + { ln, "ln", "Lingala" }, + { lo, "lo", "Lao" }, + { lt, "lt", "Lithuanian" }, + { lu, "lu", "Luba-Katanga" }, + { lv, "lv", "Latvian" }, + { mg, "mg", "Malagasy" }, + { mh, "mh", "Marshallese" }, + { 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" }, + { nb, "nb", "Bokmål, Norwegian; Norwegian Bokmål" }, + { nd, "nd", "Ndebele, North; North Ndebele" }, + { ne, "ne", "Nepali" }, + { ng, "ng", "Ndonga" }, + { nl, "nl", "Dutch; Flemish" }, + { nn, "nn", "Norwegian Nynorsk; Nynorsk, Norwegian" }, + { no, "no", "Norwegian" }, + { nr, "nr", "Ndebele, South; South Ndebele" }, + { nv, "nv", "Navajo; Navaho" }, + { ny, "ny", "Chichewa; Chewa; Nyanja" }, + { oc, "oc", "Occitan (post 1500); Provençal" }, + { oj, "oj", "Ojibwa" }, + { om, "om", "Oromo" }, + { or, "or", "Oriya" }, + { os, "os", "Ossetian; Ossetic" }, + { pa, "pa", "Panjabi; Punjabi" }, + { pi, "pi", "Pali" }, + { pl, "pl", "Polish" }, + { ps, "ps", "Pushto" }, + { pt, "pt", "Portuguese" }, + { qu, "qu", "Quechua" }, + { rm, "rm", "Romansh" }, + { rn, "rn", "Rundi" }, + { ro, "ro", "Romanian" }, + { ru, "ru", "Russian" }, + { rw, "rw", "Kinyarwanda" }, + { sa, "sa", "Sanskrit" }, + { sc, "sc", "Sardinian" }, + { sd, "sd", "Sindhi" }, + { se, "se", "Northern Sami" }, + { sg, "sg", "Sango" }, + { si, "si", "Sinhala; Sinhalese" }, + { sk, "sk", "Slovak" }, + { sl, "sl", "Slovenian" }, + { sm, "sm", "Samoan" }, + { sn, "sn", "Shona" }, + { so, "so", "Somali" }, + { sq, "sq", "Albanian" }, + { sr, "sr", "Serbian" }, + { ss, "ss", "Swati" }, + { st, "st", "Sotho, Souther" }, + { 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", "Tswana" }, + { to, "to", "Tonga (Tonga Islands)" }, + { tr, "tr", "Turkish" }, + { ts, "ts", "Tsonga" }, + { tt, "tt", "Tatar" }, + { tw, "tw", "Twi" }, + { ty, "ty", "Tahitian" }, + { ug, "ug", "Uighur; Uyghur" }, + { uk, "uk", "Ukrainian" }, + { ur, "ur", "Urdu" }, + { uz, "uz", "Uzbek" }, + { ve, "ve", "Venda" }, + { vi, "vi", "Vietnamese" }, + { vo, "vo", "Volapük" }, + { wa, "wa", "Walloon" }, + { wo, "wo", "Wolof" }, + { xh, "xh", "Xhosa" }, + { yi, "yi", "Yiddish" } /* (formerly ji) */, + { yo, "yo", "Yoruba" }, + { za, "za", "Zhuang; Chuang" }, + { zh, "zh", "Chinese" }, + { zu, "zu", "Zulu" }, + { last_language_code, NULL, NULL } +}; + +static const char * +cm_search_iso_map_char (byte_t ch) +{ + int i; + iso_map_type *iso = encoding_table[document_encoding_code].isotab; + + /* If no conversion table for this encoding, quit. */ + if (!iso) + return NULL; + + for (i = 0; iso[i].html; i++) + if (iso[i].bytecode == ch) + return iso[i].translit; + + return NULL; +} + +const char * +lang_transliterate_char (byte_t ch) +{ + if (transliterate_file_names + && document_encoding_code != no_encoding) + return cm_search_iso_map_char (ch); + return NULL; +} + + + +/* Given a language code LL_CODE, return a "default" country code (in + new memory). We use the same table as gettext, and return LL_CODE + uppercased in the absence of any better possibility, with a warning. + (gettext silently defaults to the C locale, but we want to give users + a shot at fixing ambiguities.) We also return en_US for en, while + gettext does not. */ + +#define SIZEOF(a) (sizeof(a) / sizeof(a[0])) + +static char * +default_country_for_lang (const char *ll_code) +{ + /* This table comes from msginit.c in gettext (0.16.1). It is + intentionally copied verbatim even though the format is not the + most convenient for our purposes, to make updates simple. */ + static const char *locales_with_principal_territory[] = { + /* Language Main territory */ + "ace_ID", /* Achinese Indonesia */ + "af_ZA", /* Afrikaans South Africa */ + "ak_GH", /* Akan Ghana */ + "am_ET", /* Amharic Ethiopia */ + "an_ES", /* Aragonese Spain */ + "ang_GB", /* Old English Britain */ + "as_IN", /* Assamese India */ + "av_RU", /* Avaric Russia */ + "awa_IN", /* Awadhi India */ + "az_AZ", /* Azerbaijani Azerbaijan */ + "bad_CF", /* Banda Central African Republic */ + "ban_ID", /* Balinese Indonesia */ + "be_BY", /* Belarusian Belarus */ + "bem_ZM", /* Bemba Zambia */ + "bg_BG", /* Bulgarian Bulgaria */ + "bho_IN", /* Bhojpuri India */ + "bik_PH", /* Bikol Philippines */ + "bin_NG", /* Bini Nigeria */ + "bm_ML", /* Bambara Mali */ + "bn_IN", /* Bengali India */ + "bo_CN", /* Tibetan China */ + "br_FR", /* Breton France */ + "bs_BA", /* Bosnian Bosnia */ + "btk_ID", /* Batak Indonesia */ + "bug_ID", /* Buginese Indonesia */ + "ca_ES", /* Catalan Spain */ + "ce_RU", /* Chechen Russia */ + "ceb_PH", /* Cebuano Philippines */ + "co_FR", /* Corsican France */ + "cr_CA", /* Cree Canada */ + "cs_CZ", /* Czech Czech Republic */ + "csb_PL", /* Kashubian Poland */ + "cy_GB", /* Welsh Britain */ + "da_DK", /* Danish Denmark */ + "de_DE", /* German Germany */ + "din_SD", /* Dinka Sudan */ + "doi_IN", /* Dogri India */ + "dv_MV", /* Divehi Maldives */ + "dz_BT", /* Dzongkha Bhutan */ + "ee_GH", /* Éwé Ghana */ + "el_GR", /* Greek Greece */ + /* Don't put "en_GB" or "en_US" here. That would be asking for fruitless + political discussion. */ + "es_ES", /* Spanish Spain */ + "et_EE", /* Estonian Estonia */ + "fa_IR", /* Persian Iran */ + "fi_FI", /* Finnish Finland */ + "fil_PH", /* Filipino Philippines */ + "fj_FJ", /* Fijian Fiji */ + "fo_FO", /* Faroese Faeroe Islands */ + "fon_BJ", /* Fon Benin */ + "fr_FR", /* French France */ + "fy_NL", /* Western Frisian Netherlands */ + "ga_IE", /* Irish Ireland */ + "gd_GB", /* Scots Britain */ + "gon_IN", /* Gondi India */ + "gsw_CH", /* Swiss German Switzerland */ + "gu_IN", /* Gujarati India */ + "he_IL", /* Hebrew Israel */ + "hi_IN", /* Hindi India */ + "hil_PH", /* Hiligaynon Philippines */ + "hr_HR", /* Croatian Croatia */ + "ht_HT", /* Haitian Haiti */ + "hu_HU", /* Hungarian Hungary */ + "hy_AM", /* Armenian Armenia */ + "id_ID", /* Indonesian Indonesia */ + "ig_NG", /* Igbo Nigeria */ + "ii_CN", /* Sichuan Yi China */ + "ilo_PH", /* Iloko Philippines */ + "is_IS", /* Icelandic Iceland */ + "it_IT", /* Italian Italy */ + "ja_JP", /* Japanese Japan */ + "jab_NG", /* Hyam Nigeria */ + "jv_ID", /* Javanese Indonesia */ + "ka_GE", /* Georgian Georgia */ + "kab_DZ", /* Kabyle Algeria */ + "kaj_NG", /* Jju Nigeria */ + "kam_KE", /* Kamba Kenya */ + "kmb_AO", /* Kimbundu Angola */ + "kcg_NG", /* Tyap Nigeria */ + "kdm_NG", /* Kagoma Nigeria */ + "kg_CD", /* Kongo Democratic Republic of Congo */ + "kk_KZ", /* Kazakh Kazakhstan */ + "kl_GL", /* Kalaallisut Greenland */ + "km_KH", /* Khmer Cambodia */ + "kn_IN", /* Kannada India */ + "ko_KR", /* Korean Korea (South) */ + "kok_IN", /* Konkani India */ + "kr_NG", /* Kanuri Nigeria */ + "kru_IN", /* Kurukh India */ + "lg_UG", /* Ganda Uganda */ + "li_BE", /* Limburgish Belgium */ + "lo_LA", /* Laotian Laos */ + "lt_LT", /* Lithuanian Lithuania */ + "lu_CD", /* Luba-Katanga Democratic Republic of Congo */ + "lua_CD", /* Luba-Lulua Democratic Republic of Congo */ + "luo_KE", /* Luo Kenya */ + "lv_LV", /* Latvian Latvia */ + "mad_ID", /* Madurese Indonesia */ + "mag_IN", /* Magahi India */ + "mai_IN", /* Maithili India */ + "mak_ID", /* Makasar Indonesia */ + "man_ML", /* Mandingo Mali */ + "men_SL", /* Mende Sierra Leone */ + "mg_MG", /* Malagasy Madagascar */ + "min_ID", /* Minangkabau Indonesia */ + "mk_MK", /* Macedonian Macedonia */ + "ml_IN", /* Malayalam India */ + "mn_MN", /* Mongolian Mongolia */ + "mni_IN", /* Manipuri India */ + "mos_BF", /* Mossi Burkina Faso */ + "mr_IN", /* Marathi India */ + "ms_MY", /* Malay Malaysia */ + "mt_MT", /* Maltese Malta */ + "mwr_IN", /* Marwari India */ + "my_MM", /* Burmese Myanmar */ + "na_NR", /* Nauru Nauru */ + "nah_MX", /* Nahuatl Mexico */ + "nap_IT", /* Neapolitan Italy */ + "nb_NO", /* Norwegian BokmÃ¥l Norway */ + "nds_DE", /* Low Saxon Germany */ + "ne_NP", /* Nepali Nepal */ + "nl_NL", /* Dutch Netherlands */ + "nn_NO", /* Norwegian Nynorsk Norway */ + "no_NO", /* Norwegian Norway */ + "nr_ZA", /* South Ndebele South Africa */ + "nso_ZA", /* Northern Sotho South Africa */ + "nym_TZ", /* Nyamwezi Tanzania */ + "nyn_UG", /* Nyankole Uganda */ + "oc_FR", /* Occitan France */ + "oj_CA", /* Ojibwa Canada */ + "or_IN", /* Oriya India */ + "pa_IN", /* Punjabi India */ + "pag_PH", /* Pangasinan Philippines */ + "pam_PH", /* Pampanga Philippines */ + "pbb_CO", /* Páez Colombia */ + "pl_PL", /* Polish Poland */ + "ps_AF", /* Pashto Afghanistan */ + "pt_PT", /* Portuguese Portugal */ + "raj_IN", /* Rajasthani India */ + "rm_CH", /* Rhaeto-Roman Switzerland */ + "rn_BI", /* Kirundi Burundi */ + "ro_RO", /* Romanian Romania */ + "ru_RU", /* Russian Russia */ + "sa_IN", /* Sanskrit India */ + "sas_ID", /* Sasak Indonesia */ + "sat_IN", /* Santali India */ + "sc_IT", /* Sardinian Italy */ + "scn_IT", /* Sicilian Italy */ + "sg_CF", /* Sango Central African Republic */ + "shn_MM", /* Shan Myanmar */ + "si_LK", /* Sinhala Sri Lanka */ + "sid_ET", /* Sidamo Ethiopia */ + "sk_SK", /* Slovak Slovakia */ + "sl_SI", /* Slovenian Slovenia */ + "so_SO", /* Somali Somalia */ + "sq_AL", /* Albanian Albania */ + "sr_RS", /* Serbian Serbia */ + "sr_YU", /* Serbian Yugoslavia */ + "srr_SN", /* Serer Senegal */ + "suk_TZ", /* Sukuma Tanzania */ + "sus_GN", /* Susu Guinea */ + "sv_SE", /* Swedish Sweden */ + "te_IN", /* Telugu India */ + "tem_SL", /* Timne Sierra Leone */ + "tet_ID", /* Tetum Indonesia */ + "tg_TJ", /* Tajik Tajikistan */ + "th_TH", /* Thai Thailand */ + "tiv_NG", /* Tiv Nigeria */ + "tk_TM", /* Turkmen Turkmenistan */ + "tl_PH", /* Tagalog Philippines */ + "to_TO", /* Tonga Tonga */ + "tr_TR", /* Turkish Turkey */ + "tum_MW", /* Tumbuka Malawi */ + "uk_UA", /* Ukrainian Ukraine */ + "umb_AO", /* Umbundu Angola */ + "ur_PK", /* Urdu Pakistan */ + "uz_UZ", /* Uzbek Uzbekistan */ + "ve_ZA", /* Venda South Africa */ + "vi_VN", /* Vietnamese Vietnam */ + "wa_BE", /* Walloon Belgium */ + "wal_ET", /* Walamo Ethiopia */ + "war_PH", /* Waray Philippines */ + "wen_DE", /* Sorbian Germany */ + "yao_MW", /* Yao Malawi */ + "zap_MX" /* Zapotec Mexico */ + }; + int c; + int cc_len; + int ll_len = strlen (ll_code); + char *cc_code = xmalloc (ll_len + 1 + 1); + int principal_len = SIZEOF (locales_with_principal_territory); + + strcpy (cc_code, ll_code); + strcat (cc_code, "_"); + cc_len = ll_len + 1; + + for (c = 0; c < principal_len; c++) + { + const char *principal_locale = locales_with_principal_territory[c]; + if (strncmp (principal_locale, cc_code, cc_len) == 0) + { + const char *underscore = strchr (principal_locale, '_'); + /* should always be there, but in case ... */ + free (cc_code); + cc_code = xstrdup (underscore ? underscore + 1 : principal_locale); + break; + } + } + + /* If we didn't find one to copy, warn and duplicate. */ + if (c == principal_len) + { + if (mbscasecmp (ll_code, "en") == 0) + cc_code = xstrdup ("en_US"); + else + { + warning (_("no default territory known for language `%s'"), ll_code); + for (c = 0; c < strlen (ll_code); c++) + cc_code[c] = toupper (ll_code[c]); + cc_code[c] = 0; + /* We're probably wasting a byte, oops. */ + } + } + + return cc_code; +} + + + +/* @documentlanguage ARG. We set the global `document_language' (which + `getdocumenttext' uses) to the gettextish string, and + `language_code' to the corresponding enum value. */ + +void +cm_documentlanguage (void) +{ + language_code_type c; + char *lang_arg, *ll_part, *cc_part, *locale_string; + char *underscore; + + /* Read the line with the language code on it. */ + get_rest_of_line (0, &lang_arg); + + /* What we're passed might be either just a language code LL (we'll + also need it with the usual _CC appended, if there is one), or a + locale name as used by gettext, LL_CC (we'll also need its + constituents separately). */ + underscore = strchr (lang_arg, '_'); + if (underscore) + { + ll_part = substring (lang_arg, underscore); + cc_part = xstrdup (underscore + 1); + locale_string = xstrdup (lang_arg); + } + else + { + ll_part = xstrdup (lang_arg); + cc_part = default_country_for_lang (ll_part); + locale_string = xmalloc (strlen (ll_part) + 1 + strlen (cc_part) + 1); + strcpy (locale_string, ll_part); + strcat (locale_string, "_"); + strcat (locale_string, cc_part); + } + + /* Done with analysis of user-supplied string. */ + free (lang_arg); + + /* Linear search is fine these days. */ + for (c = aa; c != last_language_code; c++) + { + if (strcmp (ll_part, 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"), ll_part); + + /* Set the language our `getdocumenttext' function uses for + translating document strings. */ + document_language = xstrdup (locale_string); + free (locale_string); + + if (xml && !docbook) + { /* According to http://www.opentag.com/xfaq_lang.htm, xml:lang + takes an ISO 639 language code, optionally followed by a dash + (not underscore) and an ISO 3166 country code. So we have + to make another version with - instead of _. */ + char *xml_locale = xmalloc (strlen (ll_part) + 1 + strlen (cc_part) + 1); + strcpy (xml_locale, ll_part); + strcat (xml_locale, "-"); + strcat (xml_locale, cc_part); + xml_insert_element_with_attribute (DOCUMENTLANGUAGE, START, + "xml:lang=\"%s\"", xml_locale); + xml_insert_element (DOCUMENTLANGUAGE, END); + free (xml_locale); + } + + free (ll_part); + free (cc_part); +} + + + +/* Search through the encoding table for the given character, returning + its equivalent. */ + +static int +cm_search_iso_map (char *html) +{ + if (document_encoding_code == UTF_8) + { + /* Binary search in unicode_map. */ + size_t low = 0; + size_t high = sizeof (unicode_map) / sizeof (unicode_map[0]); + + /* At each loop iteration, low < high; for indices < low the values are + smaller than HTML; for indices >= high the values are greater than HTML. + So, if HTML occurs in the list, it is at low <= position < high. */ + do + { + size_t mid = low + (high - low) / 2; /* low <= mid < high */ + int cmp = strcmp (unicode_map[mid].html, html); + + if (cmp < 0) + low = mid + 1; + else if (cmp > 0) + high = mid; + else /* cmp == 0 */ + return unicode_map[mid].unicode; + } + while (low < high); + + return -1; + } + else + { + int i; + iso_map_type *iso = encoding_table[document_encoding_code].isotab; + + /* If no conversion table for this encoding, quit. */ + if (!iso) + return -1; + + for (i = 0; iso[i].html; i++) + { + if (strcmp (html, iso[i].html) == 0) + return i; + } + + return -1; + } +} + + +/* @documentencoding. Set the translation table. */ + +void +cm_documentencoding (void) +{ + if (!handling_delayed_writes) + { + encoding_code_type enc; + char *enc_arg; + + /* This is ugly and probably needs to apply to other commands' + argument parsing as well. When we're doing @documentencoding, + we're generally in the frontmatter of the document, and so the. + expansion in html/xml/docbook would generally be the empty string. + (Because those modes wait until the first normal text of the + document to start outputting.) The result would thus be a warning + "unrecognized encoding name `'". Sigh. */ + int save_html = html; + int save_xml = xml; + + html = 0; + xml = 0; + get_rest_of_line (1, &enc_arg); + html = save_html; + xml = save_xml; + + /* See if we have this encoding. */ + for (enc = no_encoding+1; enc != last_encoding_code; enc++) + { + if (mbscasecmp (enc_arg, encoding_table[enc].encname) == 0) + { + document_encoding_code = enc; + break; + } + } + + /* If we didn't find this code, complain. */ + if (enc == last_encoding_code) + { + warning (_("unrecognized encoding name `%s'"), enc_arg); + /* Let the previous one go. */ + if (unknown_encoding && *unknown_encoding) + free (unknown_encoding); + unknown_encoding = xstrdup (enc_arg); + } + + else if (encoding_table[document_encoding_code].isotab == NULL) + warning (_("sorry, encoding `%s' not supported"), enc_arg); + + free (enc_arg); + } + else if (xml) + { + char *encoding = current_document_encoding (); + + if (encoding && *encoding) + { + insert_string (" encoding=\""); + insert_string (encoding); + insert_string ("\""); + } + + free (encoding); + } +} + +char * +current_document_encoding (void) +{ + if (document_encoding_code != no_encoding) + return xstrdup (encoding_table[document_encoding_code].encname); + else if (unknown_encoding && *unknown_encoding) + return xstrdup (unknown_encoding); + else + return xstrdup (""); +} + + +/* Add RC per the current encoding. */ + +static void +add_encoded_char_from_code (int rc) +{ + if (document_encoding_code == UTF_8) + { + if (rc < 0x80) + add_char (rc); + else if (rc < 0x800) + { + add_char (0xc0 | (rc >> 6)); + add_char (0x80 | (rc & 0x3f)); + } + else if (rc < 0x10000) + { + add_char (0xe0 | (rc >> 12)); + add_char (0x80 | ((rc >> 6) & 0x3f)); + add_char (0x80 | (rc & 0x3f)); + } + else + { + add_char (0xf0 | (rc >> 18)); + add_char (0x80 | ((rc >> 12) & 0x3f)); + add_char (0x80 | ((rc >> 6) & 0x3f)); + add_char (0x80 | (rc & 0x3f)); + } + } + else + add_char (encoding_table[document_encoding_code].isotab[rc].bytecode); +} + + +/* If html or xml output, add &HTML_STR; to the output. If not html and + the user requested encoded output, add the real 8-bit character + corresponding to HTML_STR from the translation tables. Otherwise, + add INFO_STR. */ + +static void +add_encoded_char (char *html_str, char *info_str) +{ + if (html) + add_word_args ("&%s;", html_str); + else if (xml) + xml_insert_entity (html_str); + else if (enable_encoding && document_encoding_code != no_encoding) + { + /* Look for HTML_STR in the current translation table. */ + int rc = cm_search_iso_map (html_str); + if (rc >= 0) + /* We found it, add the real character. */ + add_encoded_char_from_code (rc); + else + { /* We didn't find it, that seems bad. */ + warning (_("invalid encoded character `%s'"), html_str); + add_word (info_str); + } + } + else + add_word (info_str); +} + + + +/* Output an accent for HTML or XML. */ + +static void +cm_accent_generic_html (int arg, int start, int end, char *html_supported, + int single, int html_solo_standalone, char *html_solo) +{ + static int valid_html_accent; /* yikes */ + + if (arg == START) + { /* If HTML has good support for this character, use it. */ + if (strchr (html_supported, curchar ())) + { /* Yes; start with an ampersand. The character itself + will be added later in read_command (makeinfo.c). */ + int saved_escape_html = escape_html; + escape_html = 0; + valid_html_accent = 1; + add_char ('&'); + escape_html = saved_escape_html; + } + else + { /* @dotless{i} is not listed in html_supported but HTML entities + starting with `i' can be used, such as î. */ + int save_input_text_offset = input_text_offset; + char *accent_contents; + + get_until_in_braces ("\n", &accent_contents); + canon_white (accent_contents); + + if (strstr (accent_contents, "@dotless{i")) + { + add_word_args ("&%c", accent_contents[9]); + valid_html_accent = 1; + } + else + { + /* Search for @dotless{} wasn't successful, so rewind. */ + input_text_offset = save_input_text_offset; + valid_html_accent = 0; + if (html_solo_standalone) + { /* No special HTML support, so produce standalone char. */ + if (xml) + xml_insert_entity (html_solo); + else + add_word_args ("&%s;", html_solo); + } + else + /* If the html_solo does not exist as standalone character + (namely ˆ ` ˜), then we use + the single character version instead. */ + add_char (single); + } + + free (accent_contents); + } + } + 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 (';'); + } + } +} + + +/* If END is zero, there is nothing in the paragraph to accent. This + can happen when we're in a menu with an accent command and + --no-headers is given, so the base character is not added. In this + case we're not producing any output anyway, so just forget it. + Otherwise, produce the ASCII version of the accented char. */ +static void +cm_accent_generic_no_headers (int arg, int start, int end, int single, + char *html_solo) +{ + if (arg == END && end > 0) + { + if (no_encoding) + add_char (single); + else + { + int rc; + char *buffer = xmalloc (1 + strlen (html_solo) + 1); + assert (end > 0); + buffer[0] = output_paragraph[end - 1]; + buffer[1] = 0; + strcat (buffer, html_solo); + + rc = cm_search_iso_map (buffer); + if (rc >= 0) + { + /* Here we replace the character which has + been inserted in read_command with + the value we have found in the conversion table. */ + output_paragraph_offset--; + add_encoded_char_from_code (rc); + } + else + { /* If we didn't find a translation for this character, + put the single instead. E.g., &Xuml; does not exist so X¨ + should be produced. */ + /* When the below warning is issued, an author has nothing + wrong in their document, let alone anything ``fixable'' + on their side. So it is commented out for now. */ + /* warning (_("%s is an invalid ISO code, using %c"), + buffer, single); */ + add_char (single); + } + + free (buffer); + } + } +} + + + +/* Accent commands that take explicit arguments and don't have any + special HTML support. */ + +void +cm_accent (int arg) +{ + int old_escape_html = escape_html; + escape_html = 0; + 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 || xml) ? "¯" : "="); + 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 || xml) ? "<" : "<"); + } + escape_html = old_escape_html; +} + +/* 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, Ä 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. 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 nonzero the given HTML_SOLO + exists as valid standalone character in HTML, e.g., ¨. */ + +static void +cm_accent_generic (int arg, int start, int end, char *html_supported, + int single, int html_solo_standalone, char *html_solo) +{ + /* Accentuating space characters makes no sense, so issue a warning. */ + if (arg == START && isspace (input_text[input_text_offset])) + warning ("Accent command `@%s' must not be followed by whitespace", + command); + + if (html || xml) + cm_accent_generic_html (arg, start, end, html_supported, + single, html_solo_standalone, html_solo); + else if (no_headers) + cm_accent_generic_no_headers (arg, start, end, single, html_solo); + else if (arg == END) + { + if (enable_encoding) + /* use 8-bit if available */ + cm_accent_generic_no_headers (arg, start, end, single, html_solo); + else + /* use regular character */ + add_char (single); + } +} + +void +cm_accent_umlaut (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "aouAOUEeIiy", '"', 1, "uml"); +} + +void +cm_accent_acute (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "AEIOUYaeiouy", '\'', 1, "acute"); +} + +void +cm_accent_cedilla (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "Cc", ',', 1, "cedil"); +} + +void +cm_accent_hat (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "AEIOUaeiou", '^', 0, "circ"); +} + +void +cm_accent_grave (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "AEIOUaeiou", '`', 0, "grave"); +} + +void +cm_accent_tilde (int arg, int start, int end) +{ + cm_accent_generic (arg, start, end, "ANOano", '~', 0, "tilde"); +} + + + +/* Non-English letters/characters that don't insert themselves. */ +void +cm_special_char (int arg) +{ + int old_escape_html = escape_html; + escape_html = 0; + + 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 (command[0] == 'O') + add_encoded_char ("Oslash", "/O"); + else if (command[0] == 'o') + add_encoded_char ("oslash", "/o"); + else + add_word_args ("/%c", command[0]); + } + else if (strcmp (command, "exclamdown") == 0) + add_encoded_char ("iexcl", "!"); + else if (strcmp (command, "questiondown") == 0) + add_encoded_char ("iquest", "?"); + else if (strcmp (command, "euro") == 0) + /* http://www.cs.tut.fi/~jkorpela/html/euro.html suggests that + € degrades best in old browsers. */ + add_encoded_char ("euro", "Euro "); + else if (strcmp (command, "pounds") == 0) + add_encoded_char ("pound" , "#"); + else if (strcmp (command, "ordf") == 0) + add_encoded_char ("ordf" , "a"); + else if (strcmp (command, "ordm") == 0) + add_encoded_char ("ordm" , "o"); + else if (strcmp (command, "textdegree") == 0) + add_encoded_char ("deg" , "o"); + else if (strcmp (command, "AE") == 0) + add_encoded_char ("AElig", command); + else if (strcmp (command, "ae") == 0) + add_encoded_char ("aelig", command); + else if (strcmp (command, "OE") == 0) + add_encoded_char ("OElig", command); + else if (strcmp (command, "oe") == 0) + add_encoded_char ("oelig", command); + else if (strcmp (command, "AA") == 0) + add_encoded_char ("Aring", command); + else if (strcmp (command, "aa") == 0) + add_encoded_char ("aring", command); + else if (strcmp (command, "ss") == 0) + add_encoded_char ("szlig", command); + else if (strcmp (command, "guillemetleft") == 0 + || strcmp (command, "guillemotleft") == 0) + add_encoded_char ("laquo", "<<"); + else if (strcmp (command, "guillemetright") == 0 + || strcmp (command, "guillemotright") == 0) + add_encoded_char ("raquo", ">>"); + else + line_error ("cm_special_char internal error: command=@%s", command); + } + escape_html = old_escape_html; +} + +/* Dotless i or j. */ +void +cm_dotless (int arg, int start, int end) +{ + if (arg == END) + { + xml_no_para --; + 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. */ + } + else + xml_no_para ++; +} diff --git a/makeinfo/lang.h b/makeinfo/lang.h new file mode 100644 index 0000000..b902f19 --- /dev/null +++ b/makeinfo/lang.h @@ -0,0 +1,141 @@ +/* lang.h -- declarations for language codes etc. + $Id: lang.h,v 1.14 2007/11/21 23:02:22 karl Exp $ + + Copyright (C) 1999, 2001, 2002, 2003, 2006, 2007 + 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 3 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, see . + + Originally written by Karl Heinz Marbaise . */ + +#ifndef LANG_H +#define LANG_H + +/* The language code which can be changed through @documentlanguage + These code are the ISO-639 two letter codes. */ + +#undef hz /* AIX 4.3.3 */ +typedef enum +{ + aa, ab, ae, af, ak, am, an, ar, as, av, ay, az, ba, be, bg, bh, bi, + bm, bn, bo, br, bs, ca, ce, ch, co, cr, cs, cu, cv, cy, da, de, dv, + dz, ee, el, en, eo, es, et, eu, fa, ff, fi, fj, fo, fr, fy, ga, gd, + gl, gn, gu, gv, ha, he, hi, ho, hr, ht, hu, hy, hz, ia, id, ie, ig, + ii, ik, io, is, it, iu, ja, jv, ka, kg, ki, kj, kk, kl, km, kn, ko, + kr, ks, ku, kv, kw, ky, la, lb, lg, li, ln, lo, lt, lu, lv, mg, mh, + mi, mk, ml, mn, mo, mr, ms, mt, my, na, nb, nd, ne, ng, nl, nn, no, + nr, nv, ny, oc, oj, om, or, os, pa, pi, pl, ps, pt, qu, rm, rn, ro, + ru, rw, sa, sc, sd, se, sg, 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, ty, + ug, uk, ur, uz, ve, vi, vo, wa, wo, xh, yi, yo, za, zh, zu, + last_language_code +} language_code_type; + +/* The current language code. */ +extern language_code_type language_code; + + +/* Information for each language. */ +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_type; + +extern language_type language_table[]; + + + +/* The document encoding. This is useful to produce true 8-bit + characters according to the @documentencoding. */ + +typedef enum { + no_encoding, + US_ASCII, + ISO_8859_1, + ISO_8859_2, + ISO_8859_3, /* this and none of the rest are supported. */ + ISO_8859_4, + ISO_8859_5, + ISO_8859_6, + ISO_8859_7, + ISO_8859_8, + ISO_8859_9, + ISO_8859_10, + ISO_8859_11, + ISO_8859_12, + ISO_8859_13, + ISO_8859_14, + ISO_8859_15, + KOI8_R, + KOI8_U, + UTF_8, + last_encoding_code +} encoding_code_type; + +/* The current document encoding, or null if not set. */ +extern encoding_code_type document_encoding_code; + +/* If an encoding is not supported, just keep it as a string. */ +extern char *unknown_encoding; + +/* Maps an HTML abbreviation to ISO and Unicode codes for a given code. */ + +typedef unsigned short int unicode_t; /* should be 16 bits */ +typedef unsigned char byte_t; + +typedef struct +{ + char *html; /* HTML equivalent like umlaut auml => ä */ + byte_t bytecode; /* 8-Bit Code (ISO 8859-1,...) */ + unicode_t unicode; /* Unicode in U+ convention */ + char *translit; /* 7-bit transliteration */ +} iso_map_type; + +/* Information about the document encoding. */ +typedef struct +{ + encoding_code_type ec; /* document encoding type (see above enum) */ + char *encname; /* encoding name like "iso-8859-1", valid in + HTML and Emacs */ + iso_map_type *isotab; /* address of ISO translation table */ +} encoding_type; + +/* Table with all the encoding codes that we recognize. */ +extern encoding_type encoding_table[]; + + +/* The commands. */ +extern void cm_documentlanguage (void), + cm_documentencoding (void); + +/* Accents, other non-English characters. */ +void cm_accent (int arg), cm_special_char (int arg), + cm_dotless (int arg, int start, int end); + +extern void cm_accent_umlaut (int arg, int start, int end), + cm_accent_acute (int arg, int start, int end), + cm_accent_cedilla (int arg, int start, int end), + cm_accent_hat (int arg, int start, int end), + cm_accent_grave (int arg, int start, int end), + cm_accent_tilde (int arg, int start, int end); + +extern char *current_document_encoding (void); + +extern const char *lang_transliterate_char (byte_t ch); + +extern char *document_language; + +#endif /* not LANG_H */ diff --git a/makeinfo/macro.c b/makeinfo/macro.c new file mode 100644 index 0000000..10dabb2 --- /dev/null +++ b/makeinfo/macro.c @@ -0,0 +1,1095 @@ +/* macro.c -- user-defined macros for Texinfo. + $Id: macro.c,v 1.12 2007/07/01 21:20:32 karl Exp $ + + Copyright (C) 1998, 1999, 2002, 2003, 2005, 2007 + 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 3 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, see . */ + +#include "system.h" +#include "cmds.h" +#include "files.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 (char **array) +{ + int i = 0; + + if (array) + for (i = 0; array[i]; i++); + + return i; +} + +void +free_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 (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. */ +static void +add_macro (char *name, char **arglist, char *body, char *source_file, + int source_lineno, int 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->argcount = array_len (arglist); + def->inhibited = 0; + def->flags = flags; +} + + +char ** +get_brace_args (enum quote_type quote) +{ + 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 == quote_single + || (quote == quote_many && depth > 1))) + || ((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; +} + +static char ** +get_macro_args (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_offset > 0 + && 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->argcount == 1 ? quote_single : quote_many); +} + +/* Substitute actual parameters for named parameters in body. + The named parameters which appear in BODY must by surrounded + reverse slashes, as in \foo\. */ +static char * +apply (char **named, char **actuals, char *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, 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++; + + if (len == 0) + { /* \\ always means \, even if macro has no args. */ + len++; + text = xmalloc (1 + len); + sprintf (text, "\\%s", param); + } + else + { + int which; + + /* Check against named parameters. */ + for (which = 0; named && named[which]; which++) + if (STREQ (named[which], param)) + break; + + if (named && named[which]) + { + text = which < length_of_actuals ? actuals[which] : NULL; + if (!text) + text = ""; + len = strlen (text); + text = xstrdup (text); /* so we can free it */ + } + else + { /* not a parameter, so it's an error. */ + warning (_("\\ in macro expansion followed by `%s' instead of parameter name"), + param); + len++; + text = xmalloc (1 + len); + sprintf (text, "\\%s", param); + } + } + + if (strlen (param) + 2 < len) + { + 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; + + 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 (MACRO_DEF *def) +{ + char **arglist; + char *execution_string = NULL; + int start_line = line_number; + + /* Gather the arguments present on the line if there are any. */ + arglist = get_macro_args (def); + + if (def->argcount < 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 (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 (char *mactype, int recursive) +{ + int i, start; + char *name, *line; + char *last_end = NULL; + char *body = NULL; + char **arglist = NULL; + int body_size = 0, body_index = 0; + int depth = 1; + int flags = 0; + int defining_line = line_number; + + 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. */ + 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; + } + } + } + } + + /* 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) + { + file_line_error (input_filename, defining_line, + _("%cend macro not found"), COMMAND_PREFIX); + 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]))) + { + warning (_("@allow-recursion is deprecated; please use @rmacro instead")); + 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]))) + { + warning (_("@quote-arg is deprecated; arguments are quoted by default")); + for (i = 10; whitespace (line[i]); i++); + strcpy (line, line + i); + if (!*line) + { + free (line); + continue; + } + } + + 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", 10) == 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 text for future expansions. */ + remember_itext (input_text, input_text_offset); + + /* Bizarrely, output the @macro itself. This is so texinfo.tex + will have a chance to read it when texi2dvi calls makeinfo -E. + The problem is that we don't really expand macros in all + contexts; a @table's @item is one. And a fix is not obvious to + me, since it appears virtually identical to any other internal + expansion. Just setting a variable in cm_item caused other + strange expansion problems. */ + write_region_to_macro_output ("@", 0, 1); + write_region_to_macro_output (mactype, 0, strlen (mactype)); + write_region_to_macro_output (" ", 0, 1); + write_region_to_macro_output (input_text, start, input_text_offset); + } +} + +void +cm_macro (void) +{ + define_macro ("macro", 0); +} + +void +cm_rmacro (void) +{ + 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 (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 (void) +{ + 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 (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 (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 (void) +{ + 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 (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 (char *execution_string, char *append_string) +{ + int op_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; + 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; + 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 (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 (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 (char *string, int start, int 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 aname = cmdname */ + +void +cm_alias (void) +{ + alias_type *a = xmalloc (sizeof (alias_type)); + + skip_whitespace (); + get_until_in_line (0, "=", &(a->alias)); + canon_white (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 (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 (void) +{ + 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 (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 (int arg, int start, int 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/makeinfo/macro.h b/makeinfo/macro.h new file mode 100644 index 0000000..de9c65a --- /dev/null +++ b/makeinfo/macro.h @@ -0,0 +1,77 @@ +/* macro.h -- declarations for macro.c. + $Id: macro.h,v 1.6 2007/07/01 21:20:32 karl Exp $ + + Copyright (C) 1998, 1999, 2007 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 3 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, see . */ + +#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. */ + int argcount; /* Number of args in arglist */ + 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, etc. */ +} MACRO_DEF; + +/* flags for MACRO_DEF */ +#define ME_RECURSE 0x01 + +extern void execute_macro (MACRO_DEF *def); +extern MACRO_DEF *find_macro (char *name); +extern char *expand_macro (MACRO_DEF *def); + +extern ITEXT *remember_itext (char *pointer, int offset); +extern void forget_itext (char *pointer); +extern void maybe_write_itext (char *pointer, int offset); +extern void write_region_to_macro_output (char *string, int start, int end); +extern void append_to_expansion_output (int offset); +extern void me_append_before_this_command (void); +extern void me_execute_string (char *execution_string); +extern void me_execute_string_keep_state (char *execution_string, + char *append_string); + +extern char *alias_expand (char *tok); +extern int enclosure_command (char *tok); +extern void enclosure_expand (int arg, int start, int end); + +/* The @commands. */ +extern void cm_macro (void), cm_rmacro (void), cm_unmacro (void); +extern void cm_alias (void), cm_definfoenclose (void); + +extern int array_len (char **array); +extern void free_array (char **array); + +enum quote_type { quote_none, quote_single, quote_many }; +extern char **get_brace_args (enum quote_type type); + +#endif /* not MACRO_H */ diff --git a/makeinfo/makeinfo.c b/makeinfo/makeinfo.c new file mode 100644 index 0000000..362687b --- /dev/null +++ b/makeinfo/makeinfo.c @@ -0,0 +1,4397 @@ +/* makeinfo -- convert Texinfo source into other formats. + $Id: makeinfo.c,v 1.123 2008/08/28 22:53:30 karl Exp $ + + Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + 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 3 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, see . + + Original author of makeinfo: Brian Fox (bfox@ai.mit.edu). */ + +#include "system.h" +#include "getopt.h" +#include "mbswidth.h" + +#define COMPILING_MAKEINFO +#include "makeinfo.h" +#include "cmds.h" +#include "files.h" +#include "float.h" +#include "footnote.h" +#include "html.h" +#include "index.h" +#include "insertion.h" +#include "lang.h" +#include "macro.h" +#include "node.h" +#include "sectioning.h" +#include "toc.h" +#include "xml.h" + +/* You can change some of the behavior of Makeinfo by changing the + following defines: */ + +/* Define INDENT_PARAGRAPHS_IN_TABLE if you want the paragraphs which + appear within an @table, @ftable, or @itemize environment to have + standard paragraph indentation. Without this, such paragraphs have + no starting indentation. */ +/* #define INDENT_PARAGRAPHS_IN_TABLE */ + +/* Define PARAGRAPH_START_INDENT to be the amount of indentation that + the first lines of paragraphs receive by default, where no other + value has been specified. Users can change this value on the command + line, with the --paragraph-indent option, or within the texinfo file, + with the @paragraphindent command. */ +#define PARAGRAPH_START_INDENT 3 + +/* Define DEFAULT_PARAGRAPH_SPACING as the number of blank lines that you + wish to appear between paragraphs. A value of 1 creates a single blank + line between paragraphs. Paragraphs are defined by 2 or more consecutive + newlines in the input file (i.e., one or more blank lines). */ +#define DEFAULT_PARAGRAPH_SPACING 1 + +/* Global variables. */ + +/* The output file name. */ +char *output_filename = NULL; + +/* Name of the output file that the user elected to pass on the command line. + Such a name overrides any name found with the @setfilename command. */ +char *command_output_filename = NULL; +static char *save_command_output_filename = NULL; + +/* The amount of indentation to add at the starts of paragraphs. + 0 means don't change existing indentation at paragraph starts. + > 0 is amount to indent new paragraphs by. + < 0 means indent to column zero by removing indentation if necessary. + + This is normally zero, but some people prefer paragraph starts to be + somewhat more indented than paragraph bodies. A pretty value for + this is 3. */ +int paragraph_start_indent = PARAGRAPH_START_INDENT; + +/* Indentation that is pending insertion. We have this for hacking lines + which look blank, but contain whitespace. We want to treat those as + blank lines. */ +int pending_indent = 0; + +/* The index in our internal command table of the currently + executing command. */ +int command_index; + +/* A search string which is used to find the first @setfilename. */ +char setfilename_search[] = + { COMMAND_PREFIX, + 's', 'e', 't', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', 0 }; + +/* Values for calling handle_variable_internal (). */ +#define SET 1 +#define CLEAR 2 +#define IFSET 3 +#define IFCLEAR 4 + +/* Flags controlling the operation of the program. */ + +/* Default is to remove output if there were errors. */ +int force = 0; + +/* Default is to notify users of bad choices. */ +int print_warnings = 1; + +/* Number of errors that we tolerate on a given fileset. */ +int max_error_level = 100; + +/* The actual last inserted character. Note that this may be something + other than NEWLINE even if last_char_was_newline is 1. */ +int last_inserted_character = 0; + +/* Nonzero means that a newline character has already been + inserted, so close_paragraph () should insert one less. */ +int line_already_broken = 0; + +/* When nonzero we have finished an insertion (see end_insertion ()) and we + want to ignore false continued paragraph closings. */ +int insertion_paragraph_closed = 0; + +/* Nonzero means attempt to make all of the lines have fill_column width. */ +int do_justification = 0; + +/* Nonzero means don't replace whitespace with   in HTML mode. */ +int in_html_elt = 0; + +/* Nonzero means we are inserting a block level HTML element that must not be + enclosed in a

    , such as

      ,
        and . */ +int in_html_block_level_elt = 0; + +/* True when expanding a macro definition. */ +static int executing_macro = 0; + +/* True when we are inside a
      1. block of a menu. */ +static int in_menu_item = 0; + +/* The column position of output_paragraph[0]. This is not saved and restored + in the multitable code because flush_output () is only called in environment + 0. */ +static int output_paragraph_start_column = 0; + +typedef struct brace_element +{ + struct brace_element *next; + COMMAND_FUNCTION *proc; + char *command; + int pos, line; + int in_fixed_width_font; +} BRACE_ELEMENT; + +BRACE_ELEMENT *brace_stack = NULL; + +static void convert_from_file (char *name); +static void convert_from_loaded_file (char *name); +static void convert_from_stream (FILE *stream, char *name); +static void do_flush_right_indentation (void); +static void handle_variable (int action); +static void handle_variable_internal (int action, char *name); +static void init_brace_stack (void); +static void init_internals (void); +static void pop_and_call_brace (void); +static void remember_brace (COMMAND_FUNCTION (*proc)); +static void write_trailer (char *filename, char *trailer); +static int end_of_sentence_p (void); + +void maybe_update_execution_strings (char **text, unsigned int new_len); + +/* Error handling. */ + +/* Number of errors encountered. */ +int errors_printed = 0; + +/* Remember that an error has been printed. If more than + max_error_level have been printed, then exit the program. */ +static void +remember_error (void) +{ + errors_printed++; + if (max_error_level && (errors_printed > max_error_level)) + { + fprintf (stderr, _("Too many errors! Gave up.\n")); + flush_file_stack (); + if (errors_printed - max_error_level < 2) + cm_bye (); + xexit (1); + } +} + +/* Print the last error gotten from the file system. */ +int +fs_error (char *filename) +{ + remember_error (); + perror (filename); + return 0; +} + +/* Print an error message, and return false. */ +void +#if defined (VA_FPRINTF) && __STDC__ +error (const char *format, ...) +#else +error (format, va_alist) + const char *format; + va_dcl +#endif +{ +#ifdef VA_FPRINTF + va_list ap; +#endif + + remember_error (); + + VA_START (ap, format); +#ifdef VA_FPRINTF + VA_FPRINTF (stderr, format, ap); +#else + fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); +#endif /* not VA_FPRINTF */ + va_end (ap); + + putc ('\n', stderr); +} + +/* Just like error (), but print the input file and line number as well. */ +void +#if defined (VA_FPRINTF) && __STDC__ +file_line_error (char *infile, int lno, const char *format, ...) +#else +file_line_error (infile, lno, format, va_alist) + char *infile; + int lno; + const char *format; + va_dcl +#endif +{ +#ifdef VA_FPRINTF + va_list ap; +#endif + + remember_error (); + fprintf (stderr, "%s:%d: ", infile, lno); + + VA_START (ap, format); +#ifdef VA_FPRINTF + VA_FPRINTF (stderr, format, ap); +#else + fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); +#endif /* not VA_FPRINTF */ + va_end (ap); + + fprintf (stderr, ".\n"); +} + +/* Just like file_line_error (), but take the input file and the line + number from global variables. */ +void +#if defined (VA_FPRINTF) && __STDC__ +line_error (const char *format, ...) +#else +line_error (format, va_alist) + const char *format; + va_dcl +#endif +{ +#ifdef VA_FPRINTF + va_list ap; +#endif + + remember_error (); + fprintf (stderr, "%s:%d: ", input_filename, line_number); + + VA_START (ap, format); +#ifdef VA_FPRINTF + VA_FPRINTF (stderr, format, ap); +#else + fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); +#endif /* not VA_FPRINTF */ + va_end (ap); + + fprintf (stderr, ".\n"); +} + +void +#if defined (VA_FPRINTF) && __STDC__ +warning (const char *format, ...) +#else +warning (format, va_alist) + const char *format; + va_dcl +#endif +{ +#ifdef VA_FPRINTF + va_list ap; +#endif + + if (print_warnings) + { + fprintf (stderr, _("%s:%d: warning: "), input_filename, line_number); + + VA_START (ap, format); +#ifdef VA_FPRINTF + VA_FPRINTF (stderr, format, ap); +#else + fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); +#endif /* not VA_FPRINTF */ + va_end (ap); + + fprintf (stderr, ".\n"); + } +} + + +/* The other side of a malformed expression. */ +static void +misplaced_brace (void) +{ + line_error (_("Misplaced %c"), '}'); +} + +/* Main. */ + +/* Display the version info of this invocation of Makeinfo. */ +static void +print_version_info (void) +{ + printf ("makeinfo (GNU %s) %s\n", PACKAGE, VERSION); +} + +/* If EXIT_VALUE is zero, print the full usage message to stdout. + Otherwise, just say to use --help for more info. + Then exit with EXIT_VALUE. */ +static void +usage (int exit_value) +{ + if (exit_value != 0) + fprintf (stderr, _("Try `%s --help' for more information.\n"), progname); + else + { + printf (_("Usage: %s [OPTION]... TEXINFO-FILE...\n"), progname); + puts (""); + + puts (_("\ +Translate Texinfo source documentation to various other formats, by default\n\ +Info files suitable for reading online with Emacs or standalone GNU Info.\n")); + + printf (_("\ +General options:\n\ + --error-limit=NUM quit after NUM errors (default %d).\n\ + --document-language=STR locale to use in translating Texinfo keywords\n\ + for the output document (default C).\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\ + -v, --verbose explain what is being done.\n\ + --version display version information and exit.\n"), + max_error_level); + puts (""); + + /* xgettext: no-wrap */ + puts (_("\ +Output format selection (default is to produce Info):\n\ + --docbook output Docbook XML rather than Info.\n\ + --html output HTML rather than Info.\n\ + --xml output Texinfo XML rather than Info.\n\ + --plaintext output plain text rather than Info.\n\ +")); + + puts (_("\ +General output options:\n\ + -E, --macro-expand=FILE output macro-expanded source to FILE,\n\ + ignoring any @setfilename.\n\ + --no-headers suppress node separators, Node: lines, and menus\n\ + from Info output (thus producing plain text)\n\ + or from HTML (thus producing shorter output);\n\ + also, write to standard output by default.\n\ + --no-split suppress the splitting of Info or HTML output,\n\ + generate only one output file.\n\ + --number-sections output chapter and sectioning numbers.\n\ + -o, --output=FILE output to FILE (or directory if split HTML).\n\ +")); + + printf (_("\ +Options for Info and plain text:\n\ + --disable-encoding do not output accented and special characters\n\ + in Info output based on @documentencoding.\n\ + --enable-encoding override --disable-encoding (default).\n\ + --fill-column=NUM break Info lines at NUM characters (default %d).\n\ + --footnote-style=STYLE output footnotes in Info according to STYLE:\n\ + `separate' to put them in their own node;\n\ + `end' to put them at the end of the node, in\n\ + which they are defined (this is the default).\n\ + --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default %d).\n\ + If VAL is `none', do not indent; if VAL is\n\ + `asis', preserve existing indentation.\n\ + --split-size=NUM split Info files at size NUM (default %d).\n"), + fill_column, paragraph_start_indent, + DEFAULT_SPLIT_SIZE); + puts (""); + + puts (_("\ +Options for HTML:\n\ + --css-include=FILE include FILE in HTML